PDA

Prikaži potpunu verziju : Visual Basic 6: Online Serveri


Bojan
30.10.2007, 22:27
Potrebna mi je pomoć oko pravljenja igre koju sam vam predstavio ovde (http://www.sk.co.yu/forum/showthread.php?t=18376).

Naime, želeo bih da ubacim mogućnost kreiranja servera koji će non stop biti online, odnosno sve ono što imaju poznate online multiplejer igre. Jedan napravi server, a svi ostali ga vide i mogu da mu se priključe.

Može li mi neko dati konkretne primere za ovo, ili mi na neki drugi način pomoći?
U pitanju je Visual Basic 6.

Marko_L
4.11.2007, 21:59
Uh, ovo je jako opširna tema. Prvo trebaš da se odlučiš za arhitekturu, hoćeš li klijent-server ili p2p. I jedno i drugo ima svoje prednosti i mane. p2p recimo rasterećuje server, ali povećava saobraćaj među peerovima što može dovesti do asinhronizacije između klijenata pogotovo ako se radi o lošijoj vezi. Sa druge strane, za klijent-server moraš da imaš dobar bandwith na serveru, jer on mora da prima i šalje veliku količinu podataka (mada je ovo relativno i zavisi od igre i podataka koji treba da se šalju... manja igra logično treba da pošalje i primi manje podataka). Zatim trebaš da odabereš šta ćeš da koristiš za programiranje, hoćeš li preko Winsocka, DirectPlaya ili nečeg desetog. Winsock ti pruža više fleksibilnosti, jer radi na nižem nivou, pa možeš bolje da iskontrolišeš pakete, mada to neminovno znači i dosta više programiranja i testiranja, jer mora da se pazi na svaku sitnicu. DirectPlay sa druge strane sam vodi računa o mnogim stvarima, ali to ne znači da je jednostavno napraviti mrežnu arhitekturu sa njim. O bitnim stvarima i dalje ti moraš da vodiš računa kad pišeš kod... Recimo, pošto je tvoja igra potezna, i ti sad pošalješ podatke preko TCP/IP-a, on će kao safe-protocol da čeka da svi paketi stignu na odredište pre nego što prepusti potez sledećem igraču, pa ako se desi da neki igrač napusti igru ili ima slabiju vezu, eto problema... Znači u tom slučaju je možda bolje preko UDP-a šibati pakete jedan određeni period od recimo 5-10 sekundi i ako ne dobije povratnu informaciju za to vreme, izbaciti igrača iz igre i prepustiti kontrolu igraču koji je sledeći na redu. Naravno, server mora da ima fiksnu IP adresu ili domen kako bi peerovi mogli da se konektuju na njega i pošalju mu svoje IP adrese kako bi mogli da razmenjuju pakete. Takođe, moraš da obezbediš i redovan update IP adresa zbog onih koji imaju dinamičke IP adrese. Naravno, sve ovo važi za internet, ako praviš igru za LAN, onda je mnogo lakše, jer je protok obično stabilan i svi imaju fiksne IP adrese. U svakom slučaju, ne gine ti čitanje tutorijala i dosta učenja. Predlažem da obiđeš poznate sajtove koji se bave programiranjem igara kao što su www.gamedev.org i www.gamasutra.com gde ćeš naći dosta diskusija, tutorijala, primera za gamedev, pa i programiranje multiplayer igara.

Bojan
8.11.2007, 11:30
Mare, hvala ti na detaljnom odgovoru.

Što se tiče igre, do sada mi je sve normalno radilo u uslovima koji su podrazumevali relativno dobar protok. Međutim, kada je lošiji protok u pitanju, događao se gubitak podataka, i samim tim drugi igrač nije mogao da odigra potez (baš ono što si ti pomenuo).

To je bila jedna mana, druga mana je to što je konekcija bila moguća samo preko IP-a. Ono što je moja želja je da ja napravim server kući i onda drugi igrač, samo klikne na pretragu, vidi sve online severe, i poveže se normalno. Dakle, po nazivu servera, a ne preko IP adresa, porta i ostalog.

Programiranje sam radio preko Winshock OCX kontrole, ali ozbiljno planiram da se bacim na DirectPlay, samo mi trebaju primeri...

Marko_L
8.11.2007, 21:15
Imaš dva odlična tutorijala za VB i DirectPlay ovde
http://directx4vb.vbgamer.com/DirectX4VB/TUT_DX8_DP.asp
Meni su dosta pomogli.