[Kde-games-devel] Game Developer Guide

Wolfgang Rohdewald wolfgang at rohdewald.de
Mon Jul 20 05:20:35 CEST 2009


first let me introduce myself:

I am writing a mah jongg game using python and Qt4/KDE4, see 
http://www.kde-apps.org/content/show.php/kmj?content=103206

The next big change is to add networking code and an AI player, so I should
certainly have a look at GGZ.

I am reading the development guide and have a few questions

as a novice I might be in a good position to point to unclear formulation -
please understand this as constructive criticism. My aim ist first to
understand GGZ and second to help with getting better documentation on
the way

0. Some of my questions might be answered somewhere else but I 
assume this development guide is meant to be complete in the sense 
that no external lookup is needed for understanding - so I decided
not to try finding answers somewhere else.

1. it mentions Kuobe - that should be kuohbe, and it might be worth
noting that kuohbe is a QT3 application only.

2. on page 7, 3rd paragraph from the bottom: "A launched game
client .... which launched the game." That got me thinking - who exactly
launches a game? Before I thought it is the game server when it has
enough players. But this sentence seems to imply that one of the
players launches the game. But on second thought I think you mean " ...
which launched the game client."

Could this also be written as "The GGZ core client launches one game
client and establishes a control channel to it." I am not sure if I
would mention callbacks here at all - that seems like an implementation
detail (twisted as an example implements asynchronous processing with
its Deferred objects instead of callbacks)

This chapter 4.2 (and 2.3 too btw) mentions the GGZ core client without
first introducing it - maybe it would be helpful to shortly explain its
role or to add a link to that explanation.

3. am I right in assuming that there is never a direct connection
between game clients and core clients except one locally? So two
game clients would always talk to each other using the game server
as an intelligent router? If so, why is it preferred to separate core
client and game client into two processes? Why can't the core client
functionality always be added as a library to the game client
(embedded game like Widelands)?

4. on the kdegames mailing list Josef said:
> In any case, use ggzcomm-based declarative network protocol descriptions so 
> that you can have your networking code autogenerated for any programming 
> language and library.

am I right in understanding that using ggzcomm is not needed - I could
just as well use anything else like python-twisted? Is ggzcomm
recommended only because it might facilitate my work or do I have some
other advantages when using ggzcomm? Currently I prefer twisted
because I could use that know-how also for other projects (twisted
also is new to me). There already is some glue code that merges the main
event loop of twisted into Qt4, so that should be easy.

5. I am not sure whether by "server" you mean a physical computer or a 
process - so I am not sure if the game server is a separate computer using
ggzdmod for connecting to the GGZ main server or if the GGZ main server
process spawns game server processes on the same computer. Am I right in
assuming that there is exactly one GGZ main server worldwide?

-- 
Wolfgang


More information about the kde-games-devel mailing list