sentencetogame.com

AI Game Generator From Text: One Sentence In, What Comes Out

Short answer: one sentence fills roughly six of the eighteen slots a playable game needs. The generator fills the other twelve — not randomly, but in a fixed order, using conventional defaults borrowed from the genre it decided you were asking for. What comes out is therefore not your sentence rendered. It is your sentence plus a dozen silent decisions, and the silent ones carry most of the feel.

That is why the same sentence produces a different game in two different tools, and why the difference is never in the part you wrote. It is always in the part nobody wrote.

What a one-sentence brief can carryWhat it costs to carry itTypical slot count
The verb — what the player doesOne word, free1
The failure conditionOne clause1
The win or end conditionOne clause, often merged with failure1
The control surfaceOne clause1
The subject matter — what the shapes representA few words1
The camera relationshipOne clause, usually omitted1
Numbers: speed, spawn rate, difficulty rampRarely stated, never fully0 of 6
Collision shape and forgivenessNever stated0 of 2
Frame and viewport behaviourNever stated0 of 2
Restart and state resetNever stated0 of 2
Presentation model: sprites, shapes, DOMNever stated0 of 2
AudioNever stated0 of 1

Six in, twelve assumed. Everything in the lower half of that table was decided for you, and none of it was announced.


The sentence is a filter, not a specification

The mental model most people bring is compression: I describe the game, the tool decompresses it. Under that model, a vague sentence yields a vague game and a precise sentence yields a precise game, and the only skill involved is precision.

The actual model is closer to a filter over a genre scaffold. The generator first picks a scaffold — dodge, collect, shoot, jump, sort, survive — and that scaffold arrives pre-populated with numbers, an input map, a camera, and a fail state. Your sentence then adjusts the parts it can reach. Whatever it cannot reach stays exactly as the scaffold shipped.

Two consequences follow, and neither is intuitive:

A precise sentence does not make a precise game. It makes a scaffold with more of its surface repainted. You can describe the art direction for three sentences and still get three lives and a top-edge spawner, because art direction is a slot the scaffold exposes and life count is a slot it does not.

The genre word does more work than any adjective. If your sentence contains "dodge", the numbers arrive already tuned for dodging — spawn interval, player speed, hitbox size, all consistent with each other. If it contains "collect", a different set arrives. Adjectives about mood or style reach the presentation layer and stop there. This is the single most useful thing to know about text-to-game input: the noun phrase selects the numbers, the adjectives select the paint.

The fill order

Every text-to-game pipeline resolves slots in some order, and the order is what makes the output predictable. It is also why a slot you left empty early is more expensive than one you left empty late.

PositionSlot being resolvedWhy it constrains everything after it
1Genre scaffoldSelects the entire default number set
2World frame — fixed screen or scrolling worldDecides whether a camera exists at all
3Camera behaviour — none, follow, clampOnly meaningful if position 2 opened a world
4Failure state — lives, timer, single hit, noneSets the length of a run, which sets pacing
5Input mapConstrained by the control surface your sentence named
6Numeric tuning — speed, spawn rate, rampTuned against positions 1 and 4
7Presentation — shapes, sprites, DOM, audioThe only layer adjectives reach reliably

Read the table downward and the rule appears: each position narrows the ones below it. A decision at position 4 about run length is already half-made by position 1, because the scaffold came with a fail state attached. By the time the pipeline reaches position 7, almost nothing is still open — which is exactly why "make it look like a neon arcade" changes so much less than people expect, and why it changes the thing people notice first.

The practical version of the rule: your leverage decreases as you move down the table, and your visibility increases. The slots that matter most are the ones you can least see.

Nine defaults, and the fingerprint each one leaves

These are the defaults that most often arrive uninvited. Each has an observable fingerprint, so you can confirm it in your own build in under a minute instead of guessing.

#Silent defaultThe fingerprint you will seeSmallest edit that moves it
1Keyboard-only input, arrows or WASDNothing responds to a drag or a tap"dragging anywhere on screen steers"
2Three lives, one collision costs oneThe HUD shows three marks you did not ask for"one collision ends the run"
3Score rises in fixed steps per pickupThe number jumps by tens, never by ones"score equals seconds survived"
4Difficulty steps up at fixed score thresholdsThe game is calm, then abruptly not"speed constant for the whole run"
5A fixed internal resolution, scaled to fitLetterboxing, or a blurry upscale on a phone"full viewport, portrait, no letterbox"
6Camera locked to the screenThe world ends where the window ends"world three screens wide, camera follows with clamp"
7Restart reloads the whole pageThe best score vanishes on retry"restart keeps the best score for the session"
8Obstacles spawn on a timer from one edgeEverything arrives from the same direction, evenly spaced"spawn from any edge, weighted away from the player"
9No audio at all, or one placeholder blipSilence, or the same tone for every event"no audio" — say it, so nothing is added later

Default 6 is the one that quietly decides whether your idea is even the same idea. A game described as "explore a cave" and delivered with a locked camera is not an exploration game; it is a single-screen game with cave art. The sentence was satisfied, the intent was not.

Default 4 is the one that most often reads as a bug. A step-function difficulty ramp feels like the game breaking rather than getting harder, because the player experiences a discontinuity rather than a slope. If your build seems fine for forty seconds and then unfair, check this before you check anything else.

Default 8 is the one that most often reads as "boring" without anyone being able to say why. Even spacing from one direction is the cheapest spawner to write and the least interesting to play, because it makes the player's position irrelevant. You will not find this by reading your sentence. You will find it by standing still for a minute and noticing that nothing about where you stand changes what happens.

Where two tools diverge on the identical sentence

Take one sentence, feed it to two generators, and compare. The differences cluster in five places, in this order of size.

1. Scaffold choice. If your sentence contains two verbs, or one verb that maps to two archetypes, the tools may pick differently — one reads "avoid the falling blocks" as a dodge game, the other as a survival game with a timer. This is the largest divergence and it happens before any of your words are applied.

2. World frame. Fixed screen versus scrolling world. Same sentence, and one build has a camera and the other does not.

3. Failure semantics. Lives versus a single hit versus a clock. Two builds of the same sentence can have run lengths that differ by an order of magnitude, and neither is wrong.

4. Numeric tuning. Even with the same scaffold and the same fail state, the constants differ. Player speed, spawn interval, and the ramp curve are the three that decide how the first thirty seconds feel.

5. Input and viewport. Keyboard versus touch, letterboxed versus fluid. Most visible, least consequential.

The rule that predicts all five: divergence is proportional to how early the first empty slot sits in the fill order, and how much freedom that slot has. Leave the scaffold ambiguous and the two builds are different games. Specify the scaffold and the fail state, and the two builds become recognisably the same game with different tuning. You cannot close the gap at position 7 by adding adjectives; you close it at position 1 by naming the archetype.

This is also why published tool-versus-tool comparisons are worth less than they look. They typically run one sentence per tool and then score the results, which measures the scaffold lottery, not the tools. A comparison that means anything has to fix positions 1 through 5 in the brief and let only positions 6 and 7 float. If a comparison does not tell you what it held constant, it is a story about one sentence, not about the products.

The read-back protocol

You do not need a second tool to find out what was assumed. Six probes, ten minutes, run against your own build. Each one produces a line in the ledger.

Probe 1 — freeze. Pause the game, or open a menu, then keep pressing movement keys. If the world keeps moving behind the pause, the loop is one clock. If everything stops, it is two. This tells you whether timers and animation share a source, which decides how hard every later change will be.

Probe 2 — wrong key. Press every key on the keyboard, one at a time, and write down what each does. The keys that do nothing are the slots that were never specified. A build where only four keys respond is a build with a four-slot input map, and the rest of the design assumed those four were enough.

Probe 3 — edge. Walk into every boundary of the play area. Clamp, wrap, kill, or scroll — four different answers, and the one you get tells you whether a world exists behind the frame. If all four edges clamp, position 2 in the fill order was never opened.

Probe 4 — stand still. Do nothing for sixty seconds. Note what happens and when. Timers, spawn cadence, and any fail state that is not collision-driven all announce themselves here. If the screen stays empty until you move, the spawner is player-triggered and the pacing is yours, not the generator's.

Probe 5 — die twice. Die, restart, and play the same way again. If the second run is identical to the first, the generator seeded it. If not, note whether the restart cleared everything: score, position, timers, and any state that survived the first run. A restart that leaves one timer running is a bug you will otherwise discover in week two.

Probe 6 — one number. Find the single constant that most affects difficulty — usually player speed or spawn interval — and change it by thirty percent in each direction. If the game still works at plus and minus thirty, the tuning was designed. If it collapses at either end, the tuning was defaulted and the value you found was load-bearing by accident.

The order matters: probes 1 to 3 tell you what was specified, probes 4 to 6 tell you what was assumed.

Confirming that an override actually landed

Adding a clause is not the same as changing the game. A clause can be absorbed, misread, or applied and then undone by the next slot down the fill order. Three checks, each takes about two minutes, and all three are needed before you believe the change is real.

Check 1 — the fingerprint changed. Every default in the table above has a fingerprint. If you asked for single-hit failure, the HUD must lose its three marks. If it still shows three, the clause was read as flavour text. Never accept "it feels harder" as evidence; look for the specific thing that had to disappear.

Check 2 — the neighbour did not break. Overrides are applied to a scaffold, and scaffolds keep their internal consistency. Move the fail state from three lives to one hit and the spawn interval, which was tuned for three mistakes, is now tuned for one — the game becomes unfair in a way you will blame on the wrong thing. After any load-bearing override, re-run probe 6 on the two numbers nearest it in the fill order. If either now collapses at plus or minus thirty percent, the override landed but the tuning did not follow it.

Check 3 — it survives one more generation. Regenerate from the amended sentence once, without editing anything by hand. If the override is gone in the new build, it was not in the sentence in a form the pipeline could resolve — it was in your head, or in a phrase that mapped to a slot the scaffold does not expose. The version that survives a clean regeneration is the version you actually own; everything else is a manual edit you will have to make again.

The pattern across all three: an override is confirmed by absence, not by presence. You are looking for the thing that should no longer be there. Presence is easy to fake — a HUD label, a menu entry, a line of on-screen text — and absence is not.

The ledger

Fill one row per default you found. Ten minutes, once per build, and it replaces every "why does this feel off" conversation you would otherwise have with yourself.

BUILD: ______________________  SENTENCE: ______________________________

WHAT MY SENTENCE FIXED
  verb ............................... ______
  fail condition ..................... ______
  control surface ................... ______
  subject matter .................... ______
  camera (if stated) ................ ______

WHAT WAS ASSUMED          (probe that found it)
  scaffold .......................... ______  (P1)
  world frame ....................... ______  (P3)
  camera ............................ ______  (P3)
  fail state ........................ ______  (P5)
  input map ......................... ______  (P2)
  spawn behaviour ................... ______  (P4)
  difficulty ramp ................... ______  (P6)
  viewport behaviour ................ ______  (resize)
  restart completeness .............. ______  (P5)

LOAD-BEARING?   for each assumed row:
  if I changed this one value, is it still the same game?   yes / no
  if no -> it must appear in the sentence, not in the editor

VERDICT
  assumed rows that are load-bearing .... ______
  assumed rows that are cosmetic ....... ______

The test in the middle is the whole method. A default is load-bearing if changing it changes which game this is. Camera, world frame, fail state, and spawn behaviour usually are. Score step size and audio usually are not. Load-bearing defaults are the ones that must move from the assumed column into the sentence, because they are design decisions that were made without you and are expensive to retrofit later.

Cosmetic ones should be left alone. Every default you override is a sentence clause you paid for, and clauses compete: a brief that specifies nine things gets each of them approximated, while a brief that specifies three gets those three respected. Spend the clauses on the load-bearing rows and accept the rest.

The one rule: the sentence is not the bottleneck. The defaults are. You cannot see them in the output until you probe for them, and you cannot fix the ones that matter by editing the result — only by naming them before the next generation, or by accepting them on purpose.

If you are still deciding how to shape the sentence itself rather than how to read what came back, that is a different problem, and the shape of the brief is where it gets solved. This page is the other half: what to do with the twelve slots you did not write.