OmaCRT

RSS

The log · 30 September 2026 · design

How people walk in the hall

The people in OmaCRT's arcade hall took sixteen rounds to walk properly. The first ones copied old adventure games; the ones that worked came from a gait laboratory's tables. This entry follows the rounds in five working figures, and the sprites, the joint table and the study plates are free to reuse.

subject

the people who walk through the launcher's home screen

sprite

68 pixels tall, drawn by the launcher at startup

data

Winter's normative joint angles, every 5% of the stride

tools

Claude Code with Opus 5.5, Python prototypes, Rust

release

OmaCRT 0.11.1

2.3%how far the hip rises and falls in a step, from the legs alone

The 0.11.0 hall had people in it: a man walking in, players at the cabinets, a janitor with a mop. They were built from capsules and moved like them. The knees barely bent, the body floated at one height and the arms hung. I told the agent the movement did not convince me, and that started two days of rounds.

This is where they ended. Press play, drag along the curves, or step one pose at a time; every figure in this entry runs on the launcher's own sprites and joint table.

The launcher's walker in profile, walking one stride after another across a floor.

0%ContactInitial contact

The heel strikes with the toe up and the knee all but straight.

Hip30°

-20° to 40°

Knee5°

0° to 80°

Ankle0°

-20° to 20°

One stride of the hall's walker, from the near heel striking to the same heel striking again. The sprite is the launcher's own, drawn at sixteen poses a stride, and the skeleton is posed from the same joint table. The shaded part of each curve is the near foot on the floor. Ground too slow moves the body at 60% of the pace the legs are walking, which is what a sprite does when its speed is set apart from its stride. Drag the walker, or the curves, to walk him by hand.

01Copying the classics

The first fix was the animator's one: eight key poses, the knee bent, the pelvis bobbing, the arms in counterphase, each pose held for four frames the way a sprite of the period would be.

Rendered from the launcherLeft, the capsules of 0.11.0; right, eight key poses held at 15 a second.

I still did not like it, and asked for the LucasArts games as the model. The agent read the SCUMM engine's rules (the ground moves with the pose, the head is large, a walker stops in profile before turning) and then measured Guybrush from The Secret of Monkey Island's sprite sheet: six poses, knees never straight, the head a quarter of the height.

Rendered from the launcherOur walker as he was, left, and with Guybrush's proportions and timing, right.

I called it clumsy and slow. It was slow by measurement too: 0.42 heights a second, about half an ordinary walk, which suits a cartoon pirate in a small room. A man crossing a hall walks twice as fast. Indy in Fate of Atlantis was closer, with realistic proportions, a long stride and an upright torso. Copied onto our man, it still did not work, and I said the character itself probably needed redrawing.

02A figure drawn again

The agent stopped posing capsules and drew the man as shapes four times larger than the sprite, lit from the upper left, then reduced each 4x4 block to its commonest colour. Studying Indy at eight times his size gave the rest. He has no black outline: the dark of each material sits on its shadow side only. Every material has four tones, and the shadows drift cool. The cloth breaks into small clusters of two tones, and the whole sprite uses a few dozen colours.

Faces did not survive the reduction. At nine pixels across a reduced face is noise, so the heads are drawn by hand, pixel by pixel, in grids of 12 by 13. The launcher still makes every sprite this way when it starts, and the figure below stops it at each step.

An empty pixel right of or below the figure takes a dark of what it borders. The lit side stays open, and there is no black outline.

How the launcher makes a sprite when it starts, step by step, for one pose. The large view is enlarged four times; beside it is the sprite at the size the hall draws it, and at twice that.

Then I looked at the legs and said they walked like two logs.

03The laboratory's numbers

Animation books teach a walk as a handful of poses. A gait laboratory records the angle of each joint through the stride, and David Winter published the normal curves for hip, knee and ankle. The agent sampled them every 5% and posed the legs from them with a spline.

Four skeletons walking on the spot, one per knee rule: straight, kicking, crouching, and Winter's.

The laboratory's curve: 18 degrees as the heel takes the weight, nearly straight at mid stance, 63 in swing.

Knee bend

0° to 80°

The same stride under four knee rules, walked on the spot so they can be compared pose for pose. The hip follows Winter in all four; only the knee changes. The first three are the mistakes of the rounds before the laboratory's numbers came in.

Winter's curves show what our straight legs lacked. The knee gives 15 to 20 degrees as the heel lands and takes the weight. It bends to about 63 in swing while the hip carries the thigh forward, which the crouching version got wrong by bending it everywhere and the kicking version by bending it too early. The foot stays on the ground for 60% of the stride, and the ankle pushes off before it leaves.

The arms came from published studies of arm swing. An arm is furthest back as the heel on its own side strikes, swings 18 degrees each way and runs 5% of the stride behind the leg, while the elbow opens and closes between 14 and 40 degrees.

With the curves in, the legs alone lift and lower the hip by 2.3% of the height, inside the 1.5 to 2.7% measured in people. The bounce added in the first round doubled that, so we took it out.

2.3%of the height, low to highinside the 1.5 to 2.7% measured in walkers

The hip's height, traced as the legs alone set it. The band is the range measured in people walking at an ordinary pace. The bounce added in round two, before the legs bent properly, doubled the rise and fall and took the walk out of the band.

04Into the launcher

people.rs does in Rust what the prototype did in Python, and draws each person and pose once and keeps it. The pelvis turns a little with the swinging leg and the chest against it, and the front and back views use the same curves end on, with a pixel of sway over the loaded leg. The new people shipped in OmaCRT 0.11.1.

Launcher framebufferThe hall at 60 frames a second, people walking in and out of the aisle.

The sprites were first drawn at 50 pixels and enlarged by a third, so one pixel in three came out doubled. Drawn at 68, the height the hall stands them, they scale by less than a tenth.

The janitor was the last one. He first appeared with the mop already in his hands, turned to face the camera, and mopped in slow motion. Now he carries the mop in, rests it, and mops standing, with a half step every second and a half and a sweep that moves his shoulders.

Rendered from the launcherThe janitor carries the mop in, mops and takes it away.

05The cast and the plates

Everybody in the hall is on one sheet, and so is the joint table. Both are yours to use, as are the two plates below them, drawn from the same sprites and numbers in the launcher's 8x8 font. A link back is welcome.

The sheet: people.png, every sprite at 62 by 76 with the feet at 31, 72. The joint table: gait.csv, hip, knee and ankle every 5% of the stride.

Everybody in the hall, as the launcher draws them. Choose a person and what they are doing; the strip underneath is every frame, and a press on one holds it.
Plate I: one stride in eight keys, with the stance and swing bar and the joint curves.
Plate I: one stride in eight keys, with the stance and swing bar and the joint curves.
Plate II: three wrong knees and the right one, at four moments of the stride.
Plate II: three wrong knees and the right one, at four moments of the stride.

Sources: David A. Winter, The Biomechanics and Motor Control of Human Gait (1991); Richard Williams, The Animator's Survival Kit; Pixelblog 50, human walk cycle by SLYNYRD; the sprite sheets of The Secret of Monkey Island and Fate of Atlantis on The Spriters Resource, which the agent measured; no frame of them appears here.