Update API
This commit is contained in:
parent
409897562c
commit
b35687d51b
3 changed files with 17 additions and 34 deletions
23
doc/api.org
23
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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue