Download
https://github.com/simatic/ZebroGaMQ
Features
ZebroGaMQ provides an easy and reliable way to publish and consume messages in the context of mobile multiplayer games. A prototypical game involves:
- A Python server
- Android applications
- Java J2SE applications
- JavaScript applications
Here are the most powerful features of the middleware:
- Clients of ZebroGaMQ don't have to handle low-level details of reception of messages, they just need to define a behaviour on the consumption of these messages.
- Disconnection management of Android devices: you just have to focus on publishing your messages, the middleware handles for you the loss of network connection inherent to mobile networks.
- Game instances management: you can create several instances of your game, and let players use those instances in parallel.
Entities
The use case for ZebroGaMQ includes:
- A gamelogic server (Python proccess), which creates game instances
- A logging server (Python proccess), which logs all relevant events
- A master (Android/Java J2SE/Javascript application), which manages (start, terminate...) a game instance
- Several players (Android/Java J2SE application)
- Several spectator (Android/Java J2SE/Javascript application), which are informed about events of a game instance
Logging in
The login step is as follows:
Exchanging messages and executing game actions
Once clients are logged in a game instance, they can exchange messages and execute game actions on all the available entities.
The use of a state machine and actions on both clients and game logic server sides considerably facilitates the use of the ZebroGaMQ:
- Whether on the clients and/or on the game logic server sides, you describe a list of actions and the corresponding required behaviour on the activation of those actions.
- Then, you register this list of actions.
- Finally, you just publish messages to a recipient with the action name as a parameter, and on the reception of this message, the recipient executes the action.
Notice that the recipient can be either: