From b35687d51b56c2aafdb6ec5243c53d33b749a933 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Fri, 10 May 2019 08:51:16 +0200 Subject: Update API --- doc/api.org | 23 ++++++++++++----------- doc/api.pdf | Bin 119335 -> 122183 bytes 2 files changed, 12 insertions(+), 11 deletions(-) (limited to 'doc') diff --git a/doc/api.org b/doc/api.org index 25eb9a0..bfabd40 100644 --- a/doc/api.org +++ b/doc/api.org @@ -4,8 +4,14 @@ #+LATEX_HEADER: \usepackage{fullpage} * General Description - - All transmissions will be based on UDP - - All UDP packet will contain plain json data + - All transmissions will be based on TCP because: + - Packet length are not fixed + - Packet ordering is important + - All TCP stream from *client to server* will: + - Contain plain json data + - Be terminated by a "#EOF" line (in order for the server to detect the end of the request + - All TCP stream from *server to client* will contains plai json data (connection will be closed by the server + so there is no need of "#EOF". * Communications ** Initialisation 1. Server wait for a client @@ -14,36 +20,33 @@ { "type": "new-game" } + #EOF #+END_SRC 3. Server can reply: #+BEGIN_SRC json { "type": "state", - "syn": 1, "game-id": 1, "game-over": false, "snake": [[1,2],[1,3]], "food": [[6,7]] } #+END_SRC - Note that, syn entry is used to keep packet ordering consistent and detecting packet inversion on the network. Thus, - syn entry indicate the expected syn that the client should send on the next UDP packet. ** Gameplay *** Change Direction 1. When client is playing a game it can ask to the server to change snake direction: #+BEGIN_SRC json { "type": "update", - "syn": 1, "game-id": 1, "direction": "left", } + #EOF #+END_SRC 2. Server can reply #+BEGIN_SRC json { "type": "state", - "syn": 2, "game-id": 1, "game-over": false, "snake": [[0,2],[1,2]], @@ -55,16 +58,15 @@ #+BEGIN_SRC json { "type": "update", - "syn": 2, "game-id": 1, "direction": null } + #EOF #+END_SRC 2. Server can reply: #+BEGIN_SRC json { "type": "state", - "syn": 3, "game-id": 1, "game-over": false, "snake": [[1,2],[0,2]], @@ -76,11 +78,10 @@ #+BEGIN_SRC json { "type": "state", - "syn": null, "game-id": 1, "game-over": true, "snake": [[0,2],[1,2]], "food": [[6,7]] } #+END_SRC - - No reply is expected from the client and server will be in charge to free local memory. Note that syn=null. + - No reply is expected from the client and server will be in charge to free local memory. diff --git a/doc/api.pdf b/doc/api.pdf index b2b5cc9..902dc6b 100644 Binary files a/doc/api.pdf and b/doc/api.pdf differ -- cgit v1.2.3