Drawn up in rexpaint (thanks to Kyzrati for the great tool). I've been considering "Ripple" as a name as well, not least because I wouldn't have to do a new design
basic mechanicsIn normal CCG fashion you have your hand, deck, and a board where permanents go. Since this is space your creatures are all spaceships. (space stations will be a thing eventually I assume) They all follow
vector racer style newtonian physics (you can see in the screenshot that the selected ship (the green T) is moving down and to the right). A player's turn has two main phases, separated by a movement phase, where their ships follow whatever vectors they are set to. Ships have power/hull/range and fights between them work in the usual "i hurt you, you hurt me" manner. There's no limit on how many players can be in a game outside of what the ui can display.
The club on the map is a control point, you gain resources at the start of your turn according to the control points you uh.. control. You gain control simply by having units in the point's radius. Unused resources don't go away at end of turn, but I'm hoping the relatively lengthy travel times, a desire to control the map, and restrictions on the distance at which you can summon stuff from your mothership will keep people from just hoarding cards until the last possible second.
The mothership is pretty analogous to a hearthstone hero / duelyst general / MtG player in that when you lose it, you lose. I'm not married to the concept though and might just tie losing to losing all your control points.
implementationThe game is written in pure python, using the libtcod library for rendering. Clients attach themselves to a definitive server which updates/broadcasts the game state and tracks hidden information. The game is all ascii atm obviously, but since libtcod allows full color tiles I could move to that, and I can theoretically stitch as many of them together as I want to get higher res pixel art for cards.
The rules engine is pretty straight-forward. Everything goes on the stack, from individual card effects, to player decisions, to damage, and even turns. The loop is: An item is popped from the stack, it resolves (note that a non trivial card consists of a chain of items which resolve one by one) and then every non-trivial game entity has an option to put things onto the stack in response, then the cycle repeats. For example the game's scheduler reacts to the ending of a turn by placing the next one on the stack. Most stack items have "dummy" declaration/ending items which bracket them, so they can be preempted (for example "whenever ~ would take damage, reduce that damage by 1") and so it can be determined when a higher order event is finished (like your turn which could contain arbitrarily many other items).
Player's aren't included in stack responding, they are only queried when a player response item is popped from the stack. (so they can respond to things, but only when a game entity gives them that option) I may add some "quick phase"s later on to allow a little bit more interaction, but I don't think players will ever have arbitrary stack manipulation abilities, not least because it would be real confusing, and slow things down a lot as you would have to decline to respond to so many things.
todo- pretty up the interface some more, esp it needs hotkeys and a place to display ongoing effects
- add a pilot/captain class of card
- develop a game lobby rather than just connecting to some ip/port, preferably with drafting as I plan to focus a fair bit on that
- write some more complex cards to test out some of the more advanced engine functions like auras and custom actions, and to move towards having enough cards for a proper playtest
- steal some balancing equations from MtG or wherever for a starting point for how to fairly cost things
- I have some general lore figured out but I need to start making factions so I can sub-divide my card pool
- move to 8x16 text instead of 16x16 so reading text is less of a strain on the eyes
- I'm considering adding a once-per-turn discard/draw in the style of duelyst