A benchmark in which language models design roller coasters that RollerCoaster Tycoon 2 builds, tests, and rates.
{"dir":0}{"deltas":[{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":0,"piece":"flat","slope_out":0},{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":0,"piece":"end_station","slope_out":0},{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":0,"piece":"begin_station","slope_out":0},{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":0,"piece":"middle_station","slope_out":0},{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":16,"piece":"up_25","slope_out":2},{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":64,"piece":"up_60","slope_out":4},{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":8,"piece":"flat_to_up_25","slope_out":2},{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":32,"piece":"up_25_to_up_60","slope_out":4},{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":32,"piece":"up_60_to_up_25","slope_out":2},{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":8,"piece":"up_25_to_flat","slope_out":0},{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":-16,"piece":"down_25","slope_out":6},{"bank_out":0,"dir_out":0,"dx_tiles":-1,"dy_tiles":0,"dz":-64,"piece":"down_60","slope_out":8},{"bank_out":0,"dir_out":0,"dx… (7397 chars)
{"dir":1}{"deltas":[{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":0,"piece":"flat","slope_out":0},{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":0,"piece":"end_station","slope_out":0},{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":0,"piece":"begin_station","slope_out":0},{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":0,"piece":"middle_station","slope_out":0},{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":16,"piece":"up_25","slope_out":2},{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":64,"piece":"up_60","slope_out":4},{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":8,"piece":"flat_to_up_25","slope_out":2},{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":32,"piece":"up_25_to_up_60","slope_out":4},{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":32,"piece":"up_60_to_up_25","slope_out":2},{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":8,"piece":"up_25_to_flat","slope_out":0},{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":-16,"piece":"down_25","slope_out":6},{"bank_out":0,"dir_out":1,"dx_tiles":0,"dy_tiles":1,"dz":-64,"piece":"down_60","slope_out":8},{"bank_out":0,"dir_out":1,"dx_tiles":0,"d… (7346 chars)
{"dir":2}{"deltas":[{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":0,"piece":"flat","slope_out":0},{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":0,"piece":"end_station","slope_out":0},{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":0,"piece":"begin_station","slope_out":0},{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":0,"piece":"middle_station","slope_out":0},{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":16,"piece":"up_25","slope_out":2},{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":64,"piece":"up_60","slope_out":4},{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":8,"piece":"flat_to_up_25","slope_out":2},{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":32,"piece":"up_25_to_up_60","slope_out":4},{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":32,"piece":"up_60_to_up_25","slope_out":2},{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":8,"piece":"up_25_to_flat","slope_out":0},{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":-16,"piece":"down_25","slope_out":6},{"bank_out":0,"dir_out":2,"dx_tiles":1,"dy_tiles":0,"dz":-64,"piece":"down_60","slope_out":8},{"bank_out":0,"dir_out":2,"dx_tiles":1,"d… (7346 chars)
{"dir":3}{"deltas":[{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":0,"piece":"flat","slope_out":0},{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":0,"piece":"end_station","slope_out":0},{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":0,"piece":"begin_station","slope_out":0},{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":0,"piece":"middle_station","slope_out":0},{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":16,"piece":"up_25","slope_out":2},{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":64,"piece":"up_60","slope_out":4},{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":8,"piece":"flat_to_up_25","slope_out":2},{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":32,"piece":"up_25_to_up_60","slope_out":4},{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":32,"piece":"up_60_to_up_25","slope_out":2},{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":8,"piece":"up_25_to_flat","slope_out":0},{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":-16,"piece":"down_25","slope_out":6},{"bank_out":0,"dir_out":3,"dx_tiles":0,"dy_tiles":-1,"dz":-64,"piece":"down_60","slope_out":8},{"bank_out":0,"dir_out":3,"dx… (7397 chars)
Let me get geometry for all directions to plan a closed circuit.
Now I have the geometry. Let me plan and start building. Design: lift → big drop → wave bump → vertical loop → descending return leg → 180° turnaround → corkscrews on return → station approach.
{"dir":0,"ride_type":51,"x":50,"y":85}{"cursor":{"bank":0,"dir":0,"slope":0,"x":50,"y":85,"z":112},"ride_id":0}
{"pieces":["begin_station","middle_station","middle_station","end_station",{"chain":true,"t":"flat_to_up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25_to_flat"},"flat_to_down_60","down_60","down_60_to_flat"]}{"circuit_closed":false,"cursor":{"bank":0,"dir":0,"slope":0,"x":35,"y":85,"z":112},"placed_this_call":15,"total_placed":15}
Now let me check what's valid here and add the wave bump + vertical loop.
{"cursor":{"bank":0,"dir":0,"slope":0,"x":35,"y":85,"z":112},"valid_pieces":["flat","end_station","begin_station","middle_station","flat_to_up_25","left_turn_5","right_turn_5","flat_to_left_bank","flat_to_right_bank","s_bend_left","s_bend_right","left_turn_3","right_turn_3","left_corkscrew_up","right_corkscrew_up","flat_to_up_60","brakes","booster"]}
Vertical loop isn't accepted from flat, but corkscrews are. Using a corkscrew turnaround (up+down = 180° reversal). Building it now.
{"pieces":["flat","flat","right_corkscrew_up","right_corkscrew_down"]}{"circuit_closed":false,"cursor":{"bank":0,"dir":2,"slope":0,"x":34,"y":88,"z":112},"placed_this_call":4,"total_placed":19}
{"pieces":["flat","flat","flat_to_up_25","up_25","up_25","up_25_to_flat","flat_to_down_25","down_25","down_25","down_25_to_flat",{"speed":20,"t":"booster"},"flat","flat",{"speed":30,"t":"booster"},"flat","flat","flat","flat","flat"]}{"circuit_closed":false,"cursor":{"bank":0,"dir":2,"slope":0,"x":53,"y":88,"z":112},"placed_this_call":19,"total_placed":38}
Corkscrew turnaround worked. Building the eastbound return leg with a wave bump and boosters.
Now the turn back toward the station and the approach leg.
{"pieces":["right_turn_3","flat","right_turn_1","flat",{"speed":8,"t":"brakes"},"flat"]}{"circuit_closed":false,"cursor":{"bank":0,"dir":3,"slope":0,"x":54,"y":85,"z":112},"placed_this_call":2,"rejection":{"error":"ride type 51 has no artwork for this piece: it would build and rate but render as nothing (invisible track). valid_next_pieces lists what this ride can draw here","index":2,"piece":"right_turn_1"},"total_placed":40}
{"cursor":{"bank":0,"dir":3,"slope":0,"x":54,"y":86,"z":112},"pieces_placed":39,"removed":"flat"}
`right_turn_1` isn't supported for this ride type. I need to approach from y=86 so the right_turn_3 lands exactly at y=85. Undoing one flat and correcting.
{"pieces":["right_turn_3","flat",{"speed":8,"t":"brakes"}]}{"circuit_closed":true,"cursor":{"bank":0,"dir":0,"slope":0,"x":50,"y":85,"z":112},"placed_this_call":3,"total_placed":42}
Circuit closed. Let me test it immediately to bank a score.
{"bounds":{"max_tile_x":54,"max_tile_y":88,"max_z":248,"min_tile_x":32,"min_tile_y":85,"min_z":112},"placed_pieces":["begin_station","middle_station","middle_station","end_station",{"chain":true,"t":"flat_to_up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25_to_flat"},"flat_to_down_60","down_60","down_60_to_flat","flat","flat","right_corkscrew_up","right_corkscrew_down","flat","flat","flat_to_up_25","up_25","up_25","up_25_to_flat","flat_to_down_25","down_25","down_25","down_25_to_flat",{"speed":20,"t":"booster"},"flat","flat",{"speed":30,"t":"booster"},"flat","flat","flat","flat","flat","right_turn_3","right_turn_3","flat",{"speed":8,"t":"brakes"}],"program":null,"rides":[{"average_speed":416577,"circuit":{"looped":true,"orphan_pieces":0,"total_pieces":42,"walked_pieces":42},"crashed":false,"excitement":2.9800000190734863,"highest_drop":13,"id":0,"intensity":11.90999984741211,"max_lateral_g":3.4600000381469727,"max_negative_g":-0.1899999976158142,"max_positive_g":3.5999999046325684,"max_speed":1380379,"nausea":7.679999828338623,"num_drops":… (1611 chars)
← openrouter_deepseek_deepseek-v4-flash-0731 · 20260731-deepseek-v4-flash-design · all runs