A day that was mostly about what you can see in the hands of the two players.
Shots came from the wrong place
A held weapon was drawn in the hero's hand, but shots spawned at the player's centre plus 0.85 along the aim direction. The gun and the bullet had nothing to do with each other.
Of the 19 weapons, many are not guns at all: a spade, a goose, a hose, plates. Each one needs its own idea of where "the front" is. The held model is also pitched to match the raised arm, so the barrel is level and points where the shots go.
- Every weapon has a barrel length in a table.
- Shots, muzzle flashes and ejected casings now start at the barrel tip. If that point would be inside scenery, it is nudged back out.
- The shot is aimed to converge on the player's aim line, so a hand held off to one side never makes a shot miss.
- Beams, cones and lightning start at the gun too.
Checked in a real browser, for both players: all 19 weapons swapped forward, backward and back again with exactly one model attached each time. Every projectile weapon spawned between 0.73 and 1.13 ahead of the player's centre and 0.25 to 0.27 to the side.
The swap logic itself did not change. Every pickup, spend and restart already went through one function that disposes the old model and attaches the new one, which is why the guarantee holds.
A second hero, tried twice
Player two is no longer the old build. She is a new hero in the same 1950s style as the first: a cherry varsity jacket, cream blouse, mustard neck scarf, rolled capri jeans, saddle shoes and a ponytail with a bow that swings with her stride. She shares the first hero's bone layout and animation contract but has her own geometry cache, so nothing she does can touch the first hero's art. The old build stays one setting away.
The first pass was reviewed by eye and found wanting, and the corrections are the useful part:
- A long nose became a small button nose.
- Bigger eyes made her look angry. Raising the brows fixed it.
- Her legs were short, so the hips, torso, arms and head moved up by 0.08 and the shin and shoes moved down.
- The jacket badge sat at the waist, where it read as a belly button. It is a chest crest now.
The reverb was accumulating
The audio had one shared 2.6-second reverb, with wet sends from every effect and from the music. Some per-sound sends were attached to buses that persist, so they stacked up over time. Removing the shared convolver, the sends and the generated impulse removed both the sound and the build-up. Dry volume, stereo positioning and the recordings are unchanged.
Neighbors, in two bodies
Neighbors now share two base bodies, a male one and the existing female one, with deterministic wardrobes drawn from eight palettes. The male body is an imported model with its own skeleton and walk, run and panic clips, trimmed from an 18.84 MB source to a 3.54 MB runtime file with 1024 px textures. A shader recolours the shirt and trousers and leaves skin alone. The female body takes separate jacket, trouser and accessory colours and has its own idle, walk, flail, fall and tool-swing poses.
All 25 residents are checked: at least six distinct shirt palettes, finite transforms through walk, abduction, fall and attack, and a clean rollback to the original art.
The split screen came back
Removed on the first of the month, restored today. It is not the old one. The view splits by distance: two full camera views with a diagonal seam when the pair is far enough apart, one shared view when they are together again, and a thin line between teammates. The mouse camera is per player again, and cinematics and hubs override it.
The original source from before the removal was not recoverable from backups, so this was rebuilt from the design specs and the removal script. It matches the behavior and not necessarily the code.
The bot had to learn the new camera. It now interrupts active tractor beams, protects recruits, releases rescue claims that have gone stale, and keeps its stuck detection across a change of goal. Five scout runs, one per district, all reached extraction with both players alive. They still log recovery events (3, 1, 4, 4 and 4), so snags remain, but none became a permanent deadlock.
No dither
The ordered 4x4 pattern adopted for the roof cutaway on the first is gone. Occluders use a solid cutaway now, and no Bayer pattern remains in the source or the compiled assets.
