Autor | Zpráva | ||
---|---|---|---|
Warp Profil |
#1 · Zasláno: 12. 12. 2005, 19:19:18
Zdravím,
přemýšlím jak udělat jednoduchou multiplayer hru typu např. piškvorky. Jde mi o to, aby server mohl běžet na normalním hostingu. Potřeboval bych tedy poradit zda není úplně šílený nápad napsat jednoduchého HTTP klienta (v čemkoliv), který by jen dával GET a POST ke zpracování třeba PHP skriptu. Samzřejmě nejvetší problém je reakce server->klient. Klient by se musel pořád dokola dotazovat což moc efektivní ani svižné nebude. Jak to vidíte? Popř. poradtě nejakou jinou technologii, která se dá provozovat bez vlastního serveru. Díky |
||
fimmos Profil |
#2 · Zasláno: 12. 12. 2005, 21:22:53
Jednou jsem je takhle hrál, bylo to v Javě
|
||
Warp Profil |
#3 · Zasláno: 12. 12. 2005, 21:36:35
A nějaké zkušenosti, rychlost? Použili byste spíš HTTP 0.9 a pořád dokola např. cca 10s navazovali spojení. Nebo spíš 1.1 ale zase tahali spoustu nepotřebných hlaviček znovu a znovu.
|
||
thingwath Profil |
#4 · Zasláno: 12. 12. 2005, 21:42:06
Zkus spíš nad tím třeba XML-RPC. S odezvou, přebytečnýma hlavičkama a další režií si nedělej starost, u piškvorek je dat pět a půl a na odezvě moc nesejde.
|
||
Anonymní Profil * |
#5 · Zasláno: 12. 12. 2005, 21:43:07
IMHO by to nemalo ist cez server, bolo by to strasne pomale
|
||
Warp Profil |
#6 · Zasláno: 12. 12. 2005, 21:56:06
No s XML-RPC nemám vůbec zkušenosti, ale kouknu na to. Právě že u (opravdu to byl jen příklad) piškvorek je dat tak malo, že hlavičky jsou třeba 50x větší než samotná data. A při refreshi třeba 5-10s by to bylo znát a navíc je to mrhání :). Přes server to jít musí. Jak také jinak když by server měl dohlížet nad hrou, vést statistiky apod. navíc to řeší firewally.
|
||
thingwath Profil |
#7 · Zasláno: 12. 12. 2005, 22:11:49
Furt jsme v řádu bajtíků...
|
||
Leo Profil |
#8 · Zasláno: 12. 12. 2005, 22:17:29
Pokud nechcete pouzit HTTP tak jedine nizsi vrstva (TCP/IP), tam je rezie na jeden bajt dat (pokud byste to chtel prenaset po jednotlivych bajtech) asi 40:1. S komunikaci bez serveru nemam moc zkusenosti, ale pochybuju, ze to jednoduse proleze pres firewally, Leo
|
||
Warp Profil |
#9 · Zasláno: 12. 12. 2005, 22:27:10 · Upravil/a: Warp
Jasne diky. Představu o TCI/IP mám. Pravda moc mi to nedochází. Ok beru že režie bude přijatelná, i když k dokonalosti to má hodně daleko (co také nemá). HTTP je volený pravě kvůli tomu že celá aplikace může běžet na normáním webhostingu.
Ještě by mě zajímala jedna věc ohledně návrhu a to zda by měl server spíše čekat s odpovědí pro klienta nebo vracet hned např. prázdnou odpověď. A jak to elegantně vyřešit třeba v PHP. Cyklus sleep()? |
||
thingwath Profil |
#10 · Zasláno: 12. 12. 2005, 22:32:17
V PHP docela rychle narazíš na časový limit vykonávání skriptu. Na normálním webhostingu určitě dost záhy.
|
||
Leo Profil |
#11 · Zasláno: 12. 12. 2005, 22:34:50
Nejak jsem nepochopil proc by server mel s odpovedi cekat? Klient ji potrebuje co nejdriv ne? Podle me je pro rozhodovani v cem to delat to, jestli chcete/muzete pouzit jako klienta prohlizec nebo chcete separatni program. Leo
|
||
Warp Profil |
#12 · Zasláno: 12. 12. 2005, 22:42:02
Pokud jsem dobře četl sleep na linuxu by se neměl započítávat do doby běhu. Jak je to doopravdy nastavené kdo ví.
V momentě když je na tahu druhý hráč tak první hráč čeká na odpověď serveru a naopak. Otázkou je jestli má skutečně čekat nebo spíš zkoušet (GET na server) třeba co 10s jestli už oponent táhl. |
||
Leo Profil |
#13 · Zasláno: 13. 12. 2005, 00:28:32
"Otázkou je jestli má skutečně čekat nebo spíš zkoušet (GET na server) třeba co 10s jestli už oponent táhl."
Cekat na co? Nemuzete prece v http poslat pozadavek z jednoho klienta a na druhem cekat na odpoved... Leo |
||
Warp Profil |
#14 · Zasláno: 13. 12. 2005, 09:36:46
Proč by to nešlo? Představte si situaci kdy klient, který čeká na tah protihráče pošle požadavek na php skript. Ten bude ve smyčce se sleep() čekat na např. na změnu údaje v databázi (tah druhého klienta) a až se údaje změní, ukončí se a server požadavek vyřídí. Samozrejmě je tu ta maximalni doba běhu skriptu.
|
||
Leo Profil |
#15 · Zasláno: 13. 12. 2005, 09:59:28
"Ten bude ve smyčce se sleep() čekat na např. na změnu údaje v databázi (tah druhého klienta) a až se údaje změní, ukončí se a server požadavek vyřídí."
Pak to ale posle na stejneho klienta. Nicmene uz chapu jak jste to myslel. No ale nevim, jestli vas s timhle resenim budou mit na tom webhostingu radi... prijde mi jednodussi a prijatelnejsi to opakovane dotazovani. Leo |
||
Warp Profil |
#16 · Zasláno: 13. 12. 2005, 10:54:06
Ja bych to viděl taky tak. Díky.
|
||
peta Profil * |
#17 · Zasláno: 13. 12. 2005, 14:15:36
Warp
mracek.xhosting.cz/gc/gc-games.php Neco takove? 40k a zaznam skore neni doprogramovan, hra je vedena pres SQL, data o loginu a tahu se posilaji pres GET. Pokud nekdo nehraje 20 minut, hra je automaticky ukoncena a smazana, s tim, ze teda nekdo musi byt online. Jinak zkusil jsi hledat v databazich free scriptu? takovych veci jsou tisice http://www.volny.cz/peter.mlich/www.htm#www5 |
||
peta Profil * |
#18 · Zasláno: 13. 12. 2005, 14:18:22
Warp jeste mne napada, ze jednoduchy program piskvorek zalozeny na hrani na stejnem pocitaci jsem upravoval neco z intervalu...
http://www.volny.cz/peter.mlich/www.htm#lmoje Neni problem ukladat udaje do souboru, byl by trosku problem, aby to mohlo hrat vice lidi naraz pres soubor. To uz musi byt ta registrace a je jednodussi to ukaldat do DB, kde jsou na to vymakane funkce. |
||
peta Profil * |
#19 · Zasláno: 13. 12. 2005, 14:27:49
Warp k tomu prvnimu, tam bych ten zaznam skore a nejake dalsi drobnosti, treba jazykovou verzi, dodelal.
|
||
Warp Profil |
#20 · Zasláno: 13. 12. 2005, 19:26:38
peta každopádně také díky. Jinak to tvoje je celkem zajímavé a určitě nejaká inspirace bude. Spíš tady ale šlo o to, že klient poběží jako samostatná aplikace nikoliv v prohlížeči. S využitím DB samozřejmě počítám jinak by to asi nešlo. Tak jako tak dnes jsem to konzultoval ve škole a už mám jakou takou představu jak by to mělo vypadat. Pokud bude mít někdo zájem snad se za cca 3 týdny pochlubím.
|
||
peta Profil * |
#21 · Zasláno: 13. 12. 2005, 20:08:46
Warp
Tak to hodne stesti. Mi to prijde zbytecne delat to jako samozstatnou aplikaci. Proste je to php a kdyz nedostava data, tak to samo nezatezuje server. Cili u toho meho se muze stat, ze kdyz rozehraje 10 lidi hry a pak se na to vybodnou, tak tam bude viset 10 her v BD dokud nekdo neotevre stranku s prehledem her. Ale to mi neprijde jako takove minusove. Do systemu muzu zabodovat jakoukoli hru. A v podstate to vsechno funguje, jak bych si predstavoval, jen se nezaznamenava skore, se mi nechtelo, delam jinou hru, daleko narocnejsi. To, co tam vidis, mi trvalo necely tyden. |
||
Warp Profil |
#22 · Zasláno: 13. 12. 2005, 21:03:20
S tou samostatnou aplikací mám speciální záměr. Prohlížeč je prostě jen prohlížeč i když na nějaké jednoduché piškvorky apod. je to samozrejmě lepší řešení. No sám jsem zvědav co se z toho vyklube.
|
||
Leo Profil |
#23 · Zasláno: 13. 12. 2005, 21:16:04
Prohlizec ma jen jednu podstatnou vyhodu - kazdy uz na pc nejaky ma, nemusi nic stahovat a instalovat. Leo
|
||
Warp Profil |
#24 · Zasláno: 13. 12. 2005, 21:41:49
Jenže prohlížeč toho umí "pramálo" a navíc je to úžasně nekompatibilní přostředí :) . Nechme toho nikam to nepovede a navíc o to v tomhle topicu nešlo. Tečka.
|
||
peta Profil * |
#25 · Zasláno: 14. 12. 2005, 10:26:11
Warp
jak myslim, podle mne je to celkem kompatibilni... Muzes tu aplikaci udelat v Jave, ale pak si kazdy musi nainstalovat 50M. Ja osobne nezajem cekat na 50M Javy. Mozna te prekvapi, jak kompatibilni a stejne jsou JS hry, ktere vyzaduji pouze www prohlizec www.volny.cz/peter.mlich/hry/hry.htm Jinak spousta lidi pouziva Flash hry v kombinaci s DB nebo bez http://www.webhry.cz/ nevim, zda tam maji nekde pocet, ale driv uvadeli neco kolem 1000 free her |
||
Warp Profil |
#26 · Zasláno: 14. 12. 2005, 11:30:31
Není tu pouze JavaScript (oteřený kód) Java (pomalé a jak ríkáš je potřeba JVM což už dnes má celkem dost lidí) a Flash (ten je navíc komerční). Momentálně píšu testovacího klienta v C++ bohužel to bude omezené na Windows. Každopádně je to jen takové zkoušení sám nevím jak to nakonec dopadne.
|
||
Kajman_ Profil * |
#27 · Zasláno: 14. 12. 2005, 12:45:00
Česká piškvorkářská špička nyní hraje hlavně na kurnik.pl - je to v javě a odezvy jsou výborně rychlé (1 minuta na partii není problém :).
Pořádný server na online hraní v Čechách chybí. Tak držím palec :-) |
||
Warp Profil |
#28 · Zasláno: 14. 12. 2005, 13:06:33
Díky moc :) Každopádně o piškvorky se jednat nebude byl to jen příklad. Zatím je to školní projekt těžko říct jestli z toho bude něco víc. Odezva problém bude právě díky tomu způsobu propojení přes HTTP :(
|
||
Leo Profil |
#29 · Zasláno: 14. 12. 2005, 13:09:18
"Odezva problém bude právě díky tomu způsobu propojení přes HTTP :("
Rozdil v rychlosti mezi HTTP a TCP/IP (kteryzto protokol muze pouzivat Java - aplet, neplest s JavaScriptem) by byl podstatny jen u pomaleho pripojeni (ve smyslu maleho mnozstvi dat, ktere lze prenest za sekundu), ale nerekl bych, ze to hraje roli. Jina vec je rychlost odezvy serveru, a ZPOZDENI na lince (ktere s rychlosti pripojeni primo nesouvisi). Leo |
||
Warp Profil |
#30 · Zasláno: 14. 12. 2005, 13:28:03
Leo
Zpoždění bude protože HTTP je protokol typu dotaz->odpověď a tak server nemá šanci jak sdělit klientu, že např. protihráč táhl. Pokud nevíte o lepším způsobu tak se klient bude muset ptát pořád dokola v nějakém časovém intervalu. Tzn protihráč potáhne pošle to na server a vy si musíte vyzvednout jeho tah. Při prodlevě třeba 10s to bude cca průměrně 5s + zpožděnní linky a serveru. Kajman_ Ten server je parádní. Opravdu se mi zdá že je v čechách není konkurence. Škoda. |
||
Téma pokračuje na další straně.
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0