I want to make a game that combines:
I've given myself approximately 12 weeks
Really impressed with the await signal pattern in Godot4. An awaitable Signal class would be a cool thing to have in javascript
Ran into a lot of trouble with text rendering in 3d: Godot builtin 3d text is just a texture on a rect… Which gives bad antialiasing results when not viewed straight on.
Workaround is to use Mesh-based text, but that required rewriting all the layout controls to work in 3d.
Went ahead and did that; produced roughly:
Div - base class; exposes a LayoutResult with bounding box & baseline.FlexDiv - arranges content in a line horizontally or vertically. Options for alignment on secondary axis.FlowDiv - arranges content into lines that auto wrap. This doesn't handle space characters at all: instead I split text into a series of words and put each word in a SpanSpan - A single unbreakable piece of text; exposes a LayoutResult.Sprite3D - Div-based containers also support positioning the builtin Sprite3D, so you can put icons inline with text.Produced a CardView that can display cards
Built the battle flow; so you can play cards, target enemies, kill things
Internally there's a lot of state complexity here; there's the battle_state which is a instant representation of the battle. This is used so you can pre-play cards before the previous card is done playing (visually). Then there's also the animation_queue which allows animations to happen sequentially.
play method is roughly:battle_state.get_target(target).hp -= 2animation_quque.push(attack animation)animation_quque.push(update target hp)I'm pulling the idea of character stats from DnD - so each character has 4 primary stats.
Stats are referenced on cards: so a card may read Attack [str], which does damage based on how strong the character is. An accuracy-themed card may use Attack [pre] instead, which makes it good with different builds than the strength equivalent.
Targeting
I like games that let you target enemies or allies, so cards have more targeting options than the minimum self/one enemy/all enemies. Right now I'm displaying that as part of the cost icon, but idk how well that works.

The icon for "costs 1; target one enemy"
A core mechanic is that you're controlling a party of 1-3 characters.
At this stage I have two characters in the game:
Right now Fighter feels a lot like StS's Ironclad or a Dnd Fighter; trying to find ways to make this class more unique while still keeping it simple for new players.
Wind Dancer is supposed to be a more complex character. Right now her primary mechanic is Combo, which triggers an extra effect when the previously-played card was also a Wind Dancer card.

The battle system works! Lots of placeholder art still, but you can fight an enemy to death.
