Streaming an AI-generated game world without stopping play

Generation takes time, and players move unpredictably. Infinite Pokémon treats the frontier as a scheduling problem: prepare likely destinations ahead of the player, reuse completed work, and handle unfinished travel explicitly.

Prefetch depth forms a diamond

Movement connects maps in four directions, so generation depth uses Manhattan distance. Depth one prepares four surrounding blocks; depth two prepares twelve; depth three prepares twenty-four. Including the current block, those totals are five, thirteen, and twenty-five.

The host can also choose depth zero, which generates only when the player attempts to cross a new boundary. This spends less speculative work but makes waiting more likely.

The queue follows active players

Jobs are ordered by minimum distance to connected trainers. A destination someone is actively trying to enter wins ties. Multiplayer uses the union of nearby blocks, while cached and already-published maps are skipped.

Concurrency is separate from depth. The batch setting allows one to eight independent map jobs. Lowering it lets active jobs finish; increasing it fills available slots immediately.

Waiting is a game state, not a fake percentage

The interface distinguishes queued, generating, failed, paused, disconnected, and provider-limited states. It can show queue position and elapsed time, but it does not invent a completion percentage for a model call.

A completed job only moves the player if they are still online at the expected boundary. Cancellation prevents late teleports, while successfully generated maps can remain cached for a later visit.

Continue reading

Editorial basis: written from the project’s implementation, tests, and versioned documentation with assistance from OpenAI Codex. Claims are limited to the current prototype.