Commit Graph
150 Commits
Author SHA1 Message Date
DottsGit e65e9fa76f feat: implement wall run state logic for player movement 2026-06-04 09:36:46 -04:00
DottsGit e9112d9b3d feat: add StateDash movement state with cooldown and momentum-based velocity logic 2026-06-04 09:29:34 -04:00
DottsGit 5e9f4bec8a feat: add test_level_builder script for debugging level generation 2026-06-04 09:22:30 -04:00
DottsGit f2afd31415 feat: implement pause menu with loadout management functionality 2026-06-04 09:20:05 -04:00
DottsGit 8eea7d6e36 feat: implement loadout management system, interactive pause menu, and weapon slot switching functionality 2026-06-04 09:12:16 -04:00
DottsGit 45fb7f0f38 feat: add state machine movement classes, double barrel shotgun weapon, and test level builder utility 2026-06-04 01:21:50 -04:00
Dotts a54b3d89b1 Merge pull request 'Feat/1 movement foundation' (#5) from feat/1-movement-foundation into main
Reviewed-on: #5
2026-06-03 21:34:25 -07:00
Dotts cd5d9427cb Merge branch 'main' into feat/1-movement-foundation 2026-06-03 21:34:16 -07:00
DottsGit 4184b0f8ff feat: implement state_wall_run for player movement system 2026-06-04 00:32:29 -04:00
DottsGit 0fd921481b feat: implement movement state machine, FPS camera rig, and test level builder scaffolding 2026-06-04 00:29:19 -04:00
DottsGit da277e9d35 feat: implement player movement controller and state machine with dash, slide, and wall-run mechanics 2026-06-03 21:55:10 -04:00
DottsGit 5726aa1043 docs: add master development document for Papaya Shooter project specifications 2026-06-03 19:58:53 -04:00
DottsGit a46e35431d feat: initialize movement system UID files, update import settings, and set main scene in project configuration 2026-06-03 19:57:51 -04:00
Hermes 415082d866 fix: floor-aligned spawn, remove double jump, enable crouch speed 2026-06-03 17:39:09 -04:00
Hermes d21d5a8b89 fix: restore KEY_SHIFT dash binding 2026-06-03 17:36:37 -04:00
Hermes dc2cb8ca26 fix: correct axis direction, air accel, and jump/dash input handling 2026-06-03 17:35:28 -04:00
Hermes 365264e819 fix: spawn capsule floor-aligned in test level 2026-06-03 17:28:46 -04:00
Hermes d86eb53065 fix: place floor under player and clean debug spam 2026-06-03 17:24:18 -04:00
Hermes e5e7a7284e fix: bootstrap process ticks after runtime script attach 2026-06-03 17:14:09 -04:00
Hermes 30770be7c0 debug: force process/physic process ticks after runtime script attach 2026-06-03 17:10:48 -04:00
Hermes 5cb2013d6c debug: log movement controller inputs/state/velocity each frame 2026-06-03 17:05:07 -04:00
Hermes 6c57f70fb4 fix: clean state_ground and ensure duck-type state machine bootstrap 2026-06-03 16:58:48 -04:00
Hermes 9c39d79696 fix: ensure player._ready() runs before MovementStateMachine._ready() 2026-06-03 16:56:28 -04:00
Hermes c463c29031 revert bogus debug edit in state_ground; restore clean update() entry 2026-06-03 16:55:41 -04:00
Hermes 6d2f31d962 fix: rewrite TestLevelBuilder with parse-safe InputMap bootstrapping 2026-06-03 16:54:21 -04:00
Hermes f47fc4827a test: self-bootstrap InputMap actions in TestLevelBuilder 2026-06-03 16:53:04 -04:00
Hermes ea7169048f fix: manually bootstrap state machine after runtime script attachment 2026-06-03 16:49:06 -04:00
Hermes 60091932bd fix: replace movement controller with parse-safe version for 4.6.3 2026-06-03 16:46:16 -04:00
Hermes 693145fd69 refactor: remove print_debug and switch to preload for movement scripts 2026-06-03 16:42:51 -04:00
Hermes c0a90df690 fix: wire movement controller before state machine; harden machine lookup 2026-06-03 15:14:10 -04:00
Hermes 24a8651a6d fix: guard input forwarding in PlayerMovementController; add movement_runner verifier 2026-06-03 15:09:00 -04:00
Hermes ceeff6a1ab fix: add smoke verifier, camera to TestLevel, fix player collision shape 2026-06-03 15:06:26 -04:00
Hermes 1feefbf811 test: load MovementStateMachine + state scripts via set_script() at runtime
Root cause: builder created plain Node instances for the state machine
and states, so _machine.player = self in PlayerMovementController
crashed with 'Invalid assignment ... on base object of type Node'.
Now each node gets its real script attached before _ready() runs.
2026-06-03 00:36:05 -04:00
Hermes 9bdbc69ddd fix: drop type hint on @onready _machine so runtime set_script path accepts MovementStateMachine 2026-06-03 00:34:24 -04:00
Hermes 872201aa85 fix: avoid typed @onready infer crash for MovementStateMachine
player_movement_controller.gd: use Node + get_node() instead of
typed MovementStateMachine + $ shorthand so runtime set_script paths
don't crash on @implicit_ready
2026-06-03 00:33:16 -04:00
Hermes dfed237a63 fix: unused param warning + @onready type mismatch for MovementStateMachine
- state_wall_run.gd: typed ray_origin/ray_end as Vector3
- test_level_builder.gd: restructure builder to put MovementStateMachine
  + state children under Player, attach camera under Player too
- player_movement_controller.gd: @onready uses get_node so type is not inferred
2026-06-03 00:32:03 -04:00
Hermes bb6cac9d7a test: full builder rewrite with player state machine, camera, and manual _ready()
- _build_player: creates Player (CharacterBody3D) with capsule,
  MovementStateMachine + 6 state children, attaches movement script
- Calls player._ready() manually after set_script (GDScript
  set_script does not auto-trigger _ready)
- Camera parented under Player so it follows movement
- Restores _build_camera() which was accidentally dropped
2026-06-03 00:28:56 -04:00
Hermes eeb074e58a fix(movement): typed Vector3 infer in state_wall_run.detect_wall() 2026-06-03 00:18:04 -04:00
Hermes 559c4bde8f fix(debug): multi-line string literal in test_level_builder.gd 2026-06-03 00:16:41 -04:00
Hermes 5a45f3e9bb fix: make TestLevel load on 4.6.3; build geometry from GDScript
- test_level.tscn: minimal Node3D root (zero SubResource references)
- debug/test_level_builder.gd: runtime floor/walls/lighting/camera/UI
  shapes/meshes created from BoxShape3D/BoxMesh — no .tscn subresources
- project.godot: revert features to 4.6 (installed build is 4.6.3)
2026-06-02 23:49:33 -04:00
Hermes f2bcbb6ac2 fix(scene): collision + light scale in TestLevel
- Use numeric SubResource(id) instead of uid:// strings (avoids parser error)
- Light transform: remove non-uniform scale, set only rotation + position
- Keep floor@y=-1.1, walls thin (0.4), PlayerSpawn unchanged
2026-06-02 23:45:47 -04:00
Hermes 52bb5e02c7 fix: make test_level.tscn load without subresources; align project features to Godot 4.2
- Removed all SubResource BoxShape3D references from test_level.tscn
- Changed PackedStringArray feature from 4.6 to 4.2
Scene is now pure nodes + transforms, no external resource IDs
2026-06-02 23:42:53 -04:00
Hermes d6ca58932e fix(scene): replace BoxShape3D.new() with SubResource blocks in test_level
SubResource UIDs: box_floor, box_wall_north, box_wall_east, box_wall_west
Removes parse error at line 9
2026-06-02 23:36:59 -04:00
Hermes 9d043c02e0 fix(scene): remove broken debug script ref from test_level.tscn
Rewrote scene without ext_resource / subresource UIDs so it loads from the repo root.
2026-06-02 23:28:18 -04:00
Hermes ebb6d1a750 feat(debug): add TestLevel debug scene for playable testing
- scenes/test_level/test_level.tscn — playable test environment (30x30 floor + 4 walls + ramp)
  Floor at y=-1, Player spawn at (0, 1.5, 8), FpsCamera at head height (y=1.7)
  DirectionalLight + WorldEnvironment + UI label overlay (speed/state/chain)
- debug/debug_test_env.sh — launch wrapper for manual playtesting

No code changes: raw physics testbed. Intended to be opened as first scene in Godot window.

Closes #2 (test-level scene task)
2026-06-02 23:15:52 -04:00
Hermes 6cac1f4032 fix: resolve GDScript parse errors in movement states
- state_dash.gd: Basis*Vector4 → Basis*Vector3 (no Vec4 in Godot 4.2)
- state_ground.gd: shape_owner_get_shape(0) → (0, 0); typed Variant vars; typed ray/normal
- state_slide.gd: same shape API fix + unique shape vars per branch
- state_wall_run.gd: split 'and' line into single typed bool expression
2026-06-02 23:15:20 -04:00
Hermes 63a6844421 docs: add DESIGN_MASTER.md — §1–§6 master spec for Papaya-Shooter
Covers: vision, movement mechanics (ground/air/wallrun/cling/slide/dash/chain),
combat (weapons/enemies), audio/juice, content roadmap, and decision log.
2026-06-02 22:37:28 -04:00
Hermes 202f67fa32 feat(movement): add movement state machine with air/ground/wallrun/slide/dash/ground states
- MovementStateMachine: core state machine base
- MovementParams: export-rich tunable resource
- StateGround/StateAir: grounded & aeriel locomotion with coyote, buffered jump, bunny hop
- StateWallRun / StateWallCling: wall-based traversal with wall-jump off
- StateSlide: sprint-parallel slide with friction fallout
- StateDash: burst dash with momentum brake
- PlayerMovementController: entry point wiring to CharacterBody3D
- input_map.cfg: full action map reference file
- characters/player/player_base.tscn: placeholder scene
- movement/tests/test_fsm_runner.gd: 9-state unit test runner

Closes #1
2026-06-02 22:36:00 -04:00
Dotts a4863a7b08 chore: add Godot 4.x .gitignore 2026-06-02 22:30:08 -04:00
DottsGit 18b420cc44 default godot project 2026-06-02 22:21:03 -04:00