Home

Text Cultivation

A game prototype where matter is written as Chinese characters. The player moves "me" (我) around and writes materials into the scene. The dev log is at version 11, and no real player has tried it yet.

TYPE
A game prototype where matter is written as Chinese characters
STATUS
Logged up to version 11, no real playtest yet
WHEN
2026
BUILT WITH
Written in Rust, runs on Bevy, glyphs rendered from an atlas

Pick a material, then write

I'll start with dujie (渡劫). The arrow keys or WASD move "me" (我), number keys 1-4 pick water, fire, metal, or wood, and holding or dragging the left mouse button writes the material into the scene. You can't just type other characters. Each character costs 1 lingqi (灵力), the pool caps at 180 and refills 12 points per second, so writing nonstop from a full pool empties it in about 10 seconds.

The sandbox lets you write steam, water, ice, fire, lightning, wood, and metal, which is good for testing rules one at a time. Genesis (创世) automatically runs an ecology of sand, water, fungus, moss, bugs, dung, and remains. Stone is only decoration, and I can tune the parameters and the time scale. Across the project there are 18 material types and 17 glyphs. "Elixir" (丹), "yuan" (元), and "cloud" (云) are still in the code but unused.

Material inputs and seven temperature rulesMATERIAL INPUTSTEMPERATURE RULES · TWO PHYSICS SCENESTribulationWater · Fire · Metal · WoodSandboxVapor · Water · Ice · FireLightning · Wood · MetalGenesis · automatic ecologySand · Water · Fungus · MossBug · Dung · Remains, with decorative stoneInputs differ by scene, Genesis has its own rulesNo free text inputMATERIALTEMPERATURE (K)BECOMESWater> 373VaporVapor< 280WaterWater< 273IceIce> 273WaterWood> 600Fire + AshSolid metal> 1370Liquid metalLiquid metal< 1370Solid metalStrict inequalities, no change at equalitySeven temperature rules, not the whole update loop

FIG. 1 · Which characters can be placed, and what temperature turns them into

Schematic. The material entries and the seven temperature conversions are drawn from the current code parameters. K is the temperature unit. Genesis runs its own ecology rules, and the temperature conversions on the right only apply to dujie and the sandbox.

How a piece of wood catches fire

Every character carries temperature, mass, charge, and fuel. The glyph on screen changes with the material type, and the game doesn't break characters into radicals or read their meaning. This physics is a simplified simulation, not calibrated against real experiments. Figure 1 only lists the seven temperature conversions, and nothing changes exactly at the threshold. The full update also covers heat, electricity, and motion, and genesis follows separate ecology rules.

Take fire lighting wood. A fire picks one neighbor within 48 px for local heat exchange, and adds extra heat while it has fuel. If a wood within 36 px is above 500 K this frame, the fire can take its fuel. Above 600 K, the wood turns to ash and spawns fire, giving up part of its mass and fuel. Fire keeps burning its own fuel and is deleted once it runs out.

Heat and fuel between wood and fireONE LOCAL EXCHANGEWHEN WOOD IGNITESFireWoodHeatFuel48 pxLocal heat36 pxTake fuelWithin 48 px, choose the top heat-exchange scoreFuel needs wood snapshot temperature > 500 KFire stores at most 5, uses 1/s, then is removedWood temperature > 600 KTransfer 0.3 mass and 1–5 fuelBeforeWoodAshFireNew fireWood becomes ash and creates fireFUEL CAN ALSO TRIGGERWood fuel crosses from ≥ 0.5 to < 0.5 this frameAlso creates fire and ash

FIG. 2 · Heat goes out, fuel comes back

Schematic, drawn from the code parameters for local heat exchange, burning, and wood-to-ash conversion. Circles mark the effective ranges, and the character positions are illustrative. The ranges for heat exchange and fuel-taking are different.

How far the fire actually spread

The measurements I can show come from automated experiments in the dev log. One fire was placed in the middle of a row of wood, and five observation points recorded the horizontal positions of the left and right flame fronts. This run burned through 40 pieces of wood in 3.6 seconds. The figure shows only these five points, with no starting point added and no smoothed curve. It shows how far the fire spread this once, not that every run goes this fast.

Five observations of left and right fire frontsAUTOMATIC RUN · FIVE OBSERVATIONSLeft frontRight frontHorizontal position x (px)After fire, s-700-3500+350+7000.5-63+321.0-159+1592.0-287+3503.1-512+4803.6-639+609Position in px, negative left and positive right, no added samples

FIG. 3 · Five observations after lighting the middle of a wood row

From an automated experiment in the dev log. Each observation records the positions of both flame fronts, in px.

How the eleven versions changed

Early versions were a combat slice between "me" (我) and "yao" (妖, a monster). Sandbox and dujie were added later, and the two-character recipes were replaced by rules that update on temperature, charge, and motion. Version 9 added genesis, version 10 let the player write characters, spend lingqi, and restart after death, and version 11 fixed the bug where fire couldn't light wood.

Changes from v1 through v11ELEVEN DOCUMENTED VERSIONSVERSIONMAIN CHANGEWHYRECORDED DATEv1Combat slice with sword, fire and effectsMake effects and camera runNot foundv2Separate HUD camera, fading particlesFix HUD scaling and particle fadeNot foundv3Build WASM for the browserRun demo in the browserNot foundv4Subset font and shrink web buildRemove unused glyphsNot foundv5Shared reactions, sandbox, tribulationTest rules, then use in the levelNot foundv6Fix font init and shrink the buildFix the startup crashNot foundv7Shared atlas, less off-screen workReduce rendering and computationNot foundv8Heat, charge and motion replace recipesDerive events from material stateNot foundv9Genesis, then parameters and ecologyAdd an ecology scenev9 date not foundv9.3 2026-05-24v10Player writing, mana, death and resetMake tribulation a playable level2026-07-26v11Fire spread, fuel transfer and limitsFix failed ignition and overflow2026-07-27Dates are document checks or builds, not commit dates

FIG. 4 · From a combat slice to material rules

Schematic table of the changes from v1 to v11, organized from the dev log. All dates are document verification or build dates. 2026-05-24 comes from the v9.3 verification record.

What I haven't verified yet