Data-driven parks: one heightAt(x,z) evaluated from element JSON drives the editor viewport, collision, test ride, and exported game levels. Ships with Paddo ported from bookquoy, a MODELBEAST panel (gen images, cut bg, image->3D, place farm GLBs as props), image decals + reference underlay tracing, a park design linter (docs/DESIGN_PRINCIPLES.md), THPS-style instant test ride, and a level.js codegen that drops straight into bookquoy. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
76 lines
5.7 KiB
JSON
76 lines
5.7 KiB
JSON
{
|
|
"name": "PADDO",
|
|
"bounds": { "x0": -40, "x1": 40, "z0": -26, "z1": 26 },
|
|
"slabColor": "#7fae6f",
|
|
"grassColor": "#4d7c3c",
|
|
"spawn": { "x": -32, "z": -18, "heading": 0.85 },
|
|
"elements": [
|
|
{ "id": "wall_w", "kind": "quarter", "x": -40, "z": 0, "rot": -1.5708, "len": 52, "r0": 0.9, "r1": 1.8, "lump": 0, "deck": 0 },
|
|
{ "id": "wall_n", "kind": "quarter", "x": 0, "z": -26, "rot": 0, "len": 80, "r0": 0.5, "r1": 1.1, "lump": 0, "deck": 0 },
|
|
{ "id": "lumpy_s", "kind": "quarter", "x": 1, "z": 26, "rot": 3.1416, "len": 34, "r0": 1.8, "r1": 1.8, "lump": 0.12, "deck": 0 },
|
|
{ "id": "bank_900", "kind": "bank", "x": -21, "z": 26, "rot": 3.1416, "len": 10, "h": 0.9, "run": 2.4, "deck": 0 },
|
|
{ "id": "bank_ne", "kind": "bank", "x": 27, "z": -26, "rot": 0, "len": 14, "h": 0.8, "run": 2.2, "deck": 0 },
|
|
{ "id": "bowl_w", "kind": "bowl", "x": -27, "z": -6, "rot": 0, "size": 4.2, "depth": 1.5 },
|
|
{ "id": "volcano", "kind": "mogul", "x": -18, "z": 4, "h": 0.7, "s": 2.6 },
|
|
{ "id": "mogul_1", "kind": "mogul", "x": -2, "z": 6, "h": 0.45, "s": 2.2 },
|
|
{ "id": "mogul_rb", "kind": "mogul", "x": 2, "z": 9, "h": 0.8, "s": 2.5 },
|
|
{ "id": "spine_1", "kind": "spine", "x": -8, "z": 12, "rot": 0, "len": 8, "r": 1.2 },
|
|
{ "id": "island", "kind": "dome", "x": 2, "z": -2, "rot": 0, "rx": 7, "rz": 4.5, "h": 0.14 },
|
|
{ "id": "funbox_c", "kind": "funbox", "x": 16, "z": -2, "rot": 0, "hw": 2.5, "hd": 1.2, "h": 0.9, "skirt": 1.6 },
|
|
{ "id": "ledge_a", "kind": "ledge", "x": 8.5, "z": -11, "rot": 0, "hw": 1.5, "hd": 0.8, "h": 0.6 },
|
|
{ "id": "ledge_b", "kind": "ledge", "x": 11.5,"z": -11, "rot": 0, "hw": 1.5, "hd": 0.8, "h": 0.45 },
|
|
{ "id": "ledge_c", "kind": "ledge", "x": 14.5,"z": -11, "rot": 0, "hw": 1.5, "hd": 0.8, "h": 0.3 },
|
|
{ "id": "manny", "kind": "funbox", "x": 26, "z": -14, "rot": 0, "hw": 2.2, "hd": 1.2, "h": 0.35, "skirt": 1.1 },
|
|
{ "id": "long_ldg", "kind": "ledge", "x": 33.5,"z": -2, "rot": 0, "hw": 0.5, "hd": 12, "h": 0.42 },
|
|
{ "id": "stairs_1", "kind": "stairs", "x": 6, "z": 12.2,"rot": 0, "width": 4.8, "h": 0.6, "steps": 4, "going": 0.6, "platDepth": 3.2 }
|
|
],
|
|
"rails": [
|
|
{ "id": "r1", "name": "Funbox Flat Rail", "a": [13.5, -2.9], "b": [18.5, -2.9], "ya": 1.25, "yb": 1.25, "kind": "rail" },
|
|
{ "id": "r2", "name": "Funbox Down Rail", "a": [18.5, -1.0], "b": [21.8, -1.0], "ya": 1.2, "yb": 0.35, "kind": "rail" },
|
|
{ "id": "r3", "name": "P-Rail", "a": [22.0, 8.0], "b": [26.0, 8.0], "ya": 0.35, "yb": 0.35, "kind": "rail" },
|
|
{ "id": "r4", "name": "Rainbow Rail", "a": [-0.4, 9.0], "b": [2.0, 9.0], "ya": 0.45, "yb": 1.35, "kind": "rail" },
|
|
{ "id": "r5", "name": "Rainbow Rail", "a": [2.0, 9.0], "b": [4.4, 9.0], "ya": 1.35, "yb": 0.45, "kind": "rail" },
|
|
{ "id": "r6", "name": "Long Metal Ledge", "a": [33.0, -13.5], "b": [33.0, 9.5], "ya": 0.42, "yb": 0.42, "kind": "ledge" },
|
|
{ "id": "r7", "name": "Down Ledge", "a": [7.0, -11.9], "b": [10.0, -11.9],"ya": 0.6, "yb": 0.6, "kind": "ledge" },
|
|
{ "id": "r8", "name": "Down Ledge", "a": [10.0, -11.9], "b": [13.0, -11.9],"ya": 0.45, "yb": 0.45, "kind": "ledge" },
|
|
{ "id": "r9", "name": "Down Ledge", "a": [13.0, -11.9], "b": [16.0, -11.9],"ya": 0.3, "yb": 0.3, "kind": "ledge" },
|
|
{ "id": "r10", "name": "Stair Hubba", "a": [3.4, 12.2], "b": [3.4, 15.0], "ya": 0.62, "yb": 0.06, "kind": "ledge" },
|
|
{ "id": "r11", "name": "Stair Hubba", "a": [8.6, 12.2], "b": [8.6, 15.0], "ya": 0.62, "yb": 0.06, "kind": "ledge" }
|
|
],
|
|
"gaps": [
|
|
{ "id": "g1", "name": "THE STAIR GAP", "x": 6, "z": 13.6, "r": 2.4 },
|
|
{ "id": "g2", "name": "FUNBOX FLY", "x": 16, "z": -2, "r": 2.8 },
|
|
{ "id": "g3", "name": "SPINE TRANSFER", "x": -8, "z": 12, "r": 2.4 },
|
|
{ "id": "g4", "name": "BOWL HIP", "x": -22.5, "z": -2, "r": 2.2 },
|
|
{ "id": "g5", "name": "RAINBOW ARC", "x": 2, "z": 9, "r": 2.2 },
|
|
{ "id": "g6", "name": "LEDGE LEAP", "x": 11.5, "z": -11, "r": 2.6 },
|
|
{ "id": "g7", "name": "KEYHOLE GAP", "x": -36, "z": -14, "r": 2.6 },
|
|
{ "id": "g8", "name": "CAXTON CARVE", "x": 10, "z": -22.5, "r": 2.6 },
|
|
{ "id": "g9", "name": "ISLAND HOP", "x": 2, "z": 2.6, "r": 2.2 }
|
|
],
|
|
"letters": [
|
|
{ "id": "L1", "ch": "B", "x": -27, "y": 0.9, "z": -6 },
|
|
{ "id": "L2", "ch": "O", "x": -8, "y": 2.3, "z": 12 },
|
|
{ "id": "L3", "ch": "O", "x": 16, "y": 2.4, "z": -2 },
|
|
{ "id": "L4", "ch": "K", "x": 6, "y": 1.6, "z": 14.2 },
|
|
{ "id": "L5", "ch": "Q", "x": -35, "y": 2.2, "z": -13 },
|
|
{ "id": "L6", "ch": "U", "x": 2, "y": 2.5, "z": 9 },
|
|
{ "id": "L7", "ch": "O", "x": 33, "y": 1.6, "z": -2 },
|
|
{ "id": "L8", "ch": "Y", "x": 24, "y": 1.5, "z": 8 }
|
|
],
|
|
"zones": [
|
|
{ "id": "z1", "shape": "rect", "x": 23, "z": 0, "rot": 0, "hw": 17, "hd": 26, "color": "#9aa0a2" },
|
|
{ "id": "z2", "shape": "ellipse", "x": 2, "z": -2, "rot": 0, "hw": 7, "hd": 4.5, "color": "#557f3f" },
|
|
{ "id": "z3", "shape": "rect", "x": -27, "z": -6, "rot": 0, "hw": 4.2, "hd": 4.2, "color": "#6a7d70" }
|
|
],
|
|
"decals": [],
|
|
"props": [
|
|
{ "id": "p1", "src": "builtin:fig", "x": 0, "z": -3, "rot": 0, "scale": 1.25 },
|
|
{ "id": "p2", "src": "builtin:fig", "x": 4.5, "z": -1, "rot": 0, "scale": 1.0 },
|
|
{ "id": "p3", "src": "builtin:fig", "x": -1, "z": 1, "rot": 0, "scale": 0.9 },
|
|
{ "id": "p4", "src": "builtin:fig", "x": -34, "z": 16, "rot": 0, "scale": 1.1 },
|
|
{ "id": "p5", "src": "builtin:fig", "x": 30, "z": 20, "rot": 0, "scale": 1.3 },
|
|
{ "id": "p6", "src": "builtin:fig", "x": -14, "z": -30, "rot": 0, "scale": 1.2 }
|
|
]
|
|
}
|