1 · CharacterThe Avatar
A new skin (the fourth, id 3; nothing in the protocol moves). Realistic proportions instead of KayKit's short, wide bodies, on KayKit's own 23-bone skeleton, so every system that plays a clip on a body plays it on this one. A navy suit, white plates, a glowing visor and a twin-tank jetpack. All its colours sit in one 64 × 64 palette image, with red and blue team versions; in the arcade everybody wears it in their team's colour.




2 · MovementAnimations: a two-handed hold on every frame
Seventeen clips. They start as KayKit's free (CC0) animations, retargeted to the Avatar's proportions, with the arms brought in (KayKit holds them wide for its fat bodies). Then both arms are re-solved on every frame so the weapon is held the way a shooter's player holds it: the right hand on the grip, the left under the foregrip, the weapon forward at the chest. It rides the body's bounce and lean but not KayKit's sideways stance twist, and the chest turns back to face the aim while the legs strafe or back away.


In the game now
Idle, run, walk backwards, strafe left and right, crouch (skiing), in the air, landing, two deaths.
Shipped for later
Two hit reactions, four dodges and a throw. They hold the weapon too; the throw will want its own pass before it is used.
Checked
Every other frame scanned for the weapon passing into the body: only the right fist round the grip touches it (about 1 cm), and about 4 cm into the arm for a moment in one death's collapse.
3 · LoadoutThe arsenal
Three weapons of our own, made after the look of the original game's (nothing of theirs is in them). They replace the KayKit crossbows and shotgun for every body and in first person. One file and one material: the colours, metal and glow sit in 64 × 64 palettes, as the Avatar's do, so each weapon draws as one part. Each lies as the KayKit ones did (the grip at the origin, forward +z), so every hand and the first-person view took them without change.




4 · In a matchThe weapons in action
From the game itself: the sim's own scripted loadout match, where a defender stands on blue's base and stops each red runner with a different weapon.
5 · Your own eyesFirst person
The same moments through the defender's eyes, the weapon in hand as the first-person view draws it.
6 · ObjectiveEvery flag is drawn as the torch
Carry the Fire, literally: a wooden torch with a leather grip, a band in the team's colour, a brass collar and a metal brazier with a flickering fire. It stands 6 m on each stand, is slung across a carrier's back close up (and drawn larger far off, as the flag was), and lies on the ground under the beam when dropped. Only the picture changed: the sim's flag is exactly as it was.
Fixed while making this page: a dropped torch was drawn at the stand's 6 m (the old flag's way: a dropped flag kept its stand size), three times the height of the player beside it.
It is now 1.9 m, about its size on a carrier's back, lying low with its fire clear of the ground (commit 0c4c5be).
7 · FallsDeaths
The Avatar keeps both hands on its weapon as it dies. As the chest tips over the weapon is brought round to lie along the body: on his back the muzzle drops to his feet; on his face it comes up and out to his right, from under his chest.

8 · Before and afterOld vs new, the same moment
The same tick of the same match from the same camera: on the left master with a KayKit skin, in the middle master's arcade (the team humanoids), on the right this branch.









9 · The filesWhat we made against what it replaces
Every file the new work loads, against the file it stands in for. Bytes are as served (a .gltf with its .bin and pictures);
triangles and parts are the meshes as they are drawn (a part is one draw).
| File | Size | gzipped | Triangles | Parts | Textures | Rig and animation |
|---|---|---|---|---|---|---|
| The player's body | ||||||
KayKit Rogue_Hooded.glb (old skin; Engineer and Barbarian alike) | 381 KB | 196 KB | 7,185 | 8 | one 1024 × 1024 | 23 bones; clips in the files below |
KayKit clip files Rig_Medium_*.glb (three, shared by every KayKit body) | 2,237 KB | (a body in each) | 39 clips, 38 s, 448 KB of keys; the player uses 10 | |||
Old arcade Humanoid.fbx + Humanoid.png | 89 KB | one 1024 × 1024 | rigged at load to KayKit's skeleton and clips | |||
New Avatar.glb (body, gear and its own clips) | 543 KB | 231 KB | 7,780 | 2 | one 64 × 64 palette (+ glow, ORM); team palettes 0.2 KB each | 23 bones, 8 corrective shapes, the 10 clips the game plays |
| The weapons | ||||||
KayKit crossbow_2handed, shotgun, crossbow_1handed, smokebomb | 196 KB | 2,806 | 4 | KayKit's 1024 × 1024 sheets | ||
New Weapons.glb (all three) | 376 KB | 56 KB | 5,016 | 4 | three 64 × 64 palettes, shared | the chaingun's barrels a part of their own |
| The flag | ||||||
KayKit flag_C_red.gltf + flag_C_blue.gltf | 122 KB | 502 each | 1 | a 1024 × 1024 each | ||
New Torch.glb (one file, the team colour set in code) | 45 KB | 928 | 9 | none | its fire a part of its own, to flicker | |
Smaller where it counts on the GPU
A KayKit body or flag samples a 1024 × 1024 texture: about 5.6 MB of video memory each once mipmapped. The Avatar's palettes are 64 × 64 (about 22 KB), and the weapons and the torch have no textures at all.
Slimmed: the Avatar
It was 795 KB: a third of that was the glTF's own description of 17 clips, every bone's position, turn and size in each. Now it ships the 10 clips the game plays, and only the channels that ever move (21 a clip, not 70): 543 KB, 231 KB gzipped. The other 7 clips stay in the Blender file.
Slimmed: the weapons
They were one part per colour, 4 or 5 draws a weapon. Baked into palettes they are one draw each (the chaingun two, so its barrels can turn), the same as a KayKit weapon. The file grew to 376 KB for the palette's coordinates on every face; gzipped it is 56 KB.
10 · Running itWhat it costs a frame
Timed in the game's own renderer, in headless Chrome on this laptop's Intel UHD graphics (Vulkan), at 1280 × 720: the sim's scripted match, 500 frames from the same tick with the same camera, everything drawn and the GPU waited on each frame. Each run twice or three times and averaged. Good for comparing one against another on this machine, not a promise of anybody's frame rate.
The bodies alone
Six players is too few to tell bodies apart, so here every player is drawn six times over: 36 bodies running the match's moves, all holding the same (new) weapons, no torches. Only the body changes.
| Body (36 on screen) | ms a frame | Draw calls | Triangles a body | Why |
|---|---|---|---|---|
| Humanoid (the old arcade's) | 30.2 | 180 | ≈ 760 | a low-poly mannequin, one part |
| Avatar | 40.6 | 196 | 7,780 | two parts, ten times the triangles, and 8 corrective shapes on every vertex |
| KayKit Rogue | 42.1 | 467 | 7,185 | eight parts a body |
| KayKit Engineer | 43.9 | 468 | 7,500 | eight parts |
| KayKit Barbarian | 42.4 | 432 | 7,123 | seven parts |
The Avatar against KayKit
A little cheaper than every KayKit body, with well under half the draw calls.
The Avatar against the humanoid
About 10 ms dearer for 36 bodies (0.3 ms a body here). Most of that is its 8 corrective shapes: in a run of its own, 36 Avatars took 37.1 ms with them and 29.8 ms with them taken out (a test file only), which is what the humanoid costs, ten times the triangles and all.
What the shapes buy
They stop the elbows, knees and shoulders collapsing as they bend. Dropping them, keeping only the worst two or three, or dropping them for far-off players would all close most of the gap.
The weapons, before and after their palette
| 36 Avatars holding | ms a frame | Draw calls |
|---|---|---|
| the new weapons, one part a colour (before) | 40.4 | 229 |
| the new weapons, one palette (now) | 39.4 | 196 |
The whole set-ups, six players, after both slimming fixes
| Set-up | ms a frame | Draw calls |
|---|---|---|
master, KayKit skin, KayKit weapons, KayKit flag | 24.2 | 109 |
master, the arcade's humanoids, KayKit weapons, KayKit flag | 21.4 | 68 |
| branch, the team Avatars, new weapons, the torch | 22.8 | 74 |
| branch, KayKit skin, new weapons, the torch | 24.1 | 113 |
With six players the terrain, buildings and sky (about 1.1 million triangles) are most of a frame. Against the old arcade the new one is now about 1.4 ms a frame dearer (it was 2.3 before the weapons' palette); against a KayKit skin it is about 1.4 ms cheaper.
Measured with the scratch filming harness on both master and the branch: the same sim, map (Rainfall), match, ticks and cameras.
11 · For reviewWhat's in the branch
All of it is render, page and asset work. SIM_VERSION unchanged PROTOCOL_VERSION unchanged No pinned hash moves; nobody needs a reload at the deploy for this.
| Commit | What |
|---|---|
4432ca4 | The new skin (then called the Scout): a realistic body on the KayKit rig, its own clips, one palette material |
f24cd0d | Arcade: everybody is it in their team's colour |
b908070 | Arcade: deploy/arcade.sh defaults to PROFILE=fast on Overpass |
21ba170 | Arcade: lighter team colours, the body drawn 12% bigger |
6af8b5f | Renamed the Avatar; the loadout's weapons drawn to its size |
5bedec3 | The torch: on its stand and on a carrier's back |
40341b3 | The three new weapons |
348e119 | The two-handed hold on every frame of every clip |
c871f17 | The hold kept through the deaths |
0c4c5be | A dropped torch drawn at carry size, lying low |
8da5fa2 | Slimmer: the Avatar ships the 10 clips the game plays; each weapon draws as one part |
Checked
Both typechecks pass. The whole suite and the online suite pass, except two timing tests that fail only on a busy machine and pass alone (tests/p1.test.ts test 5, server/ps1.test.ts).
Licences
The Avatar, the weapons and the torch are Chris's own work, made in Blender from scripts, with no outside model or texture in them. Licence notes sit beside each, marked "the project's own art, to be confirmed". The animations' source is KayKit (CC0).
The hitbox
Every player is hit-tested as the sim's capsule for their armour (light: 1.8 m tall, 1.1 m across), the same for every skin. The arcade draws the Avatar 12% over that, so the top of the helmet (about 20 cm) is above the capsule; AVATAR_DRAWN = 1 lines it up.
12 · DecisionsQuestions for you
Realistic next to KayKit
The Avatar and the new weapons are a step away from the KayKit look standard. Keep the Avatar as one skin among the others, or move the game toward it?
The art's licence
How do you want Chris's own models licensed in the repo (CC0 like the rest, or something else)?
The 12% and fast
Keep the bigger drawn size, or line it up with the hitbox? And is PROFILE=fast right as the arcade's default?
"Flag" or "torch"
The HUD and the kill feed still say "flag". Rename to "torch" to match the picture?
The corrective shapes
They are most of what the Avatar costs over the old humanoid. Keep all 8, keep the worst two or three, or drop them for players far off?
Other bodies
Only the Avatar has the two-handed hold; the KayKit skins and the humanoid keep KayKit's one-handed clips. Worth doing for them too?
How the pictures were made: the clips are the sim's own scripted loadout match (src/debug/w1Run.ts, on Rainfall) drawn a tick at a time through the game's renderers,
put together at 30 frames a second; the filming harness is a scratch tool and is not on the branch. The studio pictures are rendered in Blender from the working file, in a scene of their own.