]> git.cworth.org Git - lmno-todo/blobdiff - TODO
nogit-sync commit
[lmno-todo] / TODO
diff --git a/TODO b/TODO
index 43948d73300b618f6f85720e4295adfaf6684e28..c33666406a3474c7a89702d5da976912e111d117 100644 (file)
--- a/TODO
+++ b/TODO
@@ -66,9 +66,11 @@ Fix bug that allows people to re-reveal characters after game has started.
 Flempires (flutter-based client)
 --------------------------------
 
+Experiment with minimal flutter build environment (only lib/ in git)
+
 Bring client up to latest Empires API approach
 
-  [🗸] Pre-allocate a game ID in the server for flempires to use (QRST, say)
+  [X] Pre-allocate a game ID in the server for flempires to use (QRST)
 
   [ ] Change flempires from using https://families.cworth.org/api to
       instead use https://lmno.games/empires/QRST
@@ -78,7 +80,7 @@ Bring client up to latest Empires API approach
   [ ] Add UI to generate a new game ID, (allow flempires to work on its own)
       Example:
                 curl -X POST https://lmno.games/new/empires
-                Returns: "WLJG"
+                Returns: "WLJG" (or some other game ID)
 
   [ ] Implement player registration by POSTing to /register (without cookie)
       Example:
@@ -86,9 +88,64 @@ Bring client up to latest Empires API approach
                      -H 'Content-Type: application/json' \
                      -d '{"name": "Carl", "character": "Elvis"}' \
                      https://lmno.games/empires/QRST/register
-                Returns: 1 (Or some other player ID value)
+                Returns: 1 (or some other player ID)
+
+  [ ] Implement registration with /profile and then /register
+
+      Note: This approach requires obtaining a cookie from the
+      /profile request and then providing that cookie on the
+      subsequent /register request. The -c and -b command-line options
+      of curl can be used to demonstrate this:
+
+      Example:
+                curl -c cookie-file \
+                     -X PUT \
+                     -H 'Content-Type: application/json' \
+                     -d '{"nickname": "Cookie"}' \
+                     https://lmno.games/profile
+                curl -b cookie-file \
+                     -X POST \
+                     -H 'Content-Type: application/json' \
+                     -d '{"character": "Cookie Monster"}'
+                     https://lmno.games/empires/QRST/register
+                Returns: 2 (or some other player ID)
+
+  [ ] Listen to the /events stream for the game
+
+      This will require an asynchronous mechanism that is continually
+      listening for events to come in. Events will be of the form
+      "event: <event_type>" followed by the data of the event "data:
+      <json_data_for_event>" followed by a blank line. There will also
+      be periodic keep-alive non-events sent which are just a line
+      with only a ":".
+
+      This mechanism is called "Server-sent events" so you may find
+      code that supports the parsing of this. Or you may not. It
+      doesn't seem like this mechanism ever became all that popular
+      (before websockets came along and became popular).
+
+      Example:
+
+                curl https://lmno.games/empires/QRST/events
+                Returns:
+
+                   event: game-info
+                   data: {"id":"QRST","url":"http://lmno.games/QRST"}
+
+                   event: player-info
+                   data: {"id":5,"active":true,"name":"Cookie","team":""}
+
+                   event: player-enter
+                   data: {"id":2,"active":true,"name":"Web","team":""}
+
+                   event: game-state
+                   data: {"team_to_play":{"name":""}}
+
+                   event: players
+                   data: [{"id":1,"name":"Carl"},{"id":2,"name":"Cookie"}]
 
-  [ ] Implement registration with /profile and then /register (requires cookie)
+                   event: game-phase
+                   data: {"old_phase":"none","new_phase":"join"}
 
 Scribe
 ======