.[ ČeskéHry.cz ].
Oneskorenie pri pohybe
Jdi na stránku 1, 2, 3  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Sítě
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
andy



Založen: 20. 09. 2007
Příspěvky: 54

PříspěvekZaslal: 26. květen 2008, 21:52:24    Předmět: Oneskorenie pri pohybe Odpovědět s citátem

Mam takyto problem, robim na jednej 3D hre, ktora by mala byt multiplayerovka. Mam vytvorenu aplikaciu (hru), ktora sa moze spravat ako server, alebo ako klient, podla toho co zvolim.
Takze ked si vytvorim server, spustim aplikaciu druhy krat a spusitm ju ako klienta. Po pripojeni klienta na server sa na servery vytvori objekt (gula-hrac-klient). Pri pohybe hraca klienskej app sa hned odosielaju serveru aj udaje o pozicii. Po prijati udajov severom, by sa hned mal nastavit aj objekt na tuto poziciu, lenze nastava tam dost znacne oneskorenie 2-5 s.
Udaj o pozicii odosielam ako retazec napr. "Pozicia/12.5/25.4"
prve cislo je x a druhe z osa. Na serv. sa retazec podeli (strtok) na x a z -ovy udaj a ulozi do glob. premennej. Potom sa nastavuje pozicia vytvoreneho objektu na prijate hodnoty.

Tak neviem preco je tam take velke oneskorenie. Nevie mi niekto poradit? Moze to byt tym ze to posielam ako retazec, ktory treba este podelit? dik
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 26. květen 2008, 21:57:44    Předmět: Odpovědět s citátem

na toto tema se tu uz diskutovalo sahodlouhe - problem synchronizace klient<->server je rozsahly

pohledej prvne co jsme tu uz psali
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 26. květen 2008, 22:13:18    Předmět: Odpovědět s citátem

Pokud to máš na stejném počítači, tak by to mělo přijít hned. Pokud ti ta hra vytěžuje procesor na 100 %, tak to třeba nestíhá. Zkusil bych tedy fixně snížit framerate. A taky vypnout firewall, antivir a další srandy.
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
andy



Založen: 20. 09. 2007
Příspěvky: 54

PříspěvekZaslal: 26. květen 2008, 22:34:23    Předmět: Odpovědět s citátem

Nie procesor nieje na 100% a testujem to na jednom pocitaci, testoval som to aj na sieti.

Predtym som mal aplikacie 800x600. Zmenil som rozlisenie na 640x480 a odozva bola okamzita. len sa mi zada ze postupom casu sa ta odozva zvacsuje... nechapem Sad

Kolko je asi normalne oneskorenie?


Naposledy upravil andy dne 26. květen 2008, 23:44:16, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 26. květen 2008, 23:01:57    Předmět: Odpovědět s citátem

A mas ty casti zajistujici sitovou komunikaci ve vlastnich threadech a jeste nejlepe s neblokovanym ctenim ze socketu?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
andy



Založen: 20. 09. 2007
Příspěvky: 54

PříspěvekZaslal: 26. květen 2008, 23:45:40    Předmět: Odpovědět s citátem

Confused fuch, no velmi som tomu nepochopil, nerozumiem sa az tak do sietovych zalezitosti.

Ako to myslis, alebo co by trebalo urobit..
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 27. květen 2008, 08:38:39    Předmět: Odpovědět s citátem

Normální odezva je pár milisekund na lokální síti. Jaký používáš protokol?

ještě mě napadá, jestli tam nemáš nějaký buffer, který se nejprve naplní přijatýma zprávama (což trvá) a pak ho teprve vybereš
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



Založen: 28. 07. 2007
Příspěvky: 1047

PříspěvekZaslal: 27. květen 2008, 08:51:48    Předmět: Odpovědět s citátem

sietovu cast sprav tak aby vzdy vybrala vsetky pakety az kym nie je prazdny buffer a zobrat do uvahy len poslednu prichodziu polohu. ak to robis cez UDP ktore nezarucuje dorucenie spravy a aj poradie mal by si tam mat aj nejake cislovanie ze ked pride nejaka sprava oneskorene aby to neskocilo dozadu.

ja teraz s kamosom robime taky VoIP program a tam som musel obmedzit vstupny buffer a zaviest cislovanie paketov a aj obmedzit buffer na 15 paketov po 20ms zvuku aby neboly velke odozvy.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.


Naposledy upravil nou dne 27. květen 2008, 08:56:59, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 27. květen 2008, 08:54:25    Předmět: Odpovědět s citátem

na lokální síti běží i UDP prakticky bezchybně
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 27. květen 2008, 09:46:24    Předmět: Odpovědět s citátem

andy napsal:
Ako to myslis, alebo co by trebalo urobit..
No predpokladam, ze co je thread vis.

Takze u takove jednoduche hry bych to videl takto :
Budes mit dva sve buffery(nejlepe fronty). Jeden vystupni a druhy vstupni. Nad temito buffery budes mit napsane funkce get a insert, ktere budou slouzit k vybirani/vkladani dat do techto bufferu a budou mezi thready synchronizovane.
Pak sitovy thread bude cist data ze socketu, zpracovavat do podoby, jakou potrebujes a vlozi je do vystupniho bufferu ze ktereho si bude moct uz data precist thread samotne hry.
Pri odesilani dat to zase bude tak, ze thread hry vlozi do tohoto bufferu urcita data, a sitovy thread si je z nej nacte a posle po siti.

Kazdopadne toto je ciste prace se sockety. Jestli pouzivas nejakou 3rd knihovnu, tak tam uz takove detaily byvaji casto uz vytvorene.

Jinak zkus si vytvorit nejaky textovy protokol, spustit si vlastni server a pripojit se na nej nejakym klientem, ktery zvlada plain text komunikaci a uvidis, jak ti to pracuje.

PS: a u UDP se muzou pomichat packety jen na siti, kde je vice nez jeden smerovac.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1526
Bydliště: Telč

PříspěvekZaslal: 27. květen 2008, 12:04:39    Předmět: Odpovědět s citátem

Ty vlákna nejsou nutný, může to bejt klidně v hlavní smyčce programu. Herní engine kreslí co nejrychlejc a vytěžuje procesor, další vlákna můžou přinýst díky tomu spíš problémy. Aquadelict GT sme pustili do světa se zabugovaným multiplayerem. Často nefungoval na vícejádrových procesorech. Byl napsaný v Indy, což je promakaná knihovna (...používala vlákna). Pak sme to přepsali přímo pro WinSock a vydali patch. Vlákna šly do háje. Od těch dob to funguje skvěle :). Co si neuděláš, to nemáš :)
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
andy



Založen: 20. 09. 2007
Příspěvky: 54

PříspěvekZaslal: 27. květen 2008, 12:28:28    Předmět: Odpovědět s citátem

Ja ku komunikacii pouzivam kniznicu Multisync, kde su uz funkcie na zaslanie spravy a prijatie spravy.. Takze neviem ci sa pouziva k tomu aj buffer
Myslim ze sa pouziva TCP/IP protokol ale niesom si isty. hovorym ze sa velmi dobre nerozumiem do sietovych zalezitosti a komunikacie.
Pre informaciu, hra je robena pod DX9.

Skusal som si vytvorit aplikacie cient a aplikaciu server, kde zaslanie spravy klienta sa automaticky zobrazilo ako log na servery, cize oneskorenie tam nebolo prakticky ziadne. tu je to debug . sprava sa zasiela stlacenim klavesu D.


Len nechapem preco zo zacitku je odozva okamzita, ale postupom casu sa zacina zvacsovat...


Naposledy upravil andy dne 27. květen 2008, 13:02:04, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 27. květen 2008, 12:58:00    Předmět: Odpovědět s citátem

Jestli to nebude tou knihovnou... zkus ten problém izolovat, třeba napsat samostatný konzolový program, který v okamžiku přijetí zprávy vypíše něco do konzole. Pak budeš mít jen malý kousek kódu a pokud to nebude fungovat, bude chyba v něm.
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
if.then



Založen: 13. 04. 2008
Příspěvky: 579

PříspěvekZaslal: 28. květen 2008, 06:17:02    Předmět: Velké sousto Odpovědět s citátem

no já si myslím, že si vzal moc velké sousto... Já se o MMORPG taky pokoušel (2D) ale ta práce se sítěmi je něco jiného než render a herní logika... Nakonec jsem tonezprovoznil Embarassed plánuji se k tomu vrátit od základů (žádné knihovny, čistá komunikace), ovšemže to bude běh na dlouhou trať.... Rolling Eyes
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 28. květen 2008, 08:29:38    Předmět: Odpovědět s citátem

if.then: Moc to prožíváš, já napsal multiplayer hru pro 6 hráčů po LAN v TurboBASICu pod DOSem (přes IPX a broadcast) a stačilo se nad tím jen trochu zamyslet. Dokonce jsem tam měl automatické přepínání role serveru, když hráč který hru zakládal nereaguje v nastaveném timeout. Je pravda, že jsem nepotřeboval řešit synchronizacu času, pořadí paketů ani zasílání pouze prioritní podmnožiny stavů hry, protože každý objekt (hráč) se vešel tak do 30 B, pakety byly pěkně malé, doručení zajištěné (teď nevím jestli IPX nebo SPX abych nekecal) a po LAN to samozřejmě běhalo rychle
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Sítě Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2, 3  Další
Strana 1 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna