Kittie Has Other Plans

Methods and data

Real-time controls

The emulator runs at its native rate of about 59.7 frames per second. A request captures the current observation, then the model chooses controls. The game continues with the previous buttons held until the response arrives. After applying the new controls, the controller waits at least six frames before its next decision.

Each request asks separate questions for direction, jumping and throwing. The controller estimates how old the observation will be when the answer takes effect. Full HTTP latency and observation-to-action age are recorded separately.

What the models receive

These experiments use selected emulator state, including exact positions, movement values, internal timers and approximate physics forecasts. The models can receive information outside the visible screen. This setup tests control with assisted observations.

Courtyard uses a horizontal window extending 250 world pixels each way from Kittie, plus overlapping terrain and global gate/exit information. It includes three recent actions and shot feedback. Both providers get JSON text, with no screenshots.

Head Goon adds boss-specific state such as phase, timer and locked hop target. The image condition adds one current screenshot, taken at the same observation frame and enlarged four times with nearest-neighbor scaling. The forecasts remain estimates, not future emulator states.

How results are counted

Completion means meeting the stage's objective and reaching its exit alive. Each attempt starts from its experiment's fixed checkpoint, with a 7,200-frame limit. Costs and completion rates include failures. Completion time, retained hearts and completion score are reported over wins where specified.

The Courtyard movement statistic averages each attempt's fraction of recorded frames with neither Left nor Right held, after its first applied choice. It includes jumps and time waiting for API responses. It does not measure physical stillness or establish why a model chose those controls.

API costs use the prices recorded for these runs and exclude emulator and host compute. They depend on prompt length, the number of decisions and how long each attempt lasts.

Scope and limitations

The reports use jev-1.13.0 and gpt-6-luna through OpenAI Decisions. Courtyard contains 50 attempts per provider with seeded, interleaved ordering. Head Goon contains 30 per setup from successive batches, excluding the original five image pilot runs.

Samples were expanded after earlier results were inspected. Head Goon's full groups were not all collected together. Reported intervals and exploratory comparisons therefore need that context. These findings describe the recorded controllers and tasks.

Replay checks compare recorded native framebuffers and named game-state values. Featured wins are chosen nearest each model or setup's median winning duration. The recording archive includes every selected success and failure.

Downloads

ExperimentAttemptsMetricsSetup
Courtyard100 · CSVJSONConfig and hashes
Head Goon90 · CSVJSONProtocol · Config

All recordings · Head Goon replay hashes

About Kittie

Kittie is my wife's plushie, with his own Instagram account, @kittiecutiepie. Kittie Has Other Plans began as an anniversary gift. The Chromatic came home with me from OpenAI DevDay.