X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=tictactoe.txt;h=95a706c5d349fa152c3e0839aa07ebc1e8229b6b;hb=refs%2Fheads%2Fmaster;hp=2211a05984ca32d1d30d51eee934f5f7f1d5ec6f;hpb=9426bf42aaa7c88c86de4c3ac02a694df8362fda;p=lmno-api diff --git a/tictactoe.txt b/tictactoe.txt index 2211a05..95a706c 100644 --- a/tictactoe.txt +++ b/tictactoe.txt @@ -26,14 +26,75 @@ For a specific game the following API endpoints are defined. The following event types will be returned by the server: - TYPE: game-state + TYPE: game-info - WHEN: When a client first connections + WHEN: When a client first connects + + WHAT: Static information about the game (will not change) EXAMPLE: + event: game-info + data: {"id":"WXYZ","url":"https://lmno.games/WXYZ"} + + TYPE: player-info + + WHEN: When a client first connects + + WHAT: Information about the current player (ID, name, and team) + + NOTE: The player-info event is unique among player-* events in + that it only describes the player associated with the + current client connection. Meanwhile, player-enter and + player-update events can describe the current player or + any other. The player-info event is significant because + the client may not know its own name other than + receiving it here, (such as if the client offers up a + pre-existing cookie and the server uses that to return a + player name from a server-side session object). + + EXAMPLE: + + event: player-info + data: {"id":0,"name":"Carl","team":"X"} + + TYPE: player-enter + + WHEN: Whenever a new player enters the game. Also: these + events will be streamed out for all existing players + when a client first connects + + WHAT: Information about the new player (ID, name, and team) + + EXAMPLE: + + event: player-enter + data: {"id":1,"name":"Stacy","team":"O"} + + TYPE: player-update + + WHEN: Whenever a player updates their information + + WHAT: All information about the updating player. The ID value + cannot be changed, so it can be used by the client to + know which player object to update. Player may change + either their name, their team, or both. + + EXAMPLE: + + event: player-update + data: {"id":0,"name":"Carl Worth","team":"O"} + + TYPE: game-state + + WHEN: When a client first connects + + WHAT: Snapshot of the current dynamic game state + + EXAMPLE: + event: game-state - data: {"moves":[0,8],"board":["X","","","","","","","","O"],"next_player":"X"} + data: {"moves":[0,8],"board":["X","","","","","","","","O"],"next_player":"X"} TYPE: move