An Invisible Tsunami
I've been quiet, and I've been busy, but it's hard to show most of it off
I've been really busy (on this and with other things in my life), so I've been lax in posting devlogs. Sorry! I've been working hard at getting this ready for a broader playteseting, which is a goal that is at least a couple months away, I think. That said, I've done some light small-scale play testing with close friends and even a couple family members. Anyway, here's some stuff I've got done of the game.
Route Planning and Facing Selection

Before, every way a unit could be moved was handled by automatic wayfinding: you were presented with all the possible places you could move, and wherever you selected was chosen as your final destination. Furthermore, you path to get there and your final facing (which direction your unit is pointing) were chosen for you.
Movement now allows you to create successive waypoints, retaining the route while you plan the next segment. You can cancel the whole preview, finish early, or choose a final facing before committing. Travel and final rotation share one movement budget. Transparent wedges are now presented when selecting facing, which represent "affordable" directions, and turning in place spends movement without granting any evasion stats. Pointer and keyboard controls expose travel, rotation, and remaining-budget previews.

Salvos!
Before, you would choose an attack target, and then you'd hit one of the small buttons in the upper right-hand inspector for which weapon you're firing. It was confusing and hard to find, and what you were allowed to do was not immediately clear.
A mech can now potentially fire several selected weapons at one target using one attack opportunity. Each weapon rolls independently, while the engine validates the complete selection and combined heat before firing.
Attacks now use displayed hit chances influenced by evasion and effective range. Damage remains deterministic when a shot hits. Misses still spend firing heat, but cause no damage, target heat, or damage-triggered effects. The attack interface gained weapon checkboxes, upfront forecasts, remembered per-mech selections, heat warnings, and explicit confirmation. Ablative Shielding protects every damaging hit in the next salvo and survives an entirely missed salvo. Start-of-turn cooling was also restored, including for enemies without decks.

Chance-to-hit and Other RNG Goodness
As I hinted at above, it's getting a little tabletop-y in here!
Previously, any legal weapon attack was guaranteed to hit. Range and line of sight determined whether you could fire, and effective range affected damage, but there was no possibility of a miss.
Now, attacks have a displayed chance to hit. The starting values are deliberately fairly high:
- Lasers start at 95%.
- Cannons and missile racks start at 90%.
- Each point of target evasion subtracts five percentage points.
- Firing outside the weapon’s effective range subtracts another ten percentage points.
For example, a cannon firing at a target with two evasion has an 80% chance to hit. If that target is also outside the cannon’s effective range, the chance drops to 70%. Outside its legal range, the cannon still cannot fire at all.
This gives movement a direct defensive benefit. Travelling grants one point of evasion per hex crossed, lasting until the moving unit’s next turn starts. Turning in place grants none. Distance also presents a tradeoff: a shot can be legal while having both lower accuracy and reduced damage because it falls outside the weapon’s effective range.
The randomness determines whether a shot connects. For now, damage on a successful hit remains predictable, calculated from the weapon, range, defenses, and active effects. The attack preview shows the hit chance alongside what will happen if the shot lands.
Each weapon in a salvo rolls independently, so firing a cannon and missile rack together can produce two hits, two misses, or one of each. Players and enemies use the same rules. A miss still spends the attack opportunity and generates the weapon’s firing heat, but causes no damage or target heat and cannot activate damage-dependent card effects.
Playtesting still needs to establish whether the uncertainty creates worthwhile decisions and how it affects battle length.
Visual Feedback
No animations, rigging, or effects yet, but since we have the added uncertainty of chance-to-hit now, a little bit of visual feedback was needed for hits and misses. I went with a simple "rising number" label. Simple and ephemeral:

In addition to damage and MISS, it also shows OVERKILL and DESTROYED. Also, destroyed mechs topple and remain as marked wrecks. Those wrecks block movement destinations and routes while allowing line of sight through them:

Other Stuff
- Finished three more card types, and did some preliminary balancing of existing cards
- Made improvements to lighting, materials, scale, and camera freedom
- Updated data models to pave the way for stable save files in the future
- Started collecting structured feedback from playtesters
- Set up playtest builds through scripts run in Github Actions (this is a first for me)
- Did a crap ton of planning
The game isn't particularly fun yet, hahaha, but I think that by the end of the year, I'll have a version of it that more closely matches the game in my head.
Wish me luck!