Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Crypton
Založen: 14. 05. 2009 Příspěvky: 306 Bydliště: The Void
|
Zaslal: 9. červenec 2011, 19:27:40 Předmět: Návrh herního klienta (architektůra klient-server) |
|
|
Dobrý den,
přepisuju teď svou singleplayer hru na herního klienta, a chtěl bych vás poprosit o radu ohledně návhu.
Mám problém s návrhem uspořádaní struktůry celého klienta, původně jsem totiž měl všechny hlavní třídy jako singletony, a celý kód jsem měl všelijak propletený. Rozhodnul jsem se (skoro) všechny singletony odstranit, a předávat raději reference na instance těch tříd.
A protože nevím jak moc budou potřebovat různé části toho klienta mezi sebou komunikovat, rozhodl jsem se všechny ty instance, co jsem měl jako singletony, uchovávat v jedné třídě, kterou jsem nazval ClientContext, a předávat raději referenci na tuto třídu.
Je to dobrý způsob předávání a nebo je to nesmysl? Ten kontext uchovává jen ukazatele na instance těch tříd, nemá vůbec ponětí o implementaci (používám dopřednou deklaraci) těch tříd, takže není možné abych k těm instancím přistoupil, aniž bych musel vložit hlavičkový soubor s deklarací té třídy.
Proto si myslím že je to dobrý způsob, oproti singletonům.
Snažil jsem se narychlo vytvořit nějaký diagram, z jakých tříd se ten klient skládá:
Mohl by mi někdo říct jak moc mám tu struktůru špatně?
Díky za případné rady!
P.S. Klient se bude starat jen o renderování a posílání uživatelských příkázů na server. _________________
|
|
Návrat nahoru |
|
|
Lemik
Založen: 30. 07. 2007 Příspěvky: 138
|
Zaslal: 10. červenec 2011, 00:26:03 Předmět: |
|
|
Pardon za OT, ale prostě se musím zeptat.
Ten diagram jsi dělal ručně, nebo v nějakém programu? |
|
Návrat nahoru |
|
|
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 10. červenec 2011, 10:13:20 Předmět: |
|
|
A co je konkrétně třída ClientContext a jak se liší od třídy Client?
BTW: Neměl by být GUIManager svázán s InputManagerem? _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
|
Solid.Sn
Založen: 08. 08. 2009 Příspěvky: 55
|
|
Návrat nahoru |
|
|
franz
Založen: 30. 07. 2007 Příspěvky: 1325
|
Zaslal: 10. červenec 2011, 20:04:37 Předmět: |
|
|
Super, to se hodí |
|
Návrat nahoru |
|
|
|