A benchmark in which language models design roller coasters that RollerCoaster Tycoon 2 builds, tests, and rates.
{"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":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":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)
I'll start by creating the ride and confirming the geometry I need. Let me begin building.
{"dir":2,"ride_type":51,"x":30,"y":38}{"cursor":{"bank":0,"dir":2,"slope":0,"x":30,"y":38,"z":112},"ride_id":0}
Cursor starts at z=112 (ground level). Let me build the station and lift hill.
{"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"},"up_25_to_flat"]}{"circuit_closed":false,"cursor":{"bank":0,"dir":2,"slope":0,"x":41,"y":38,"z":208},"placed_this_call":11,"total_placed":11}
Lift complete, cursor at (41,38) z=208. Now the top turnaround and drop.
{"pieces":["flat","left_turn_5","left_turn_5","flat_to_down_25","down_25","down_25","down_25","down_25","down_25","down_25_to_flat"]}{"circuit_closed":false,"cursor":{"bank":0,"dir":0,"slope":0,"x":34,"y":43,"z":112},"placed_this_call":10,"total_placed":21}
Drop complete at (34,43) z=112 facing west. Now the return leg and west turnaround to close the circuit.
{"pieces":["flat","flat",{"speed":8,"t":"brakes"},"flat","flat","flat","left_turn_5","left_turn_5",{"speed":4,"t":"brakes"}]}{"circuit_closed":true,"cursor":{"bank":0,"dir":2,"slope":0,"x":30,"y":38,"z":112},"placed_this_call":9,"total_placed":30}
Circuit closed. Testing now to bank an early score.
{"ticks":25000}{"bounds":{"max_tile_x":44,"max_tile_y":43,"max_z":232,"min_tile_x":26,"min_tile_y":38,"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"},"up_25_to_flat","flat","left_turn_5","left_turn_5","flat_to_down_25","down_25","down_25","down_25","down_25","down_25","down_25_to_flat","flat","flat",{"speed":8,"t":"brakes"},"flat","flat","flat","left_turn_5","left_turn_5",{"speed":4,"t":"brakes"}],"program":null,"rides":[{"average_speed":196704,"circuit":{"looped":true,"orphan_pieces":0,"total_pieces":30,"walked_pieces":30},"crashed":false,"excitement":1.2200000286102295,"highest_drop":12,"id":0,"intensity":0.6200000047683716,"max_lateral_g":0.7400000095367432,"max_negative_g":0.49000000953674316,"max_positive_g":2.2300000190734863,"max_speed":942568,"nausea":0.3100000023841858,"num_drops":1,"num_inversions":0,"ride_length":187,"ride_time":48,"ride_type":51,"status":"testing","tested":true,"total_air_time":0}],"score":1.0573333581288655,"similarity":{"common_substring_share":0.2,"edit… (1393 chars)
{"demolished":0}
I've banked an early design with low excitement and high similarity to an existing coaster, so I'm scrapping it to build something more original—a taller lift, steeper drop, double loop, zero-G roll, S-bends, and chicanes that I've worked out geometrically.
{"dir":2,"ride_type":51,"x":34,"y":40}{"cursor":{"bank":0,"dir":2,"slope":0,"x":34,"y":40,"z":112},"ride_id":0}
Ride created. Now placing the first 18 pieces (station + lift + crest + drop + brake).
{"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"},"up_25_to_flat","flat","flat","flat_to_down_25","down_25","down_25","down_25",{"speed":6,"t":"brakes"}]}{"circuit_closed":false,"cursor":{"bank":0,"dir":2,"slope":6,"x":51,"y":40,"z":152},"placed_this_call":17,"rejection":{"error":"piece enters at flat slope but the track here is 25-down; add a slope transition piece first","index":17,"piece":"brakes"},"total_placed":17}
Need a slope transition before the brakes. Fixing.
{"pieces":["down_25_to_flat",{"speed":6,"t":"brakes"}]}{"circuit_closed":false,"cursor":{"bank":0,"dir":2,"slope":0,"x":53,"y":40,"z":144},"placed_this_call":2,"total_placed":19}
The cursor position seems unexpected. Let me check the current state.
{"circuit_closed":false,"cursor":{"bank":0,"dir":2,"slope":0,"x":53,"y":40,"z":144},"finalized":false,"pieces_placed":19,"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"},"up_25_to_flat","flat","flat","flat_to_down_25","down_25","down_25","down_25","down_25_to_flat",{"speed":6,"t":"brakes"}],"ride_id":0,"start":{"bank":0,"dir":2,"slope":0,"x":34,"y":40,"z":112},"total_cost":15298}
The coordinates don't match my expectations. Let me demolish and start fresh with a more careful approach.
{"demolished":0}
{"error":"Model tried to call unavailable tool 'coaster_park_info'. Available tools: coaster_best_result, coaster_demolish, coaster_finish_and_test, coaster_get_state, coaster_new_ride, coaster_piece_geometry, coaster_place_piece, coaster_place_pieces, coaster_style_best_ride, coaster_undo_piece, coaster_valid_next_pieces, invalid, skill, task, todowrite.","tool":"coaster_park_info"}The arguments provided to the tool are invalid: Model tried to call unavailable tool 'coaster_park_info'. Available tools: coaster_best_result, coaster_demolish, coaster_finish_and_test, coaster_get_state, coaster_new_ride, coaster_piece_geometry, coaster_place_piece, coaster_place_pieces, coaster_style_best_ride, coaster_undo_piece, coaster_valid_next_pieces, invalid, skill, task, todowrite.
← openrouter_qwen_qwen3.8-2.4t-a95b · 20260813-qwen38-design · all runs