feat: Implement Phase 6a Airborne Mechanics and Landing Absorption

- Added new scene file `test_fall.scene` for testing airborne dynamics.
- Created architecture proposal in `PHASE_6a_AIRBORNE_LANDING.md` detailing airborne momentum, procedural air pose, and landing impact absorption mechanics.
- Developed specifications in `phase_6a_airborne_landing.md` outlining implementation decisions, targets, and static contracts for the airborne system.
- Introduced focused regression tests in `test_phase6a_airborne_landing.gd` to validate airborne pose, momentum, landing timeline, and queue behavior.
- Ensured all tests pass with 100% assertion success.
This commit is contained in:
2026-09-17 19:09:54 -04:00
parent 3e39fd9287
commit 2071ee03b7
10 changed files with 1871 additions and 45 deletions
+540 -8
View File
@@ -3,10 +3,10 @@
"scene_name": "Untitled",
"camera": {
"position": {
"x": 1070.22937011719,
"y": -54.6092796325684
"x": 1074.43005371094,
"y": 2419.70385742188
},
"zoom": 0.375657439231873
"zoom": 0.17715610563755
},
"objects": [
{
@@ -205,8 +205,8 @@
{
"type": "walk_to",
"target": {
"x": 3112.55639648438,
"y": 493.14306640625
"x": -1861.99194335938,
"y": 434.2099609375
}
}
]
@@ -439,8 +439,8 @@
"file_id": "area_1",
"type": "area",
"position": {
"x": 1650.52270507813,
"y": -186.824584960938
"x": 3245.060546875,
"y": -1320.83642578125
},
"rotation": 0.0,
"scale": {
@@ -451,6 +451,538 @@
"x": 96.0,
"y": 96.0
}
},
{
"file_id": "terrain_30",
"type": "terrain",
"position": {
"x": -488.163452148438,
"y": -1807.93115234375
},
"rotation": 0.0,
"asset_id": "ramp",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_31",
"type": "terrain",
"position": {
"x": 204.134155273438,
"y": -1419.78088378906
},
"rotation": 0.0,
"asset_id": "ramp",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_32",
"type": "terrain",
"position": {
"x": 340.276489257813,
"y": -1889.03723144531
},
"rotation": 0.0,
"asset_id": "ramp",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_33",
"type": "terrain",
"position": {
"x": 1620.59313964844,
"y": -130.774658203125
},
"rotation": 74.9999986719706,
"asset_id": "ramp",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_34",
"type": "terrain",
"position": {
"x": 1753.83874511719,
"y": -12.01220703125
},
"rotation": 74.9999986719706,
"asset_id": "ramp",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_35",
"type": "terrain",
"position": {
"x": 1910.25769042969,
"y": 118.336669921875
},
"rotation": 74.9999986719706,
"asset_id": "ramp",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_36",
"type": "terrain",
"position": {
"x": -5376.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_37",
"type": "terrain",
"position": {
"x": -5184.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_38",
"type": "terrain",
"position": {
"x": -4992.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_39",
"type": "terrain",
"position": {
"x": -4800.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_40",
"type": "terrain",
"position": {
"x": -4608.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_41",
"type": "terrain",
"position": {
"x": -4416.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_42",
"type": "terrain",
"position": {
"x": -4224.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_43",
"type": "terrain",
"position": {
"x": -4032.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_44",
"type": "terrain",
"position": {
"x": -3840.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_45",
"type": "terrain",
"position": {
"x": -3648.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_46",
"type": "terrain",
"position": {
"x": -3456.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_47",
"type": "terrain",
"position": {
"x": -3264.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_48",
"type": "terrain",
"position": {
"x": -3072.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_49",
"type": "terrain",
"position": {
"x": -2880.0,
"y": 5600.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_50",
"type": "terrain",
"position": {
"x": -4054.02685546875,
"y": 1123.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_51",
"type": "terrain",
"position": {
"x": -3862.02685546875,
"y": 1123.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_52",
"type": "terrain",
"position": {
"x": -3670.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_53",
"type": "terrain",
"position": {
"x": -3478.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_54",
"type": "terrain",
"position": {
"x": -3286.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_55",
"type": "terrain",
"position": {
"x": -3094.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_56",
"type": "terrain",
"position": {
"x": -2902.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_57",
"type": "terrain",
"position": {
"x": -2710.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_58",
"type": "terrain",
"position": {
"x": -2518.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_59",
"type": "terrain",
"position": {
"x": -2326.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_60",
"type": "terrain",
"position": {
"x": -2134.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_61",
"type": "terrain",
"position": {
"x": -1942.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_62",
"type": "terrain",
"position": {
"x": -1750.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_63",
"type": "terrain",
"position": {
"x": -1558.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_64",
"type": "terrain",
"position": {
"x": -1366.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_65",
"type": "terrain",
"position": {
"x": -1174.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_66",
"type": "terrain",
"position": {
"x": -982.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_67",
"type": "terrain",
"position": {
"x": -790.02685546875,
"y": 1091.7216796875
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
}
],
"event_rules": [
@@ -485,7 +1017,7 @@
],
"metadata": {
"created_unix": 1789479607,
"modified_unix": 1789529735.774,
"modified_unix": 1789616216.822,
"autosave": false,
"source_path": ""
}
+407
View File
@@ -0,0 +1,407 @@
{
"version": "1.0",
"scene_name": "Untitled",
"camera": {
"position": {
"x": 976.030700683594,
"y": 725.191955566406
},
"zoom": 0.282236993312836
},
"objects": [
{
"file_id": "terrain_1",
"type": "terrain",
"position": {
"x": -960.0,
"y": -288.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_2",
"type": "terrain",
"position": {
"x": -768.0,
"y": -288.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_3",
"type": "terrain",
"position": {
"x": -576.0,
"y": -288.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_4",
"type": "terrain",
"position": {
"x": -384.0,
"y": -288.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_5",
"type": "terrain",
"position": {
"x": -192.0,
"y": -288.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_6",
"type": "terrain",
"position": {
"x": 0.0,
"y": -288.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_7",
"type": "terrain",
"position": {
"x": 192.0,
"y": -288.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_8",
"type": "terrain",
"position": {
"x": 384.0,
"y": -288.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_9",
"type": "terrain",
"position": {
"x": 576.0,
"y": -288.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "stickman_1",
"type": "stickman",
"position": {
"x": -222.0,
"y": -959.0
},
"rotation": 0.0,
"stk_path": "res://stickmen/break.stk",
"facing_profile": "FORWARD",
"action_queue": [
{
"type": "walk_to",
"target": {
"x": -1302.19653320313,
"y": -305.856567382813
}
},
{
"type": "ragdoll"
}
]
},
{
"file_id": "terrain_10",
"type": "terrain",
"position": {
"x": 768.0,
"y": 2048.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_11",
"type": "terrain",
"position": {
"x": 960.0,
"y": 2048.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_12",
"type": "terrain",
"position": {
"x": 1152.0,
"y": 2048.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_13",
"type": "terrain",
"position": {
"x": 1344.0,
"y": 2048.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_14",
"type": "terrain",
"position": {
"x": 1536.0,
"y": 2080.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_15",
"type": "terrain",
"position": {
"x": 1728.0,
"y": 2080.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_16",
"type": "terrain",
"position": {
"x": 1920.0,
"y": 2080.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_17",
"type": "terrain",
"position": {
"x": 2112.0,
"y": 2080.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_18",
"type": "terrain",
"position": {
"x": -2112.0,
"y": 2016.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_19",
"type": "terrain",
"position": {
"x": -1920.0,
"y": 2016.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_20",
"type": "terrain",
"position": {
"x": -1728.0,
"y": 2016.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_21",
"type": "terrain",
"position": {
"x": -1536.0,
"y": 2016.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_22",
"type": "terrain",
"position": {
"x": -1344.0,
"y": 1984.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_23",
"type": "terrain",
"position": {
"x": -1152.0,
"y": 1984.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_24",
"type": "terrain",
"position": {
"x": -960.0,
"y": 1984.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_25",
"type": "terrain",
"position": {
"x": -768.0,
"y": 1984.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
},
{
"file_id": "terrain_26",
"type": "terrain",
"position": {
"x": -576.0,
"y": 1984.0
},
"rotation": 0.0,
"asset_id": "ground",
"scale": {
"x": 1.0,
"y": 1.0
}
}
],
"event_rules": [],
"metadata": {
"created_unix": 1789666501,
"modified_unix": 1789666824.739,
"autosave": false,
"source_path": ""
}
}