[Obecné]Herní server - Jak na to?

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod PiranhaGreg 9. 12. 2012 21:47

Zdravím, potřeboval bych vědět, jak udělat menší herní server. Např. že se na něj připojí 2 lidé a když jeden něco napíše, objeví se to u druhého.

Nemám s tím zkušenosti, potřeboval bych znát aplikaci, nebo nějaký rozhraní, přes který to na serveru řešit (myslím přímo ty připojený hráče) a v jakým jazyce ten server vůbec psát. Preferoval bych C#, ale přežiju i Javu nebo PHP. A pak samozřejmě jak to řešit u klienta. Zatím zvládnu na server poslat leda tak POST, kterej mě PHPko nějak přechroustá a vrátí výsledek. Ale počítám že to nebude ta správná cesta k real-time komunikaci více hráčů :mrgreen: .
PiranhaGreg
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod r34ktor 9. 12. 2012 22:02

Nevidím důvod něco psát od píky. Pokud ti jde o chat, nainstaluj na server např. Jabber.
Knowledge is power
Greinerův poznatek o zhroucení: Důvod, proč se počítač zhroutil, je vždy za hranicí tvých znalostí.
r34ktor
Pokročilý
Uživatelský avatar

Odeslat příspěvekod PiranhaGreg 9. 12. 2012 22:34

Nejde mi o chat. To byl příklad. Jde mi o všechno možný, prostě obecný data. Aby se klient spojil se serverem a aktivně s ním komunikoval a server mohl zároveň komunikovat s více klienty a měl všechno uložený v jedný RAMce...
PiranhaGreg
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod r34ktor 9. 12. 2012 23:16

Tak s tím ti neporadím.
Knowledge is power
Greinerův poznatek o zhroucení: Důvod, proč se počítač zhroutil, je vždy za hranicí tvých znalostí.
r34ktor
Pokročilý
Uživatelský avatar

Odeslat příspěvekod gandor 9. 12. 2012 23:32

Skus napisat nieco viac... Podla toho co popisujes to nieje celkom jasne...
Pokial chces nejaky herny server typu counter-strike alebo nejaka ina hra, tak sa to riesi tak, ze si proste otvoris socket na urcitom porte a citas/zapisujes s neho tak data, ako len chces... Socket nechavas nonstop otvoreny a ked sa nahodou s nejakeho dovodu zatvory, tak ho znova otvaras. Pre vyhladanie je dobre pouzit UDP broadcast...
Zda sa mi ale, ze by si mohol chciet nieco aj ohladom webu. Pri browseroch to takto nefunguje. Jednotlive connections sa za normalnych okolnosti zatvaraju a dlhotrvajuci socket neotvoris (tak aby bol znovapouzitelny). Takze potom presne robis post na server (ale cez AJAX) a tahas naspet vysledky. Existuju aj rozne optimalizacie (napr. presne na otvorenie dhotrvajuceho socketu) ako napr. (ale nie len) server-send events, web sockets a podobne, ale pokial dobre viem, tak niesu na vsetkych browseroch a maju svoje komplikacie...

V kazdom pripade nech ide o jednu moznost alebo druhu, tak je to realny problem, ktory ti len tak magicky nevyriesim. Existuje mnoho komplikacii - hlavne ked sa vela ludi s roznymi podmienkami a kvalitami liniek snazia pripajat na jeden server... Preto by som asi pozeral po nejakom "polotovare"....
gandor
Mírně pokročilý

Odeslat příspěvekod Player. 10. 12. 2012 00:33

Je uplne jedno aky jazyk na servri pouzijes, urcite pre kazdy existuju frameworky, ktore zabezpecuju obojsmernu komunikaciu.

Vygoogli si server push, comet alebo web sockets + jazyk v ktorom chces kodit.
Player.
Junior
Uživatelský avatar

Odeslat příspěvekod karlos00x 10. 12. 2012 00:40

takhle se programovat nenaucis a ani nic nevytvoris. teorie je nutna.
Upgrade který má smysl: SSD. Zažijete svižný počítač.
karlos00x
Pokročilý

Odeslat příspěvekod PiranhaGreg 10. 12. 2012 00:41

Myslím server jako je třeba Minecraft. Program, kterej odposlouchává na určitým portu všechnu komunikaci, nějak jí zpracovává a případně posílá zpět na správnou IP zase nějaký info. A právě moc nevím, kde nějakej takovej polotovar, nebo návod sehnat. Nejlíp nějakou knihovnu psanou v C# pro serverovou verzi programu a pro klienta v PC co už bude tu komunikaci zařizovat a bude tam nějaký rozhraní typu Server.Send("commands"); a u serveru Client.Send("IP", "commands");.

Programovat umím. Neříkám že zvládnu všechno, ale pár let už se programování věnuju ;-) .
PiranhaGreg
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Player. 10. 12. 2012 01:38

Vygoogli si: Socket C#.
Player.
Junior
Uživatelský avatar

Odeslat příspěvekod Fuller009 10. 12. 2012 10:29

Komunikace client - server čistě v c#?... Dost záleží kolik ti tam bude chodit dat, ale můžeš se kouknout na WCF služby, které v postatě řeší tu komunikaci.
Fuller009
Junior

Odeslat příspěvekod piErcE 10. 12. 2012 11:14

Ty si to programování představuješ asi jako hurvínek válku. Tvůj dotaz by se dal, abychom se přenesli někam jinam, mimo počítače, též přirovnat k dotazu cca ... "za barákem mi vede koridor, poraďte mi, jak mám udělat, abych mohl vlastním vlakem jezdit z Prahy do Brna".

Ale takhle .. Na mě to bohužel působí tak, že jsi v životě neprogramoval, ale někde v Minecrafrtu (či v něčem jiným) jsi viděl nějaký chat, a teď mermomocí musíš začít programovat , a jako prvotní úlohu si vybereš zrovna to nejnáročnější.

Bohužel vůbec nepíšeš, co vlastně chceš (ono je to jedne, stejně to , zdá se, nevíš sám). A na takhle obecný dotaz odpověď prostě neexistuje - na každý z tebou letmo zmíněných požadavků existuje jiná ideální programovací technika, technologie a postup, jak s tím pracovat. Počínaje nějakou nízkoúrovnovou záležitostí, jako sockety, a konče něčím highlevelým, jako využítí třeba WCF či podobného frameworku.

To, jestli to bude v C#, nebo v Javě, nebo v něčem jiném, je jen takový fetiš - ono to půjde napsat prakticky v čemkoli.
Garmin DriveLuxe 50 - iPhone SE - Octavia III 1.4 110 kW DSG
piErcE
Junior

Odeslat příspěvekod Bari007 10. 12. 2012 11:28

Já jsem vůbec nepochopil, jestli chceš jen rozjet nějaké hotové řešení (ať už pro nějakou hru, komunikátor nebo něco) nebo si chceš něco sám napsat.

Protože pokud chceš rozjet jen něco na serveru, téměř na vše máš už hotové řešení, kde nic programovat nemusíš.
Pokud chceš naprogramovat vlastní hru nebo nějaký komunikátor, tak na to jdeš dost špatně.
Bari007
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod gandor 10. 12. 2012 13:10

Neviem preco sa tu vecsina ludi do PiranhaGreg tak navaza. Ked nieco neviem, tak sa spytam. A tato oblast tiez nieje vec, s ktorou sa kazdy programator stretne...
A inak - na jednoduche servery kde tej komunikacie zasa tolko neprebieha (netreba optimalizovat ani moc riesit konflikty/straty/casovanie) to riesenie neni ani atomova fyzika. Cely server znamena len to, ze mam jeden pocitac s presne definovanou kombinaciou IP/port. Kazdy klient sa na dany port prihlasi a server ma urceny jeden listener na onconnect... Zhruba 200 riadkov kodu a cely "client/server" je hotovy...

Pre C# staci napr. to co je na tejto stranke:
http://forums.trossenrobotics.com/showt ... ckets-in-C
gandor
Mírně pokročilý

Odeslat příspěvekod PiranhaGreg 10. 12. 2012 15:18

Gandore díky, pomohl jsi mi ;-) . S tímhle už to půjde :-) .
PiranhaGreg
Mírně pokročilý
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků