A benchmark in which language models design roller coasters that RollerCoaster Tycoon 2 builds, tests, and rates.
I'll load the coaster tools, then plan and build a closed circuit quickly to bank a score early.
{"max_results":11,"query":"select:mcp__coaster__new_ride,mcp__coaster__place_piece,mcp__coaster__place_pieces,mcp__coaster__valid_next_pieces,mcp__coaster__piece_geometry,mcp__coaster__undo_piece,mcp__coaster__get_state,mcp__coaster__finish_and_test,mcp__coaster__best_result,mcp__coaster__demolish,mcp__coaster__screenshot"}
{"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":0,"ride_type":51,"x":60,"y":60}{"cursor":{"bank":0,"dir":0,"slope":0,"x":60,"y":60,"z":112},"ride_id":0}
I'll lay out a counter-clockwise loop west of the lake, incorporating a drop, banked turns, a vertical loop, corkscrew, and s-bends before returning to the station—starting construction on the first half now.
{"pieces":["begin_station","middle_station","end_station","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"},{"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"},"up_25_to_flat","flat_to_down_60","down_60","down_60","down_60_to_down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat","flat_to_up_25","left_vertical_loop","down_25_to_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","left_corkscrew_up","right_corkscrew_down","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat"]}{"circuit_closed":false,"cursor":{"bank":0,"dir":2,"slope":0,"x":38,"y":38,"z":112},"placed_this_call":46,"total_placed":46}
Cursor is exactly at (38,38) facing +x as planned. Placing the rest of the circuit in one batch.
{"pieces":[{"speed":22,"t":"booster"},"flat_to_up_25","half_loop_up","half_loop_down","down_25_to_flat","flat_to_up_25","up_25","up_25_to_flat","flat_to_down_25","down_25","down_25_to_flat","s_bend_right","s_bend_left","flat_to_up_25","up_25","up_25_to_flat","flat_to_down_25","down_25","down_25_to_flat","left_turn_5","flat_to_up_25","up_25","up_25","up_25_to_flat","flat_to_down_25","down_25","down_25","down_25_to_flat","flat_to_up_25","up_25","up_25_to_flat","flat_to_down_25","down_25","down_25_to_flat",{"speed":10,"t":"brakes"},{"speed":10,"t":"brakes"},"flat","flat","left_turn_3","flat"]}{"circuit_closed":false,"cursor":{"bank":15,"dir":0,"slope":0,"x":40,"y":38,"z":272},"placed_this_call":3,"rejection":{"error":"Twister Roller Coaster 1 in the way","index":3,"piece":"half_loop_down"},"total_placed":49}
{"cursor":{"bank":15,"dir":0,"slope":0,"x":40,"y":38,"z":272},"valid_pieces":["left_corkscrew_down","right_corkscrew_down"]}
The half-loop-down move is blocked by the loop's own tiles, but a corkscrew down works instead, creating a dive-loop inversion that exits north at x=39. I'll descend north, bank east along y=50, and head back to the station.
{"pieces":["right_corkscrew_down","flat_to_down_25","down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_right_bank","banked_right_turn_5","right_bank_to_flat"]}{"circuit_closed":false,"cursor":{"bank":0,"dir":2,"slope":0,"x":43,"y":49,"z":112},"placed_this_call":10,"total_placed":59}
{"pieces":["flat_to_up_25","up_25","up_25","up_25_to_flat","flat_to_down_25","down_25","down_25","down_25_to_flat","s_bend_right","s_bend_left","flat_to_up_25","up_25_to_flat","flat_to_down_25","down_25_to_flat","left_turn_5",{"speed":10,"t":"brakes"},{"speed":10,"t":"brakes"},"flat","flat","flat","flat","flat","left_turn_3","flat"]}{"circuit_closed":true,"cursor":{"bank":0,"dir":0,"slope":0,"x":60,"y":60,"z":112},"placed_this_call":24,"total_placed":83}
Circuit closed on the first try. Testing now to bank a score.
{"bounds":{"max_tile_x":63,"max_tile_y":60,"max_z":376,"min_tile_x":30,"min_tile_y":38,"min_z":112},"placed_pieces":["begin_station","middle_station","end_station","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"},{"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"},"up_25_to_flat","flat_to_down_60","down_60","down_60","down_60_to_down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat","flat_to_up_25","left_vertical_loop","down_25_to_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","left_corkscrew_up","right_corkscrew_down","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat",{"speed":22,"t":"booster"},"flat_to_up_25","half_loop_up","right_corkscrew_down","flat_to_down_25","down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_right_bank","banked_right_tur… (2351 chars)
Saved 6.41 as a fallback, but it's shorter than the prior 6.9 attempt. I'll rebuild using the proven first half, cut the unbanked s-bends that hurt lateral G, and extend north with a second chain lift and drop.
{"demolished":0}
{"dir":0,"ride_type":51,"x":60,"y":60}{"cursor":{"bank":0,"dir":0,"slope":0,"x":60,"y":60,"z":112},"ride_id":0}
{"pieces":["begin_station","middle_station","end_station","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"},{"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"},"up_25_to_flat","flat_to_down_60","down_60","down_60","down_60_to_down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat","flat_to_up_25","left_vertical_loop","down_25_to_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","left_corkscrew_up","right_corkscrew_down","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat",{"speed":22,"t":"booster"},"flat_to_up_25","half_loop_up","right_corkscrew_down","flat_to_down_25","down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_right_bank","banked_right_turn_5","right_bank_to_flat","flat_to_up_25","up_25","up_25","up_25_to_flat","flat_to_down_25","down_25","dow… (1692 chars){"circuit_closed":false,"cursor":{"bank":0,"dir":0,"slope":0,"x":60,"y":73,"z":112},"placed_this_call":100,"total_placed":100}
Cursor is at (60,73) facing west as planned. Placing the second lift, drop, and the return legs to close the circuit.
{"pieces":["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"},{"chain":true,"t":"up_25"},{"chain":true,"t":"up_25"},"up_25_to_flat","flat_to_down_60","down_60","down_60_to_down_25","down_25","down_25","down_25_to_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","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat","flat","flat","flat_to_left_bank","banked_left_turn_5","left_bank_to_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","flat_to_up_25","up_25","up_25_to_flat","flat_to_down_25","down_25","down_25_to_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":10,"t":"brakes"},{"speed":10,"t":"brakes"},"flat","right_turn_3","flat","right_turn_3"]}{"circuit_closed":true,"cursor":{"bank":0,"dir":0,"slope":0,"x":60,"y":60,"z":112},"placed_this_call":61,"total_placed":161}
Closed with 161 pieces. Testing.
{"bounds":{"max_tile_x":64,"max_tile_y":73,"max_z":376,"min_tile_x":30,"min_tile_y":38,"min_z":112},"placed_pieces":["begin_station","middle_station","end_station","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"},{"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"},"up_25_to_flat","flat_to_down_60","down_60","down_60","down_60_to_down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat","flat_to_up_25","left_vertical_loop","down_25_to_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","left_corkscrew_up","right_corkscrew_down","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat",{"speed":22,"t":"booster"},"flat_to_up_25","half_loop_up","right_corkscrew_down","flat_to_down_25","down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_right_bank","banked_right_tur… (3598 chars)
Excitement is capped by high lateral G (2.89) from the banked turn hit at top speed after the drop. I'll rebuild with a vertical loop right after the drop instead, taking the turn slower, and cut one lift piece.
{"dir":0,"ride_type":51,"x":60,"y":60}{"cursor":{"bank":0,"dir":0,"slope":0,"x":60,"y":60,"z":112},"ride_id":0}
{"pieces":["begin_station","middle_station","end_station","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"},{"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"},"up_25_to_flat","flat_to_down_60","down_60","down_60","down_60_to_down_25","down_25","down_25","down_25_to_flat","flat_to_up_25","left_vertical_loop","down_25_to_flat","flat_to_left_bank","banked_left_turn_5","left_bank_to_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","left_corkscrew_up","right_corkscrew_down","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat",{"speed":22,"t":"booster"},"flat_to_up_25","half_loop_up","right_corkscrew_down","flat_to_down_25","down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_right_bank","banked_right_turn_5","right_bank_to_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","flat_to_up_2… (2705 chars){"circuit_closed":true,"cursor":{"bank":0,"dir":0,"slope":0,"x":60,"y":60,"z":112},"placed_this_call":161,"total_placed":161}
Closed again. Testing this version.
{"bounds":{"max_tile_x":64,"max_tile_y":74,"max_z":360,"min_tile_x":28,"min_tile_y":41,"min_z":112},"placed_pieces":["begin_station","middle_station","end_station","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"},{"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"},"up_25_to_flat","flat_to_down_60","down_60","down_60","down_60_to_down_25","down_25","down_25","down_25_to_flat","flat_to_up_25","left_vertical_loop","down_25_to_flat","flat_to_left_bank","banked_left_turn_5","left_bank_to_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","left_corkscrew_up","right_corkscrew_down","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat",{"speed":22,"t":"booster"},"flat_to_up_25","half_loop_up","right_corkscrew_down","flat_to_down_25","down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_right_bank","banked_right_turn_5","right_bank_to_flat","flat_to_up… (3621 chars)
Best so far is 6.94. This version has intensity headroom (8.13), so one more build: taller second lift straight into a second vertical loop (fourth inversion) while keeping everything else.
{"dir":0,"ride_type":51,"x":60,"y":60}{"cursor":{"bank":0,"dir":0,"slope":0,"x":60,"y":60,"z":112},"ride_id":0}
{"pieces":["begin_station","middle_station","end_station","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"},{"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"},"up_25_to_flat","flat_to_down_60","down_60","down_60","down_60_to_down_25","down_25","down_25","down_25_to_flat","flat_to_up_25","left_vertical_loop","down_25_to_flat","flat_to_left_bank","banked_left_turn_5","left_bank_to_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","left_corkscrew_up","right_corkscrew_down","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat",{"speed":22,"t":"booster"},"flat_to_up_25","half_loop_up","right_corkscrew_down","flat_to_down_25","down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_right_bank","banked_right_turn_5","right_bank_to_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","flat_to_up_2… (2847 chars){"circuit_closed":false,"cursor":{"bank":0,"dir":0,"slope":0,"x":61,"y":60,"z":112},"placed_this_call":166,"total_placed":166}
One tile short of the station. Adding a single flat to close.
{"piece":"flat"}{"circuit_closed":true,"cost":600,"cursor":{"bank":0,"dir":0,"slope":0,"x":60,"y":60,"z":112},"pieces_placed":167,"placed":"flat"}
{"bounds":{"max_tile_x":64,"max_tile_y":74,"max_z":360,"min_tile_x":28,"min_tile_y":41,"min_z":112},"placed_pieces":["begin_station","middle_station","end_station","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"},{"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"},"up_25_to_flat","flat_to_down_60","down_60","down_60","down_60_to_down_25","down_25","down_25","down_25_to_flat","flat_to_up_25","left_vertical_loop","down_25_to_flat","flat_to_left_bank","banked_left_turn_5","left_bank_to_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","left_corkscrew_up","right_corkscrew_down","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat",{"speed":22,"t":"booster"},"flat_to_up_25","half_loop_up","right_corkscrew_down","flat_to_down_25","down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_right_bank","banked_right_turn_5","right_bank_to_flat","flat_to_up… (3771 chars)
{"bounds":{"max_tile_x":64,"max_tile_y":74,"max_z":360,"min_tile_x":28,"min_tile_y":41,"min_z":112},"placed_pieces":["begin_station","middle_station","end_station","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"},{"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"},"up_25_to_flat","flat_to_down_60","down_60","down_60","down_60_to_down_25","down_25","down_25","down_25_to_flat","flat_to_up_25","left_vertical_loop","down_25_to_flat","flat_to_left_bank","banked_left_turn_5","left_bank_to_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","left_corkscrew_up","right_corkscrew_down","flat_to_left_bank","banked_left_turn_5","left_bank_to_flat",{"speed":22,"t":"booster"},"flat_to_up_25","half_loop_up","right_corkscrew_down","flat_to_down_25","down_25","down_25","down_25","down_25","down_25_to_flat","flat_to_right_bank","banked_right_turn_5","right_bank_to_flat","flat_to_up… (3771 chars)
Best banked score this round is confirmed at 7.10, up from 6.9 last round. Four builds this round, all closed circuits and none crashed: | Build | Excitement | Intensity | Length | Inversions | |---|---|---|---|---| | Short west loop | 6.41 | 9.24 | 553 | 3 | | Plus northern extension | 6.94 | 10.11 | 943 | 3 | | Loop moved before the turn | 6.92 | 8.13 | 944 | 3 | | Taller second lift into a second loop | 7.10 | 8.62 | 1014 | 4 | The winning layout is a counter-clockwise circuit west of the lake: a 13-piece chain lift on y=60 into a 60-degree drop, straight into a vertical loop, a banked turn south, an airtime hill, a corkscrew, then a boosted half-loop exiting through a corkscrew down as a dive-loop. It returns east along y=52, north at x=64, then a second 11-piece lift on y=74 drops into a second vertical loop before hills bring it back along y=64 to the station. Similarity to the stock library is 0.37, below the penalty threshold. Nothing was named or coloured, as instructed. Best coaster: 167-piece twister with two lifts and four inversions, excitement 7.10, intensity 8.62, nausea 4.64.
← claude-fable-5-1 · 20260902-fable51-design-full · all runs