Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
pkubicek
Založen: 07. 12. 2009 Příspěvky: 12 Bydliště: Brno
|
Zaslal: 7. prosinec 2009, 15:47:16 Předmět: Struktura MMO hry |
|
|
Dobrý den všem.
Mám v hlavě vizi MMO strategie. V rychlosti - každý z hráčů má svoji frakci, které mezi sebou navzájem válčí, spojují se apod. Není podstatné čeho se týká, spíše jak by měla vypadat struktura takové hry.
V mé vizi je na serveru databáze (platf. InterBase?) s řadou tabulek, které se mění na základě reakcí jednotlivých hráčů - klientských aplikací. Po změně se data odešlou každému z klientů. Je toto reálné, nebo jakým způsobem by měla probíhat komunikace? Jak fungují podobné hry, ať už jakéhokoliv žánru?
Programoval jsem zatím pouze offline projekty a s databazemi mám minimální zkušenost.
Budu vděčný za jakékoliv rady, nápady a postupy. Jakmile si s vaší pomocí ujasním představu a vytvořím základní kostru, rád se o projektu rozepíšu více. Byl bych také velmi vděčný člověku orientujícímu se v této problematice (programujícímu ideálně v Delphi), který by mě provedl více do detailu.
Děkuji. |
|
Návrat nahoru |
|
 |
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 7. prosinec 2009, 15:59:19 Předmět: |
|
|
No vlastně všechny MMO mají databázi a komunikují s ní - např. Travian má MySQL. _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
 |
pkubicek
Založen: 07. 12. 2009 Příspěvky: 12 Bydliště: Brno
|
Zaslal: 7. prosinec 2009, 16:04:01 Předmět: |
|
|
Díky za reakci. Omluv moji neznalost, ale dalo by se rozvést více dopodrobna? Travian pošle dotaz asi vždy při aktualizaci stránky, mě jde spíše o realtime věci. Jak konkrétně komunikuje? Díky |
|
Návrat nahoru |
|
 |
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 7. prosinec 2009, 16:49:43 Předmět: |
|
|
Dnes se přenášejí data přes síť pomocí protokolů TCP a UDP - UDP je méně spolehlivý, tedy nemůžeš zaručit, že se data neztratí, nedoručí 2x nebo neposune pořadí, ve kterém jsou pakety doručeny. Nicméně je vhodný pro velké množství paketů, například pro realtime hry.
Pro komunikaci po TCP i UDP je nutné zvolit IP protistrany. Server by měl mít unikátní IP, nevím jestli je to třeba i u klienta. (to lze zajistit např. použitím Hamachi, řešení bez použití externího programu fakt nevím a závisí i na implementaci)
Pak je nutné nastavit port, po kterém budete data posílat. Pro TCP a UDP je k dispozici dohromady 65536 (pro každý protokol 32768) portů. Port není až tak podstatný po dobu, kdy oba máte stejný port a tento port používá jen vaše aplikace.
Ještě nastíním jak by to mělo asi vypadat:
- Klient pošle požadavek na server, v Delphi je na to dobrá komponenta TClientSocket.
- Server požadavek zpracuje, vyjme příslušné údaje z databáze a pošle výsledek klientovi. (v Delphi vhodná asi TServerSocket)
- Klient odpověď obdrží a zpracuje.
P.S.: Samozřejmě to nevím 100% přesně, je to z různých zdrojů a mnohé jsou už dost staré. _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
 |
Yossarian

Založen: 28. 07. 2007 Příspěvky: 274 Bydliště: Šalingrad
|
Zaslal: 7. prosinec 2009, 16:56:29 Předmět: |
|
|
if.then napsal: |
Server by měl mít unikátní IP, nevím jestli je to třeba i u klienta.
Pak je nutné nastavit port, po kterém budete data posílat. Pro TCP a UDP je k dispozici dohromady 65536 (pro každý protokol 32768) portů. Port není až tak podstatný po dobu, kdy oba máte stejný port a tento port používá jen vaše aplikace.
|
lol. sorry za oneliner, ale todle sem si nemoh odpustit
edit: portu je 2^16 pro tcp i udp, a server by mel mit _verejnou_ ip (nebo nejak forwardovany porty.. nastuduj si princip tcp komunikace a NAT :] ) |
|
Návrat nahoru |
|
 |
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 7. prosinec 2009, 17:19:53 Předmět: |
|
|
No tak sorry no, samozřejmě že jsem myslel veřejnou IP.
Co se týče těch portů, tak je to další důkaz, že PC worldu se nedá věřit  _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
 |
Quiark

Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 7. prosinec 2009, 17:29:24 Předmět: |
|
|
Na serveru musí být něco, co dokáže souběžně přijímat data od více zdrojů a zároveň posílat updaty klientům. Pro tyto účely se obvykle používají databáze, konkrétně relační databáze (MySQL, MSSQL, PostgreSQL, ...). V poslední době začínají být populární i takzvané nerelační (tzv. NoSQL) databáze, které plní stejnou úlohu, ale jdou na to trochu jinak. Na tobě je volba jednoho z těchto přístupů. Pokud chceš jít konzervativní cestou, pak to bude klasická relační databáze.
Co se týče realtime aktualizací, je to jednoduché. Pokud chceš, aby klient viděl nějakou změnu, musí mu ji někdo poslat. Jenže posílat informaci vždy, když se cokoliv změní obvykle vede k velkému nárůstu zpráv, nezbývá, než informace aktualizovat méně často a po větších skupinách. Chtělo by to mít nějakou představu, jak bude hra náročná na objem informací, kolik budeš mít hráčů, jak často musí mít nové informace (např. stačí jednou za 5 sekund?) a podobně. _________________ Mám strach |
|
Návrat nahoru |
|
 |
MePHyst0
Založen: 28. 07. 2007 Příspěvky: 85 Bydliště: SVK/CZK
|
Zaslal: 7. prosinec 2009, 18:20:56 Předmět: |
|
|
Odporucam vela vela studovat, ak si s databazami este nikdy nepracoval a chces spravit MMO(zalezi aj co myslis pod MMO, ci system co obsluhuje 10000 klientov v jednej zemi, alebo system co obsluhuje 100mega na celom svete), tak inkubacnu dobu(rozumej zatvorim sa do pivnice a nevylezem dokym to vsetko nepochopim) tak na rok. mozes zacat napr tu http://www.gamedev.net/columns/books/bookdetails.asp?ProductID=216 , potom si mozes citat o synchronizacii klientov, skalovani serverov, optimalizacii posielanych dat, streamovani svetov(vseobecne dat) atd atd |
|
Návrat nahoru |
|
 |
pkubicek
Založen: 07. 12. 2009 Příspěvky: 12 Bydliště: Brno
|
Zaslal: 8. prosinec 2009, 10:51:34 Předmět: |
|
|
Díky všem zkušnějším za odpovědi. Plus mínus je to tak jak jsem předpokládal. Nehodlám se pouštět do žádných velkých projektů. Pomalinku chci jen udělat nějakou funkční kostru do které pak hodlám postupně nabalovat.
V plánu je maximálně okolo 150-200 hráčů na jeden herní svět. Mělo by se jednat o realtime strategii ve stylu crusader kings, europa universalis, hearts of iron apod. Vyjímečná by měla být v celé řadě věcí, především v systém obtížnosti a startu začínajících hráčů, v neposlední řadě pak v důrazu na management a vztahy mezi hráči, místo na souboje.
Pokud by někoho zajímalo více a popřípadě mi chtěl pomoci (ne psát za mě kód, ale spíše mě otcovsky vést) budu dnes celý den na icq 230892645, popř. mail pkubicek@la-femme.cz |
|
Návrat nahoru |
|
 |
DespeRadoX

Založen: 28. 07. 2007 Příspěvky: 520
|
|
Návrat nahoru |
|
 |
pkubicek
Založen: 07. 12. 2009 Příspěvky: 12 Bydliště: Brno
|
Zaslal: 10. prosinec 2009, 15:41:12 Předmět: |
|
|
Nikoliv realtime ve stylu AOE, ale ve stylu Europa Universalis. Zde těch jednotek tolik není. Navíc souboje hodlám minimálně ze startu značně zjednodušit.
Naučit se toho budu muset opravdu hodně. Naštěstí nemám žádnou časovou osu ani milestony. Takže času dost. Jak tak ale zjišťuji bez zkušného rádce nemám moc šanci. Uvidím jak na tom budu s časem, abych mohl studovat jak na to. |
|
Návrat nahoru |
|
 |
|