|
Looks good! There's a lot of moving parts for such a wide array of functionality, so this looks like a lot of really good work! If nothing else, it's nice to have a game engine that focuses on tabletop games, that doesn't necessarily focus on how to render said games. All of that said, as someone who has developed a card and dice game, using plain html and javascript to create a programmatic version that could be played online, I am still having a hard time figuring out how to recreate that kind of thing, using your system. Based on the docs, I can see it supports cards. And based on my experience developing the same basic gameplay, I can see that it's general-purpose enough to be suited for a wide variety of games (and my game is simplistic, so it should be possible). Feels like it should be a pretty straightforward build, with a robust enough library, and yours seems to be fairly robust, so my thinking here is that a step-by-step tutorial would go a long way. I know enough to see why you've chosen the abstractions you have (Actions, Flows, selections, conditions, prompts, etc), but without seeing them constructed, it's hard to know where to make the specific changes I would want to make. Anyway, just one opinion! It may feel more straightforward to other people. But I don't think I would personally make much headway with it, without a tutorial. |
So for game you'd need your dice and your cards to be defined subclassing `Piece`, and give them to your players (which subclass `Player`) and maybe also to a Teller (also `Player` who manages the deck, before thinking about which instances of `Space` you'll need to set up on your board for your rules.
Your rules all in an instance of the `Game` class and it itself has this concept of actions, at their core instances of the `Action` class. Those take arguments that allow you to write the prompts for the user, define when the action is legal in play, and what effect it should have.
Beyond that the API then just kicks in and seems to have a lot of handy functions for finding pieces, making comparisons, all the stuff you expect. Beyond that just depends on your game logic.
There's also some handy functions to filter for different Spaces and Pieces so that you can build up the UI logic quite quickly, judging by the examples.