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