// DEV DIARY · 11 MIN READ

17 October 2026

A long day with eight Claude sessions working in parallel on one Unreal project, sharing one build slot. The developer was away for most of it, so one session coordinated the others:

  • who builds next;
  • who owns which file;
  • which design questions go back to the human.

By evening the game had a much better character designer, its own hair and beards, real water and lava, zombies, a credits screen and a stack of performance fixes. Here's how it went.

The character designer grows up

The designer used to be a narrow column beside a colonist standing in the middle of the screen. Now the panel is wide, and the colonist stands on a clean white stage. The camera pans so the character sits in the space the panel leaves free, which matters more than it sounds: you can finally see the whole body while you edit it.

Face features always have a version. Every face feature (eyes, nose, mouth, ears, head shape and so on) now always has a version picked, 1, 2, 3 and up. At strength 0 it shows the default face; turn the strength up and the chosen version takes over. Before, strength 0 lost track of which version you'd picked.

New sliders:

  • Hand size and foot size: from the body's own size up to double.
  • Nose-ridge softness.
  • Ear rotation: turn the ears outward for "antenna" characters.
  • Head shape: head shapes from every source face, as an accent.
  • Muscle definition: a depth layer on the musculature, driven by the Mercenary's muscle map.

Wider ranges. The silly end of the face got sillier: eye tilt, nose length and width, and ear prominence all reach further than before. Head and eye size were re-tuned so the smallest setting is a sensible face.

New default faces. The Polyart characters' faces are the defaults now, and Kavya is back as option 1. The male Polyart version drops its eyes and cheeks, because its stylized lids landed as heavy bags on our heads.

A dev tick for tuning. Every slider can show its current value and its limits as numbers, so range feedback can be precise ("the nose stops too early at 1.15") instead of vague.

Feet were a lesson. The first version scaled the foot bone uniformly from the ankle, so big feet also swelled the ankle upward and pushed the sole into the floor. Now the foot grows only along its length and width: the axis nearest vertical keeps its size, so the sole stays on the ground.

Other designer changes:

  • Cartoon eyes for everyone: the stylized eyes from the "Toon 3D 8" character, sized to our eye sockets and following them through every age.
  • Streamer mode is a new option, on by default.
  • Adult anatomy was added for grown-ups only, with hard protections so children never get any of it.

Bodies

  • Mercenary: his body shape is now an option for men, his face is a new face version, and his muscle detail became the muscle-definition layer. About 82% of the muscle map transferred cleanly into our layout; the side bands still need a pass.
  • Sentinel: the late-game body is now a proper body-type button next to Average, Slim, Athletic and Heavy, adults only. Its hands and feet had been badly broken. The cause: finger and toe vertices weren't tied to the arm and leg bones, so they snapped onto the source model's own pose. They now keep their shape from their own bones.
  • Garment fitting got smarter. Clothes used to copy each body's shape changes from one nearest vertex, which opened gaps in loose shorts. Now they blend from the skin triangle underneath, and a small minimum gap keeps them off the skin.

Names, IDs and xenotypes

A colonist card with nickname and full name
A colonist card with nickname and full name

Every character now has:

  • a nickname, which is required: the designer won't let you clear it;
  • an optional first and last name, each rolled on its own from a pool built from 14,199 rows (375 first names, 367 last names and 707 nicknames), so you get random mixes like Zoe "Codo" Peters;
  • a permanent numeric ID that can't be edited and is never reused;
  • a xenotype.

The ID didn't need inventing: the game already had one for saves and multiplayer, and the names work simply reuses it.

The nickname is what you see under the portrait; the full name shows where there's room, like the selected colonist's card. Colonists are Human and zombies are Zombie.

A new "colony member" check now runs through 14 parts of the game, so zombies never get jobs, portraits or a spot in the colonist list. Only colony members get the ink outline.

Old saves still load: a colonist from before today keeps its ID, and its old name becomes the nickname.

Our own hair, brows and beards

Eight sculpted hairstyles
Eight sculpted hairstyles

We looked at a store pack of stylized facial hair, decided it was too medieval, and made our own instead. It's sculpted and non-realistic in the same spirit, but with modern and cyberpunk designs:

  • Hair: crop, bob, ponytail, undercut, mohawk, side-shave, spiky, and a bowl cut with a shaved band.
  • Beards: stubble, boxed, goatee, chin strap and fade.
  • Mustaches: pencil, chevron, handlebar, blade and horseshoe.
  • Brows: eight styles, including cyberpunk slits and blocky shapes.
  • Lashes: three lengths.

Hair has a dye zone, so any style can carry a neon streak or tips. Children get brows, lashes and hair, but no beards and no extreme shaves.

Beards and mustaches
Beards and mustaches

Everything is generated by one Blender script, then fitted to every face mesh by a commandlet.

The first in-game fit worked for brows, lashes and mustaches. Beards sank into the chin and hairlines came out jagged, because the reference head's layout didn't match ours. The second fit projects each piece onto each face's skin while keeping its own thickness.

The first fits were also 3.2 GB, because each was a full copy of the face. The new fits keep only the hair piece itself. They follow the face with no per-frame cost at all.

First fit: undercut, slit brows, fade beard
First fit: undercut, slit brows, fade beard

Zones and tools

Dragging a remove-zone outline over a stockpile
Dragging a remove-zone outline over a stockpile

Stockpiles moved into the Build menu as square tiles with hand-drawn icons: crates on a dashed plot for Stockpile, and a crossed-out plot for Remove zone. No textures, just lines and boxes in the UI's colours.

Dragging on the ground lays out a shape, with three option rows inspired by a RimWorld mod:

  • Shape: rectangle, ellipse, diamond or line.
  • Anchor: corner to corner, or press at the centre and drag to the edge.
  • Fill: filled, or a one-block outline.

The shape previews as tiles on the ground, blue to mark and light red to remove. While Remove zone is on, the system cursor is replaced by a light red arrow with a minus badge, so you always know a drag will take something away.

Two smaller tools landed too:

  • Cut plants: paints cutting jobs on trees.
  • Item readout: hovering a pile shows what it is, its value and its weight.

Job areas got a new look. They used to be raw debug wireframe boxes, which looked out of place. Now each area is one faint patch on the ground in the accent colour, mostly transparent, with a warm tint for jobs you ordered and a small pulse where a colonist is working.

The hover square and tool brush are now decals too, so they follow slopes instead of floating.

Water, lava and the underground

Lava meeting water in a test basin
Lava meeting water in a test basin

Water flows Minecraft-style:

  • sources, flowing levels from 7 down to 1, and falling water;
  • it seeks the nearest drop within four blocks;
  • two neighbouring sources make an infinite one;
  • water dries up when nothing feeds it.

Surfaces slope between levels, and deep-water colours blend so lakes no longer look stair-stepped. Flowing water washes away wild undergrowth (crops and stumps stay) and gently pushes colonists, but never one who is downed or under your control.

Then lava, with the classic reactions:

  • water on a lava source makes obsidian;
  • flowing lava meeting water makes cobblestone;
  • lava falling onto water makes stone.

Lava burns plants, and colonists path around it. In the test, a colonist ordered across a lava strip bent its route around the end of the strip and never stepped in.

Lava only generates in districts tagged for it: a crater lake and a few hillside sources, at least 64 blocks from the starting area and never next to water. Cave lava started at 19% of caves, which felt like too much, so it's now about 10%.

Cave fix: underground rocks, stalagmites and cave plants used to show through hillsides from the side. They're now drawn only once the terrain around them is drawn, by digging or by the cutaway view.

The lava test basin
The lava test basin

Items, food and hauling

The economy got its foundation:

  • Items: 290 item types following RimWorld's layout, 41 materials that change value, durability and armor, and quality levels from Awful to Legendary.
  • Cutting trees: felling a tree drops logs where it stood. The test cut a birch for 24 logs.
  • Food: colonists eat food lying on the ground, prefer cooked meals, and raw food costs them a little mood.
  • Hauling: loose items get carried to the nearest stockpile cell with room. The test ate one meal and hauled three stacks.
  • Orders by voice-style names: typed orders now understand multi-word names, like "Loose Cannon".

Combat and zombies

  • Melee: colonists can punch, kick, attack and dash, with hit reactions.
  • Downed colonists fall, lie still where they dropped, and get up once healed. We first tried ragdolls, but they looked weightless, so they became proper animations. Long hair now hangs naturally instead of sticking straight up while lying down.
  • Limbs can be cut off by sharp hits. A colonist missing a leg goes down for good; a legless zombie crawls.
  • Zombies are built on the same pipeline as colonists, so they share bodies and animation. Each one gets a plain look: a default face, a basic body, no ancestry, and a grey-green skin with a stoop. Far-away zombies update less often and skip detailed hair, to keep big waves affordable.
  • Zombies are saved with the game and come back after a load with the same IDs.
  • A "Child zombies" world option, off by default, chosen when you create a world.

Pathfinding, plants and animals

  • Pathfinding: colonists walk in straight lines instead of zig-zagging cell to cell, account for each other's positions, sidestep each other, and re-route after about 0.75 s if someone blocks the way. It all runs on the voxel grid. The unused navmesh plugin was removed.
  • Plants: they're now assembled from a procedural Blender kit instead of placeholder shapes. Trees were thin sticks at first; they now have proper trunks and fuller crowns.
  • Animals: they wander, flee from danger, and are saved with permanent IDs.
  • Saves: they now protect all of this. A test cut five trees, saved and loaded: all 6,489 plants matched, the cut trees stayed gone, and all 31 animals came back.

Credits and the start screen

The game now opens with a 2-second, skippable splash, and the logo strip also rides along the loading screen so it costs no extra time. A Credits button on the main menu opens a grouped list:

  • engine;
  • AI and voice libraries;
  • characters;
  • world;
  • animation;
  • licenses;
  • development tools: Claude (Anthropic) and ChatGPT (OpenAI).

The Unreal Engine logo itself waits for Epic's trademark license, so for now it's a text credit.

Performance

A read-only review went through everything done today and found 18 things to optimize. The rule this time was strict: the reviewer reports, and the developer decides. The developer approved all 18.

Baseline before the fixes:

  • 12 colonists run at about 13 ms a frame, limited by the game thread.
  • The face and bone work alone takes about 2 ms of that, about 155 µs per colonist.
  • 6 zombies add about 5 ms.

The fixes, now written and being measured:

  • caching the face work, so it only redoes the setup when a look or age changes;
  • loading hair in the background, and only the fitted version;
  • batching plant redraws into one per frame instead of one per plant;
  • capping water work at 2 ms a frame, with its own compact save;
  • a lighter crowd profile for zombies;
  • animals and portraits skipping work when nobody can see them;
  • a shared position grid, so characters stop checking every other character every frame;
  • the job highlight only redrawing when something changed;
  • hauling finding storage instantly instead of scanning.

The packaged game also leaves out about 2.2 GB of unused art. Nothing was deleted; it's just excluded.

Lessons from running eight agents on one project

  • One build slot, passed by name. Every overlap we had came from someone building or testing without the slot. The fix was a queue in which each session hands "go" to the next one by name.
  • Every file saved into Source must compile. One half-finished file stops everyone's build. Compiling each file on its own before saving caught problems that the shared build had hidden, like missing includes.
  • Keep reviews read-only. The reviewer reports and the human decides. An earlier optimizer that changed things on its own was the worst moment of the project so far.
  • Write it down before you stop. When we packed up for a move, every session wrote a short wrap-up note. Picking the work back up afterwards took minutes.