I want a world where people can speak a game into existence. You sit down with a model, you talk about the game you want, and the game comes into being. Crescent is the tooling to get there.
01
A tree is a page of text
A tree can be described analytically, and there are good tools that do it. They are native applications, which a model can't get into. So this one is a page of text. Each sheet below was written by a small language model that had read nothing but the tool's README. The tree beside it is grown from that text, here, in your browser. Change a line. Then plant it.
name: wind_bent_coastal_pine
like: pine
siblings: 3
height: [9, 12]
age: old
trunk:
lean: 12
lean_toward: 90
sweep: 0.5
clear: 0.35
crown:
shape: flat
width: 0.8
density: 0.4
gaps: 0.7
branches:
gnarl: 0.4
wind:
from: 270
strength: 0.8
foliage:
kind: needle
leaf_cm: 8
colour: '#2f4a2c'
amount: 1
bark:
texture: pine_plated
Drag a number. Pick a word. Click a line to type.
It will stand on the far shore of the lake, on every page.
Growing…
Wind bent coastal pinePlate I · drag to turn
02
The game speaks JSON
Bandwidth doesn't matter in 2026. So everything the game and its players say to each other is plain JSON, and a new game needs no message format of its own. That means a model can sit down at any Crescent game and play it, one command at a time: look, walk, talk, buy. This is a real session, replayed.
If a model can play the game, it can write the test that plays it. This file is one of about a hundred that run before a change lands. It starts the real game server, joins as a player, walks to the alchemist, buys a potion and checks the gold.
economy-buy.scenariopassed · 2.5 s
# name: economy-buy
# description: Verify buying from vendor deducts gold and adds item
ticks 5;913 ms
log Interact with Alchemist;·
select vendor first type=Alchemist;4 ms
send interact {"targetId": $vendor.id};15 ms
wait shop_data 5000;·
log Shop data received;·
log Move close to vendor before buying;·
send move {"x": $vendor.x, "y": $vendor.y};7 ms
ticks 3;571 ms
log Buy a health potion;·
send buy_item {"vendorId": $vendor.id, "itemType": "HealthPotion"};9 ms
wait gold_update 5000;·
assert last.gold == 30;1 ms
log Economy buy verified — gold deducted from 50 to 30;·
14 steps, 1 assertion, against the real server over a real socket.