NHP portraits, in-person playtesting, finished HA mechs

(looking back at my calendar) Wow, I went to a lot of conventions in a month!

I’ve done showcase/workshop circuits for my games before, but not since COVID hit. Since the last update here, I attended SIX, PAX, and QGCon. Most large spaces and gatherings are still fairly inaccessible to me ‘cause people got tired of wearing masks, but I was able to make it through all three without catching the rona. Nice! (Worth noting that I felt genuinely safe at QGCon — the organizers put a lot of care into setting up air filters and setting clear mask policies)

Going to SIX and PAX was the first time Carpenter, Josh, and myself have been in the same physical space. My strongest memory from the trip is walking along a lake with them in the gathering dusk talking about our hopes, dreams, and politics of what we want to make of LT. We then got midnight pizza and root beer as we talked about possible futures beyond this project. The sorta stuff that’s impossible to swing on the weekly video call standup.

Look at the arts and crafts I did to make signage for a little play station for LT at QGCon!

A staples-printed poster being mounted on cardboard using a box cutter and gluestick. Lancer Tactics modest booth with signage, laptop running the game, and stickers.

It’s also the first time I’ve showcased LT in-person, and got I think literally like six pages of playtesting notes & todos out of it. I watched SO many people play through the tutorial. Some takeaways:

  • the d20 system has a crazy amount of variance. Some folks cleaned up the starting enemies in one turn while others struggled through no fault of their own for like eight turns before dying. We’re not currently cheating rolls in the tutorial but this makes me want to start — we’re otherwise statistically guaranteeing some percentage of players are going to just have a super depressing introduction to the game.
  • folks really want to be able to click around the map to inspect it, but our move-by-default clicking controls kind of makes that impossible. We may end up making clicking the map show stuff by default and you have to double click or something to actually move.
  • people who have never played Lancer actually did fairly well picking things up! I was worried that we were leaning too heavily on outside-of-game knowledge of the system, but at least for the tutorial there seems to be enough of an on-ramp that it’s feasible to pick up and play LT.

But even with all that traveling and nonsense, we’ve made a buncha progress! Check out this big changelog! Wow! I haven’t made as much progress as I’d have liked to on finishing all the talents & NPCs because of a larger-than-typical bug load (big thanks to Marko for staying on top of the QA reports!), but that’s the nature of game dev.

Warning: I upgraded to Godot 4.5 and it’s been mostly fine but I’ve noticed a few inconsistent crashes/long load times since then. As always, please let me know if you run into any unexpected technical glitches. (I am getting weary of getting hit with unassailable engine/graphics bugs here… I love Godot, but I’m noticing this is as a pattern) (The AMD graphics card thing is resolved at least)

Changelog

Project

  • Paid Steam their $100 to start setting up Lancer Tactics in their backend. The plan is to get a page up to start collecting wishlists as soon as we get a short trailer made. This’ll simmer on the backburner while we wrap up our Kickstarter obligations — just to start preparing for an eventual release over there sometime late next year.
  • Created new Discord server for specifically Lancer Tactics. It’s still private while we get it set up & find how we want to handle community management.

  • We’ve contracted Alicia Feng (CORVIDAY) to draw the rest of the hundreds of system/trait/weapon action icons that we still need. I am SO PSYCHED about this, their work is absolutely stunning. Here’s a few of the new icons, fresh off the presses:

Alicia's new icons in the action bar.

NHPs

Lancer famously has a lot of names you have to pick on your character sheet. There’s your pilot name, your pilot callsign, and also your mech’s name. But here on the Lancer Tactics team, we ask the big questions. The questions nobody else is brave enough to ask. What if you could pick just one more name?

A character sheet with a section for NHPs

Introducing the NHP portrait maker! If your mech has an NHP equipped, this section will show up allowing you to both name your paracausal co-pilot and play dress-up even more by having a second entire character to make in the LT piccrew. This companion will show up alongside your pilot in most places in the UI. Right now they’re all Cortana-blue, but we plan on giving them the option to be other colors in the future (alongside more chromatic flexibility in general in the portrait maker).

NHP portrait maker

I still haven’t implemented cascading, so for a limited time only you can get traumatized alongside your favorite paracausal friend without risk of them becoming an elder god.

Here’s all the standard-line NHPs! I’ve left them all conveniently unlabeled so you can play a little guess-who’s-who.

Oh did you think alt text would help? Nah it's just 9 NHPs in a grid.

New content

Gameplay

  • Remaining HA license implementation: Saladin, Napoleon, and Iskander.

HA mech license ring

Oh lol right this is a hella buried lede. All player mechs are ingame now. Yayyy. (sorry, I finished them like three weeks/an eternity ago so have already gone through the emotional catharsis of summiting this particular peak)

OH ALSO I made a tier list of how hard each mech was to implement in Lancer Tactics! This post is already too long, so I’ve broken the rating scale and anecdotes out into its own post here.

All core book mechs arranged from S to F tier

  • Bonded I, II, III; able to choose a fellow lancer from the current squad
  • Juggernaut I, II, III
  • Technophile I, II, III
  • Implemented COMP/CON system; can hand over control to an AI and have the computer drive your unit for that turn
  • Handing over control to the AI is available for all NHP systems
  • Handing over control to AI lets it make overwatch decisions (and any other Y/N question) (it always answers “yes”. YMMV)
  • Added Zero-G map “weather” that puts everyone in zero-g (currently, all NPCs will be slowed lol)
  • Add some more tips to tutorial: explain 2 quick actions + speed / structure / stress
  • Add a tutorial line about shooting both pistols as part of the same action.

UI

  • Raleigh and Blackbeard tokens from Gen! Fantastic work as always.

Raleigh and Blackbeard in the catalog ring

  • A bunch of new portrait assets from Martina
  • Can open character sheets mid-battle
  • Show the increased damage for Engineer’s Prototype Weapon in the character sheet at rank 3
  • Added inline glossary tooltip system where you can hover over words in descriptions to get a sub-tooltip. These will slowly roll out as we update our massive game text spreadsheet with the appropriate annotations.

A tooltip for grapple with highlighted words that can be sub-tooltiped

  • Added little speech blips for speaking characters…… which caused me to have to recompile the sound banks…. which broke version compatibility somehow on windows…… which I could only figure out how to fix by upgrading the FMOD plugin…… which required upgrading to godot 4.5. What an avalanche of changes by one tiny change. 😐
  • Text blips also play for barks and boss intros. I assume. I implemented it on my PC laptop while traveling and it can’t play sound because a lady once bumped into it and broke off my headphone aux cord in the socket and then I accidentally superglued it in there while trying to get it out so I was flying by my instrumentation on this one.

Ability FX

  • Added a batch of new FX from Jude incl a sick blue flamethrower for the Plasma Thrower that I don’t have a screenshot for rn but you should go check it out ingame.
  • Blue line connection effect for metahook and investiture
  • Burn damage now persistent and animated
  • Added lingering smoke fx, replacing the placeholder static sprite with the cool new smoke particles

Smoke cloud with a lotta particles

Editor

  • Add subcategories for landscape items
  • Show controls for cycling variations and total number of variations possible for setpieces/doodads.
  • Attached lights to streetlight doodad
  • Blocks can have different types of rubble (buildings destroy to metal rubble, etc)
  • Randomize rotation for some setpieces & doodads (toggleable via checkbox at bottom of palette)
  • Editor warns you when you’re about to exit with unsaved changes
  • Can flood fill setpieces & doodads
  • 1/2/3 hotkeys to switch to blocks/setpieces/doodads
  • Kinda janky implementation of shifting selected palette item with ]/[ but it’s something
  • Hide painting object when mouse leaves the map
  • Hold alt for a temporary editor eyedropper

New 3d assets, including:

  • 3D trees! There’s more to iron out about them, but finally pulled the plug on them being the only non-mech environmental asset. I also like how many more types we have, incl cypress, olive, baobab, sycamore, acacia, ponderosa, and pear.

A bunch of 3D trees on a test map

  • Big obelisk
  • Crop rows
  • Vine trellis
  • Planter variants

  • We also have some test 3D models of smaller bushes like blackberry and sagebrush, but are still dialing in how we want to do smaller foliage. We did an art test for adding simpler scattered grass like this but it hasn’t made it into the build yet: Simple 3D flat planes with grass scattered throughout a map.

Bugfixes

Engine

  • Polished payload movement so it doesn’t fall off each time you take a step up a ledge ++ give it an EVA so it doesn’t sink in the water.
  • Gain self heat before followup attacks on a weapon mount
  • Wrecks no longer get cover from themselves
  • Refactored attack sequencing so it waits for all attack rolls to finish before rolling damage, which fixed OPCAL CB bonus damage getting used up on misses as well. (this single thing took like 3 days lol but simplified a lot of stuff)
  • Reactions can be marked as “count as free actions” for brace restrictions, which keeps integrated weapon CB from triggering on that turn.
  • Fix attacks running multiple times when there’s a knot of nested variant actions (such as triggering disdainful blade from a weapon you could also throw)
  • Fix knockback being able to go in any direction, regardless of what the UI claimed was possible
  • Don’t double-apply armor when an attack deals multiple damage types
  • Default to saving json files (pilots, maps) in human-readable format (also easier for git to merge changes)

Systems

  • Turrets drones no longer offer to shoot allies
  • Add missing accuracy to liturgicode
  • Add missing accuracy to variable sword (and a test to hedge out this reoccurring again)
  • LUCIFER is now correctly limited 2
  • Tlaloc protocol correctly costs 2 self-heat
  • Stabilizer mod is not unique
  • Fix scylla not being able to attack with melee weapons
  • Can use ordnance weapons after bracing
  • Can re-up active camouflage
  • Avenger Silos (and many other on-attack rxns) now correctly require the triggering target to be a character
  • Snicker-snack trigger requires LOS
  • No sneaking in firing a vorpal gun via the second attack in a aux/main sequence
  • Can no longer bentham/foucault off turn
  • Fix zero in being able to be used more than 1/round (I’ve said that before though 😅 )
  • Disable bolster if you have no allies
  • Smite/sear/beckon only do self-damage if you hit
  • Mimic mesh only lasts until end of next turn instead of for the entire match
  • Fix ghostweave lose/gain invisibility at the start of turn also breaking hidden
  • Fix having retractable profile equipped causing ghostweave invisibility to always deactivate at end of turn if you moved

  • Sekhmet activation no longer persists between combats
  • Sekhmet can stand up
  • Improve sekhmet flowcharting to activate & check after any player action, not just ones that add more action points
  • Fix softlock when sekhmet wants to attack a symbiosed goblin on a size 2+ unit

  • Getting stunned by basilisk cancels all attacks in the AOE
  • Getting stunned while on a mule harness no longer also knocks off everyone else riding
  • Getting knocked off mule harness now correctly makes you prone
  • Destroying a MULE harness while there are riders correctly ends their attachment
  • Fixed AOE burst calculations while riding a mule harness
  • Armor lock plating doesn’t trigger when you already have knockback immunity (ie when riding mule harness - a modification I had to make to stay sane in LT)

  • Delayed fire pinaka missiles can target empty tiles + does not double-gain self-heat
  • Fix plasma thrower flames (and other props) from being damaged by aoe effects
  • Fix plasma thrower being able to put down flames in prev attack areas
  • Plasma thrower line variant’s attack fx now looks like a line instead of a cone
  • Fix AOE attack fx pointing at 0,0 when they have no valid target unit in their area

Movement

  • Gaining flight from being underwater with EVA actually removes the prone condition instead of just suppressing it.
  • Cannot clear underwater slowed via stabilize
  • Cannot jump while prone
  • Cannot hunter I lunge while slowed/immobilized
  • Puppet systems no longer allows you to send your target up a vertical wall for free
  • Fix not being able to knockback flying units up elevation
  • Cancelling duat first gate movement clears the NPC’s speed so they can take no standard movement
  • Fix long range teleports failing

Repairs/character build/talents

  • Balor self-perpetuating healing happens automatically instead of doing the discount repairs thing
  • Full repair now correctly restores core power
  • Destroyed weapons/systems no longer persists between fresh runs of a playtest map or tutorial.
  • No longer able to use core bonuses on integrated mounts
  • Executioner talent tree now works even when target dies
  • Sort grunts/deployables to back of attack so nuccav doesn’t get used on them
  • Fixed attaining centimane 2 breaking centimane 1 and 3

UI (targeting)

  • Multi-target lines (Drake fortress protocol) now calculated with correct start tile for size 2+ units
  • Invalid movement endpoints from terrain no longer count as free tiles to deploy stuff to
  • Indicate turret attack target when asking to confirm
  • Fix disambiguate choice never clearing its “using action” ui panel
  • Move “current target(s)” counter for abilities to the right of the screen to not overlap with using action panels

UI (tooltips)

  • Show speed and sensor range in unit inspector
  • Did a pass over all PC kits to make sure the right actions show up in kit tooltips
  • “1/1 scene” instead of “0/1 scene” when you haven’t used something
  • Show mimic gun rolls in tooltip
  • Show boost tooltip when asking about boosting
  • Show “7%” in attack preview instead of “07%”
  • Skip showing basic weapon range in tooltip if you have a line/cone pattern
  • Kit tooltip shows topbar if it costs SP
  • Fix missing trigger text for tach loop and tacsim

UI (battle log)

  • Hack/slash ongoing effect uses correct text description
  • Battle log doesn’t omit the names of units that are different but happen to match
  • Saves are called as such in the battle log (instead of checks)
  • Don’t update unit statuses at start of combat until after we’ve applied passive buffs (fixes Slowed showing up before the EVA kicks in)
  • Fix all checks being logged as “contested”

UI (character sheet/roster)

  • Show weapon mounts for frames in catalog ring
  • Can clear integrated weapon CB mount slot
  • Fix missing fuel rod gun
  • Added missing roles to dusk wing in catalog ring
  • Fix catalog ring hexes being drawn over mechs lower down
  • Pilot roster can handle non-standardized pilot file names, but renames them to its preferred format
  • Added confirm button to pilot roster renamer to make it clearer that it’s not saved until confirmed
  • Renaming pilot folders doesn’t try to include the number of pilots in the folder name
  • Fixed bug with portrait maker where it doesn’t save all choices for multipick slices
  • Can add custom barks to the “unknown” empty barkset
  • Pilots no longer yell at themselves for friendly fire after having damaged themselves

AI

  • Archers no longer suppress suppressed targets
  • Fix case of npc getting stuck in loop walking back and forth out of a zone
  • AI doesn’t ditch its current controlled sitrep zone to get into another one

Editor

  • Fix being able to make overhangs at the top elevation layer with the terrain paint tool
  • Fix lockup on placing large swathes of terrain blocks
  • Can go up to 60x60 map appropriately… I don’t know why I had it at 59x59
  • Fix on crash on resizing a map that has zones

Progress summary

As always, you can download the latest build (0.4.1) via itch.io, and if you backed at an appropriate level obtain a free download key to do so via Backerkit.

By my count, here’s what the current content progress bars look like:

  • PC mechs: 29/29 🌟
  • Core bonuses: 30/30 🌟
  • Talents: 26/29 (remaining: Siege Spec, Leader, and Skirmisher)
  • Sitreps: 4/6 (remaining: Control and Recon)
  • NPC mechs: 12/30 (+gotta Rebake everything)
  • NPC templates: 2/12

With 6 months left for the target 100% mark in March… that’s 1.25 NPCs and about half a template per week for me, on average. With everything else that goes into making a game on top of that (e.g. Dia’s campaign module, which thankfully Carpenter + Josh will be implementing using the maps that Eld has already sketched out), ngl it’s looking pretty tight but manageable. We can do this. 💪 ✨

Olive

Implementation Tier List