<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >The Protocol</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="GGZ Gaming Zone Client/Game Client Protocol Specification" HREF="index.html"><LINK REL="PREVIOUS" TITLE="Objectives" HREF="f19.html"><LINK REL="NEXT" TITLE="Connected phase" HREF="x38.html"></HEAD ><BODY CLASS="CHAPTER" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >GGZ Gaming Zone Client/Game Client Protocol Specification</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="f19.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="x38.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="CHAPTER" ><H1 ><A NAME="PROTOCOL" ></A >Chapter 1. The Protocol</H1 ><P > Communication between client and game client happens by means of binary tokens (opcodes), which are of type integer, followed by zero or more opcode-specific variables which can be of type integer, character, or string.</P ><P > At each point in time, a game client happens to be in a specific state. Messages received from the core client may lead to state changes, as may some explicit transitions being executed by the game client itself. A list of all states can be found in the <A HREF="r1054.html" > appendix of states</A >.</P ><P > Several actions refer to seats on the table the game is being played on. Each seat can be either empty or have an assignment. A full list can be found in the <A HREF="r1012.html" >appendix of seat assignments</A >.</P ><P > Interactions are presented here categorically. For a complete reference of game client/core client interactions, please see the <A HREF="a51.html" >appendix of messages</A >.</P ><DIV CLASS="SECTION" ><H1 CLASS="SECTION" ><A NAME="STARTUP" >1.1. Startup</A ></H1 ><P > Each game client starts up in CREATED mode. In this step there is no information about seats or players yet. The only useful action is to wait for a GAME_LAUNCH message so the transition to the CONNECTED state can happen. Games can query whether they run on GGZ or not via the environment variable GGZMODE. </P ><P > In order to carry out the transition to CONNECTED, the game client must connect to the core client. It does so by reading out the value of the environment variable GGZSOCKET, and then either uses this value as file descriptor, or (if no sockets can be passed directly) as local port to connect to. In the former case, GGZSOCKET defaults to the value 103. </P ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="f19.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="x38.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Objectives</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Connected phase</TD ></TR ></TABLE ></DIV ></BODY ></HTML >