Skip to content

Latest commit

 

History

History
103 lines (91 loc) · 4.32 KB

README.md

File metadata and controls

103 lines (91 loc) · 4.32 KB

Welcome

This is a personal project not intended to make money. This is based on the game Lost Cities. https://boardgamegeek.com/boardgame/50/lost-cities

Board Game Design

Just putting this here, for now.

The board:
+-----------+-----------+-----------+-----------+-----------+
| Opponent's score: 12                                      |
+-----------+-----------+-----------+-----------+-----------+
|           |           |           |           |           |
|  +-----+  |           |           |           |           |
|  |  5  |  |           |           |           |           |
|  +-----+  |           |           |           |           |
|  |  4  |  |           |           |           |           |
|  +-----+  |           |           |           |           |
|  |  3  |  |           |           |           |           |
|  +-----+  |           |           |           |  +-----+  |
|  | wgr |  |           |           |           |  | 10  |  |
|  +-----+  |           |           |           |  +-----+  |
|  | wgr |  |           |           |           |  |  9  |  |
|  | Red |  |           |           |           |  | Ylw |  |
|  +-----+  |           |           |           |  +-----+  |
+-----------+-----------+-----------+-----------+-----------+
|    Red    |   Green   |   White   |   Blue    |  Yellow   |
|           |           |           |           |           |
|  +-----+  |  +-----+  |  +-----+  |  +-----+  |  +-----+  |
|  |  8  |  |  |     |  |  |     |  |  |     |  |  |     |  |
|  | Red |  |  |     |  |  |     |  |  |     |  |  |     |  |
|  +-----+  |  +-----+  |  +-----+  |  +-----+  |  +-----+  |
| 3 in pile |           |           |           |           |
|           |           |           |           |           |
|    Red    |   Green   |   White   |   Blue    |  Yellow   |
+-----------+-----------+-----------+-----------+-----------+
|  +-----+  |  +-----+  |           |           |           |
|  |  8  |  |  | wgr |  |           |           |           |
|  | Red |  |  +-----+  |           |           |           |
|  +-----+  |  |  3  |  |           |           |           |
|           |  +-----+  |           |           |           |
|           |  |  4  |  |           |           |           |
|           |  +-----+  |           |           |           |
|           |  |  5  |  |           |           |           |
|           |  | Red |  |           |           |           |
|           |  +-----+  |           |           |           |
|           |           |           |           |           |
+-----------+-----------+-----------+-----------+-----------+
| Your score: -30                                           |
+-----------+-----------+-----------+-----------+-----------+
Main draw pile: 42 cards remaining

Your hand:
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
|  8  | |  8  | |  8  | |  8  | |  10 | | wgr | | wgr | | wgr |
| Red | | Grn | | Wht | | Blu | | Ylw | | Red | | Red | | Red |
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+

Worklog

Planned

Backend

  1. Implement backend with file storage
  2. Figure out nio task model for backend
  3. See if it's easily possible to separate storage types from API types
  4. Implement match browsing
  5. Implement match history

Frontend

  1. Implement FE as "screens" where each screen is a loop with re-drawing.
  2. Improve card selection (not number based)
  3. Add duplicate rule checks on the FE
  4. Improve board drawer

General

  1. Figure out best way to model error propagation to top level.
  2. Figure out how to make sub-crates tests run during top-level cargo build
  3. Add automated test of a game
  4. Test coverage?

Complete (to some extent)

  1. Implement basics to start a game
  2. Implement main.rs CLI i/o
  3. Implement "dumb" storage
  4. Integrate API into storage
  5. GetState for viewing player
  6. Fully implement GetGameState API
  7. Add rules engine
  8. Rules: updating based on a turn
  9. Implement main.rs user turn selection I/O
  10. Rules: scoring
  11. Implement main.rs board drawer
  12. Rules: handle end game
  13. Split game into separate backend and frontend processes.
  14. Delete 'api' crate and refactor client/server GameApi usage.
  15. Implement main.rs state machine (turns, end game)
  16. Sort card in hand in UI
  17. Review turn before executing
  18. Split frontend into multiple FE processes; one-per-player.