See it running
What it does
- Boost Points: a 0 to 5 resource that builds on a timer and empowers attacks
- Rags to Riches: every connecting hit pays leaves equal to half the damage dealt
- Hired Help: spend leaves to summon an NPC ally for the round
- Custom animations authored from scratch for the character
The thought
YOMIH (Your Only Move Is Hustle) is a Steam game with a real-time fighting engine I had never touched. The challenge was not drawing a fighter, it was shipping a resource economy inside an engine with a tick architecture I had to learn from scratch. Three systems in, the interesting part became reading someone else's engine well enough to extend it without breaking it.
Mechanics
Boost Points are a 0 to 5 resource that builds on a timer (about 1 BP every 1.67 seconds). Spend them to make a normal hit multiple times, or to add a damage multiplier to a skill. Rags to Riches pays leaves on every connecting hit, equal to half the damage dealt. Spend leaves to buff an attack to 1.5x damage, or to summon help. Hired Help lets you spend leaves to summon an NPC ally for the round. The summon spawns correctly, but the ally does not act yet. Tier, cost, and roster are still in progress.
Systems
Boost Points tick up inside tick_before and auto-consume when you enter an attack or skill state, so the resource spends itself the moment you commit. Leaves are earned on the attacker side through _on_hit_something, which avoids the defender-side wiring trap, and they gate both attack buffs and summons. NPC summon spawns an inherited scene rather than swapping scripts at runtime, which removes a class of vtable bugs.
Under the hood
Working inside YOMIH meant debugging its three-layer tick loop: _physics_process to process_tick to game.tick. The standout was the IOOT race condition: a boosted multi-hit could hand the opponent a turn mid-combo because state_interruptable re-enabled between loop cycles. The fix suppresses the opponent's interrupt flag on hit and every tick after, so the combo resolves on your turn. Other fixes covered projectile direction double-flips when facing left, a missing sub_resource that crashed the scene parser, and a stale hitbox_start_frames dictionary that made unboosted normals whiff. The NPC now spawns without the old vtable crash, but its in-match behavior is the remaining unsolved piece.
What I would do differently
Two economy systems are working and the animation set is growing. The open piece is NPC behavior: the ally now spawns through the inherited-scene path, but its state machine is not driving yet, so it stands idle. Next: wire the NPC's combat logic, tune the leaves cost table, and ship the shop that gates tiers. The bigger takeaway is that ramping on an unfamiliar engine taught me to read tick architecture before writing a line, and that habit is what let the systems ship.