aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/api.org76
-rw-r--r--doc/api.pdfbin0 -> 118915 bytes
2 files changed, 76 insertions, 0 deletions
diff --git a/doc/api.org b/doc/api.org
new file mode 100644
index 0000000..2d0046c
--- /dev/null
+++ b/doc/api.org
@@ -0,0 +1,76 @@
+#+TITLE: Remote Snake API
+
+#+OPTIONS: toc:nil
+#+LATEX_HEADER: \usepackage{fullpage}
+
+* General Description
+ - All transmissions will be based on UDP
+ - All UDP packet will contain plain json data
+* Communications
+** Initialisation
+ 1. Server wait for a client
+ 2. Client can send:
+ #+BEGIN_SRC json
+ {
+ "type": "new-game"
+ }
+ #+END_SRC
+ 3. Server can reply:
+ #+BEGIN_SRC json
+ {
+ "type": "state",
+ "game-id": 1,
+ "game-over": false,
+ "snake": [(1,2),(1,3)],
+ "food": [(6,7)]
+ }
+ #+END_SRC
+** 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",
+ "direction": "left",
+ }
+ #+END_SRC
+ 2. Server can reply
+ #+BEGIN_SRC json
+ {
+ "type": "state",
+ "game-id": 1,
+ "game-over": false,
+ "snake": [(0,2),(1,2)],
+ "food": [(6,7)]
+ }
+ #+END_SRC
+*** Refresh Screen
+ 1. When no key are press (the snake is simply going straigth forward). So, client can send:
+ #+BEGIN_SRC json
+ {
+ "type": "update",
+ "direction": null
+ }
+ #+END_SRC
+ 2. Server can reply:
+ #+BEGIN_SRC json
+ {
+ "type": "state",
+ "game-id": 1,
+ "game-over": false,
+ "snake": [(1,2),(0,2)],
+ "food": [(6,7)]
+ }
+ #+END_SRC
+*** End Game
+ - When game is over server will send the following state message (switch game-over to true):
+ #+BEGIN_SRC json
+ {
+ "type": "state",
+ "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
diff --git a/doc/api.pdf b/doc/api.pdf
new file mode 100644
index 0000000..931ccca
--- /dev/null
+++ b/doc/api.pdf
Binary files differ