X-Git-Url: https://git.cworth.org/git?p=lmno-todo;a=blobdiff_plain;f=TODO;h=c33666406a3474c7a89702d5da976912e111d117;hp=d147f100423ecd0ac0f1affdc8b9a0585c0f3151;hb=HEAD;hpb=293a97005f30872dbf5d107e23e015cb5d97f785 diff --git a/TODO b/TODO index d147f10..c336664 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,24 @@ +Ordered list (repeating some of the below) +----------------------------------------- + +1. Fix empathy bug with rejoining (Andrew as Zombie) + +2. Finish implementing Empires + Empathy ======= +Allow players to see what their current name is (currently +disappearining among the list which is sorted by overall score) and to +change their name if desired. + +Fix bug Andrew saw where he went into a Zombie mode: He left the game, +and came back. When he was back his word scores were shown, but his +name was left off the round scores, stayed gray in the overall scores, +and the overall score was never increased. + +Bisect and fix some test-suite regressions introduced recently. + Features (likely) requiring only client changes ----------------------------------------------- * Make new categories appear at the top of the list @@ -22,7 +40,7 @@ Features (likely) requiring only client changes Add a TWINNER achievement -Add support for item counts as words +Add support for item counts as words, such as "three little words" Allow clients to see previous round scores by swiping left @@ -42,3 +60,108 @@ interface in Empathy). Add a chat interface for sending messages to the current empire (with no history beyond a single message per sender) + +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 + + [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 + + [ ] Add UI to ask user for a game ID, (obviating the QRST ID) + + [ ] 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" (or some other game ID) + + [ ] Implement player registration by POSTing to /register (without cookie) + Example: + curl -X POST \ + -H 'Content-Type: application/json' \ + -d '{"name": "Carl", "character": "Elvis"}' \ + https://lmno.games/empires/QRST/register + 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: " followed by the data of the event "data: + " 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"}] + + event: game-phase + data: {"old_phase":"none","new_phase":"join"} + +Scribe +====== + +Fix server to reject illegal moves (not following the previous-move +constraint) + +Extend test suite to cover legal and illegal scribe moves + +Constrain glyph diagrams to not overflow page width + +For a very wide display, put glyph diagrams on the side of the game +board instead of below. + +Detect glyphs and highlight background of squares belonging to glyphs + +Detect winner of mini-grid and overlay sumbol of player on mini-grid + +Declare overall winner (both in "majority" and "superglyph" mode)