I agree, and the old gamedev in me has started with a client/server split just to keep the ‘core’ separate from the beginning out of habit anyway. I see the touch-points with Discourse being pretty clean, in that my ConsoleClient and DiscoursePluginClient are not that dissimilar so far.
The part I’m not sure about on how far to stretch the custom_field stuff I’m using just to spike this out. The custom text PG value per Topic, per Post, used by Discourse, and some serialization, means that I can store enough in there not to bother with a separate DB store so far. I can match up a new Discourse Topic with a new Game instance and store my ongoing state that way. The ‘Game’ model effectively uses a DiscourseStorageStrategy if I change my mind later and need to move it to AR or something.
I’ll put up a Tic Tac Toe progress so far up on Github when it’s playable. So fun it has been enjoyable to do and play around with. A lot of my time has been bike shedding with MacOS and docker, so that always takes longer than I plan. ![]()