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
Design Requirements
Client-Server Communication Protocol
Logging in
Requesting server information
Requesting room information
Server updates
Table Management
Chatting with friends
Game Interactions
Design Overview
The GGZ server (ggzd)
Interactions between ggzd and running games
Interactions between ggzd and config utilities
Individual Game Servers
Config Utility
Key Subsystems
Options Parser
Login/User Database
MOTD System
Player Statistics
Module loading
Data Structures
Protocol Reference
Messages sent in both directions
SESSION -- Session start
Server to client messages
PING -- Lag measurement challenge
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
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
Client to server messages
PONG -- Lag measurement response
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
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
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