GGZ Gaming Zone Design Specification

Brent Hendricks

            
          

Design specification for the GGZ Gaming Zone. This document covers the internal server architecture and the client/server communication protocols.


Table of Contents
Introduction by Brent M. Hendricks
1. Design Requirements
2. Client-Server Communication Protocol
2.1. Logging in
2.2. Requesting server information
2.3. Rooms
2.4. Requesting room information
2.5. Server updates
2.6. Table Management
2.7. Chatting with friends
2.8. Game Interactions
3. Design Overview
3.1. The GGZ server (ggzd)
3.1.1. Interactions between ggzd and running games
3.1.2. Interactions between ggzd and config utilities
3.2. Individual Game Servers
3.3. Config Utility
3.4. Key Subsystems
3.4.1. Options Parser
3.4.2. Login/User Database
3.4.3. MOTD System
3.4.4. Player Statistics
3.4.5. Module loading
3.5. Data Structures
A. Protocol Reference
A.1. Messages sent in both directions
SESSION -- Session start
PING -- Lag measurement challenge
PONG -- Lag measurement response
A.2. Server to client messages
ROOM -- List entry describing one room
GAME -- List entry describing one game type
SERVER -- Server identification
MOTD -- Server Message of the day
UPDATE --  Notification that the list of players or the list of tables in a room has changed, or the list of rooms or game types on a server.
PLAYER --  List entry describing one player.
TABLE --  List entry containing one table
JOIN --  Message to indicate you've joined a table
LEAVE --  Message to indicate you've left a table
RESULT --  General message to indicate the result of a request
LIST --  Server response to request for list of rooms or list of games
CHAT -- Server response to chat message request
A.3. Client to server messages
LOGIN -- Client requested login
LIST --  Client request for list of rooms or games on the server, or of tables or players in a room
LAUNCH -- Client request for new table launch
JOIN -- Client request to join a table
LEAVE -- Client request to leave table
CHAT -- Client chat message request
ENTER -- Request to change rooms
CHANNEL -- Request for a direct game connection
A.4. Messages from server to game module
RSP_GAME_JOIN -- Response to join request
RSP_GAME_LEAVE -- Response to leave request
RSP_GAME_SPECTATOR_JOIN -- Response to join request of a spectator
RSP_GAME_SPECTATOR_LEAVE -- Response to spectator leave request
RSP_GAME_SEAT -- Response to player seat modification request
REQ_GAME_STATE -- Request to change game state
MSG_LOG -- Log message
A.5. Messages from game module to the server
REQ_GAME_JOIN -- Request for a player to join a table
REQ_GAME_LEAVE -- Request for a player to leave a table
REQ_GAME_SPECTATOR_JOIN -- Request for a spectator to join a table
REQ_GAME_SPECTATOR_LEAVE -- Request for a spectator to leave a table
REQ_GAME_SEAT -- Request to modify a player seat
RSP_GAME_STATE -- Response to game state change request
List of Figures
3-1. Server Architecture