Hi, Remember, I started a project called HappyBoom in April 2005. It was first called "Boombastic". My first try was interesting: it's possible to separate quite everything in a program using events (works like "signals"?). The server and the client were using multi-agent system.
In Jully, Damien join my "team" to help me on the project. He rewrite the client using only events (multi-agent architecture is too "heavy" just for a graphical client). In August, I baught the domain happyboom.org, and Damien installed a wiki (MediaWiki). After *long* discutions, we decided to rewrite HappyBoom to transform it in a game engine and not only one game. We also started to write a network protocol which can be used for any sort of game. Beginning of September, the network specification is quite stable, and we started the write an implementation using old client and server. Today, I just finished to update the code to use new protocol. --- So, the network protocol: http://www.happyboom.org/Protocole_HappyBoom http://www.happyboom.org/Protocole_BoomBoom It's splitted in two parts: HappyBoom core (low level), and <game> protocol. First game protocol is for BoomBoom (more infromation about BoomBoom on our website). HappyBoom protocol manage client connection/disconnection, create/destroy items, features (what client supports), and events. Events are always written with this syntax: feature.event(arguments). Examples: - game.start() - log.info(text: utf8) - projectile.move(x: int, y: int) --- You worked hard to make the HappyBoom low-level processing very transparent. For example, events are send by integer values on the network, not string. But in the source, code, you will see: self.sendNetMsg("projectile", "move", x, y) You don't have to care about x convertion or "move" identifier. Thanks to Python language, it's very easy to do that. --- We are using an event managment very easy to use. Example: (...) # we want events from projectile self.registerEvent("projectile") (...) def evt_projectile_move(self, x, y): # Do something with x and y (...) You don't have to declare that you want "move" event, or that x and y are integers. To send an event, it's like that: self.launchEvent("projectile", "move", x, y) Very easy, isn't it ? ;-) --- BoomBoom is not finished, but you can already play it over Internet. They is no IA yet, but should come soon ;-) Installation informations are on our website. You will need: - Python 2.2+ - pygame (SDL for Python) - pysma - happyboom - boomboom TODO: Write nice documentation, create full archive, or build Linux binary ;-) (yep, it's possible with Python) Bye, Haypo http://www.happyboom.org/ : HappyBoom website
