« 1 2 »
Autor Zpráva
Warp
Profil
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
Jednou jsem je takhle hrál, bylo to v Javě
Warp
Profil
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
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 *
IMHO by to nemalo ist cez server, bolo by to strasne pomale
Warp
Profil
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
Furt jsme v řádu bajtíků...
Leo
Profil
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
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
V PHP docela rychle narazíš na časový limit vykonávání skriptu. Na normálním webhostingu určitě dost záhy.
Leo
Profil
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
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
"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
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
"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
Ja bych to viděl taky tak. Díky.
peta
Profil *
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 *
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 *
Warp k tomu prvnimu, tam bych ten zaznam skore a nejake dalsi drobnosti, treba jazykovou verzi, dodelal.
Warp
Profil
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 *
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
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
Prohlizec ma jen jednu podstatnou vyhodu - kazdy uz na pc nejaky ma, nemusi nic stahovat a instalovat. Leo
Warp
Profil
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 *
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
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 *
Č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
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
"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
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.
« 1 2 »
Toto téma je uzamčeno. Odpověď nelze zaslat.

0