In the five-bugs devlog I listed my next build item as “the Clockwork construct-summon skill (the animation is fighting me)”. It is still fighting me. This is the post about why — because the problem turned out to be more interesting than “make the robot appear”.
What the skill has to sell
The Clockwork Dominion’s whole identity, in canon, is “self-replicating constructs — no organic life, pure machine”. Their units are not people. They are assembled: robots, clockwork knights, artillerists, overseers, rolled out of gear citadels and assembly lines and titan forges. The lore is explicit that a thousand of them move as one through essence-pulse synchronization — instantaneous coordination, no radio chatter, no command lag.
So when a Clockwork player presses the summon button, the fantasy is not “a creature arrives”. The fantasy is “the machine builds itself in front of you, and it was never not part of the network”.
The first version did not sell any of that. The construct popped in. One frame nothing, next frame a fully-formed unit standing at idle. Mechanically it worked. Visually it looked like every default NPC spawn in every game ever — and for a faction whose entire pitch is “we are the machines that build the machines”, a pop-in spawn is a broken promise.
Attempt one: fly-in assembly, server-side
The obvious fix: assemble it. Parts fly in from off-screen, snap to the rig, optics power on last. It looked great in a local test.
Then I tested it with real latency and learned the lesson the swarm bug already taught me once. That bug was the server spending 40 constructs’ worth of tick updates on cosmetics; this is the same mistake wearing a different costume. Part-assembly positions are cosmetic information, and I was running them through server authority, which meant the “assembly” stuttered at exactly the moments the fight was busiest — which is exactly when players summon.
Attempt two: split authority
The fix that is actually working splits the skill into two halves with a hard line between them:
- **Server owns:** the moment the unit exists mechanically — hitbox, stats, position lock, the pulse that registers it on the Clockwork network.
- **Client owns:** everything the eye sees — part fly-in, bolt snaps, the optic flare, the half-second where the frame stands up under its own power.
The unit is “real” one frame after the summon resolves. The assembly is cosmetic theater wrapped around a real thing that is already there. The player does not know the difference, because the assemble animation is about 0.4 seconds and the hitbox is live underneath it the whole time.
This also fixed the multiplayer case I had been quietly ignoring: on a populated server, thirty other clients need to see the same summon. With server-side part animation that is thirty streams of cosmetic position data. With split authority it is one event — “construct summoned at X” — and every client plays the theater locally.
The detail that made it Clockwork
The version I am happy with borrows directly from the lore. Constructs in canon coordinate by essence-pulse, so the summon now starts with the pulse: a single gold-ring flash at the target point (the Dominion’s colors are silver and dark gold), then parts converge to it in staggered order — leg assemblies, torso core, armature, optics last. It reads as “the network shipped you a unit” instead of “the game spawned a mob”.
Maintenance swarms gave me the tail: after the construct stands, one tiny repair drone peels off and orbits it for two seconds before despawning. Canon says swarms rebuild damaged units in the field; putting one at the end of a summon quietly repeats the faction’s signature on every cast.
What is still fighting me
The optics timing. If the eyes light before the torso settles it looks cheap; if they light after, there is a dead beat where the unit is assembled but reads as off. The current compromise is optics at 80% of torso settle — close, not finished. I will know it is right when I stop noticing it, which is the same bar I used for the reset cinematic.
The lesson that keeps repeating on this project: the server should own truth and the client should own drama. Every time I blur that line, I get a devlog out of it.
Read the Clockwork Dominion faction entry for the canon this animation is trying to live up to — and the lore-check workflow post for how I keep the game honest to it.