Replaces the single hand-built .tscn table with the Floorplan/Levels pattern from Destroyulator: Table.gd builds a playfield from a spec, Tables.gd holds the specs, Main.gd orchestrates. A table is now a Dictionary you can diff and hot-swap (T), parallel work doesn't collide in one scene file, and a headless autotest builds every table and proves the flippers swing. Part vocabulary: flipper, bumper, sling, target, drop (banked, with cleared detection), spinner (scores per revolution), saucer (captures + ejects), rollover (lit lanes/glyphs), ramp (speed-gated, scores only at the top), wall, post. Three ORIGINAL tables — NEON ARCADE (wide open, 3-bank, spinner lane), THE GROTTO (narrow, open outlanes, a 5-bank guarding the only ramp), THE FOUNDRY (long, twin ramps, upper flipper, 2x3 target array). Not traced from the vendored decomp. Main also centralises the engine divergence: Box3D's hinge motor runs opposite to Jolt/GodotPhysics, so flip_sign is resolved once at boot from the engine name rather than authoring two sets of tables. Caught by the new autotest: Godot's HingeJoint3D spins about its own local Z, so a flipper built in code needs the joint stood on end to swing about world Y. Commanded correctly and utterly motionless until fixed. AUTOTEST now: 3 tables, 7 flippers, 68-84 deg swing, ALL TABLES OK. Rules/Juice/Hud are spawned by class name if present, so those lanes land independently. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
18 lines
505 B
Plaintext
18 lines
505 B
Plaintext
; Godot 4.7 physics testbed for macrosoft3dpinball.
|
|
; Physics engine is switched via this setting (or an override.cfg written by run_probe.sh):
|
|
; "GodotPhysics3D" | "Jolt Physics" | "Box3D Physics (Extension)"
|
|
|
|
config_version=5
|
|
|
|
[application]
|
|
|
|
config/name="macrosoft3dpinball testbed"
|
|
run/main_scene="res://scenes/main.tscn"
|
|
config/features=PackedStringArray("4.7")
|
|
|
|
[physics]
|
|
|
|
3d/physics_engine="Box3D Physics (Extension)"
|
|
3d/default_gravity=9.81
|
|
3d/default_gravity_vector=Vector3(0, -0.99357, 0.1132)
|