Commit Graph
59 Commits
Author SHA1 Message Date
Hermes a2956635c0 fix: third-person camera orbits player facing + robust animation handling
Third-person camera:
- Camera offset now follows player's forward direction using basis.z
- Smoothly orbits behind player when they turn
- Looks at player's head area (y+1.5)

SkinnedPlayerModel:
- Creates AnimationPlayer programmatically if GLB doesn't have one
- Copies animations from armature's animation_data to the player
- Handles both direct actions and NLA tracks
- More detailed debug output for scene tree and animation state
2026-06-22 22:02:30 -04:00
Hermes c8fcefe7ab fix: can't use look_at() before node is in tree, use rotation_degrees instead 2026-06-22 20:36:13 -04:00
Hermes b1aec93fd5 fix: animation debug + F1 third-person camera
SkinnedPlayerModel:
- Added _print_tree debug to see GLB scene structure at runtime
- Auto-play Idle animation on load
- Added periodic debug output for animation state
- Only change animation when target differs from current

Third-person camera:
- F1 toggles between FPS and third-person view
- Third-person camera positioned behind/above player
- Smooth follow with lerp
- Camera tracks player position each frame
2026-06-22 19:55:54 -04:00
Hermes 92713a681a fix(miku): correct scale + animation playback
- Fixed Blender export: remove FBX armature modifier before scaling,
  then transform_apply(scale=True) before creating new armature
- Model now exports at correct 1.8 unit height (verified in Blender)
- SkinnedPlayerModel now polls MovementStateMachine in _process
  to drive animations based on movement state
- Player 1 gets Miku at origin, others get procedural humanoid at y=-0.9
2026-06-22 18:15:03 -04:00
Hermes ae8231d31d feat(miku): proper rigged model from Sketchfab + Blender
Pipeline:
1. Downloaded TDA-style Miku model from Sketchfab (19MB FBX, 38K verts)
2. Imported to Blender, scaled to Godot humanoid proportions (1.8u tall)
3. Created clean 17-bone humanoid armature (Hips/Spine/Chest/Head/Arms/Legs)
4. Auto-weight-painted mesh to armature
5. Added Idle (breath bounce) and Run (cycle) animations
6. Exported as GLB with embedded animations (3MB)

New:
- SkinnedPlayerModel class: loads GLB with own armature+animations
- Player 1 spawns with Miku model, others get procedural humanoid
- Completely separate from procedural model system

Files:
- assets/characters/skins/miku_rigged_final.glb (3MB, 48K verts, 17 bones, 2 anims)
- characters/skinned_player_model.gd
- Removed old procedural GLB attempts
2026-06-22 17:12:24 -04:00
Hermes b0fdc508f1 feat(miku): add rigged Miku character model with armature
- Generated rigged Miku model in Blender (79 mesh parts, 17 bones)
- Bone names match Godot Humanoid skeleton (Hips, Spine, Chest, Head, etc.)
- Includes idle animation (breath bounce)
- Fixed GLB export for Blender 5.0 API compatibility
- Updated HumanoidModel.apply_skin() with orientation fix
- Player 1 spawns with Miku rigged model, others get default blue
- Preview renders in docs/characters/skins/

Pipeline established:
- Blender headless -> Python script -> GLB export -> Godot import
- Skin system: PlayerSkin resource + SkinManager
- apply_skin() handles both GLB model and procedural color tint
2026-06-22 16:51:22 -04:00
Hermes a55eaff279 feat(skin): add skin system + Miku character skin
Skin System:
- PlayerSkin resource class (model_path, color_tint, etc.)
- SkinManager with default skins: Default, Red Team, Forest, Miku
- HumanoidModel.apply_skin() supports both GLB model replacement
  and procedural color tinting
- Procedural meshes auto-hide when GLB model is loaded

Miku Skin:
- 43-part procedural model generated in Blender (headless)
- Twin tails, headphones, thigh-high socks, idol outfit
- Teal/cyan color scheme with red accents
- Exported to assets/characters/skins/miku.glb
- Applied to player 1 in test level builder

Pipeline:
- Blender 5.0.1 + MCP addon installed
- Bridge script for socket-based Blender control
- docs/3D_ASSET_PIPELINE.md documents full workflow
2026-06-22 13:53:17 -04:00
Hermes 671b36c20c fix(map): complete rewrite of arena layout
Problems fixed:
- Player spawn moved from inside central platform to open area (z=20)
- Removed broken internal stairs inside tower (disconnected ramps)
- Removed corner towers, walkways, stepping stones, wall-run corridor,
  wall-climb surfaces, grapple anchors — all were overlapping or unreachable
- Reduced arena from 96x96 to 80x80 for tighter gameplay
- Crates properly spaced (1.5u apart), no overlaps or intersections
- Reduced from 6 spawns to 4 (corners only), each with 2 L-shaped cover
  walls and clear exit routes — no more 3-wall traps
- Spawn alcoves use 2 walls max with open diagonal exits
- Dummies placed in open areas away from geometry:
  TargetDummy at (0,-25), KillableDummy at (25,0),
  WalkingDummy patrols z=-30 from x=-20 to 20
- Central platform simplified: 16x16 base (2u) + 8x8 upper (4u)
- 4 cardinal ramps properly connect ground to platform edge
- Cover walls placed in open lanes, not blocking movement
- Barrels placed along outer walls, not in pathways
2026-06-21 22:41:40 -04:00
Hermes 3584a7e6c5 feat(props): integrate Blender GLB props into movement map
- Replace primitive _crate(), _barrel(), _pillar() with GLB scene instances
- Add 7 prop preloads: crate, barrel, pillar, ramp, weapon_pickup, health_pack, ammo_pack
- Add _load_props() and _place_prop() helpers with null guards
- Add pickup placements: weapon (center), health (east/west), ammo (center/NW/SE)
- Props load at runtime via load() - appear once Godot editor imports the GLB files
- Null guard prevents crashes in headless mode before import
2026-06-21 22:28:41 -04:00
Hermes 462d12bee5 fix: Godot 4.2.1 compat and map builder fixes
- Fix tab character in _build_elevated_walkways() call (line 63)
- Fix untyped 'pos' variable in grapple pillar loop (line 376)
- Remove fog_sky_affinity (Godot 4.3+ only property)
- Replace preload() with load() for runtime script loading
- Replace 'is DoubleBarrelShotgun' type check with duck-typing
- Fix 'is not OfflineMultiplayerPeer' syntax in grenade spawn
- Replace absf() with abs() in state_machine, state_air, state_ground
- Update test_level.tscn to remove stale UID reference

All fixes verified: PARSE OK and scene runs without script errors
on Godot 4.2.1 headless.
2026-06-21 01:24:42 -04:00
Hermes f164afecd8 feat(map): high-quality multiplayer movement map
96x96 arena with multi-level layout, grapple points, wall-run/climb
surfaces, 6 team spawns with anti-camping cover, and varied movement
challenges.

Map Features:
- Central multi-level structure: 20x20 platform (3u), 10x10 tower (6u),
  14x14 top platform (9u) with crown cover walls and internal stairs
- 4 corner towers (5u high) with railings and top platforms
- 4 elevated mid-side walkways (3u) with railings connecting center to edges
- 8 ramps: cardinal to central, diagonal to corners, to walkways
- Quarter-pipe curve (8 segments) near NE corner
- 4 parkour stepping stone chains (NW, NE, SW, SE quadrants)
- Wall-run corridor (N side) with parallel walls, obstacles, and floor gap
- Wall-run surfaces on all 4 outer wall sections
- Wall-climb surfaces around central tower and mid-map (warm color)
- 4 grapple anchor pillars (15u tall) with visible tops at cardinal points
- Cover system: low walls, crate clusters, corridor walls, structural pillars
- Speed corridor with side rails, speed bumps, and floor markings
- 6 spawn alcoves (3 red: NW/SW/West, 3 blue: NE/SE/East) with cover walls
- Anti-spawn-camping: each alcove has 2+ exits and blocking walls
- Floor accent tiles in central area
- Atmospheric sky with procedural sky material and fog
- Directional sun + fill light + center omni + 6 spawn accent lights
- Decorative: barrels, hazard stripes, accent beams, spawn area lights
- Full multiplayer spawning, weapon system, HUD, entities preserved
- All movement states: ground, air, wall_run, wall_climb, wall_cling,
  slide, dash, grapple

Parse verified clean with Godot 4.2.1 headless.
2026-06-21 01:03:34 -04:00
DottsGit 5e4507ab24 feat: implement pause menu system with loadout and settings configuration management 2026-06-10 21:08:01 -04:00
DottsGit dbbfbef4a4 fix: a lot of networking bugs 2026-06-06 19:26:22 -04:00
DottsGit ff3e01a9e5 feat: implement procedural humanoid animations, modular weapon system, and dummy entity base classes 2026-06-06 19:10:29 -04:00
DottsGit cd034d1aea feat: add dust2 level builder, player movement controller, and UI menu components 2026-06-06 15:17:54 -04:00
DottsGit 31336fe870 feat: add Dust 2 level builder and implement pause menu UI with settings and loadout management 2026-06-06 14:49:45 -04:00
DottsGit 5f2c2462e2 feat: preventing players from leaving the playable area 2026-06-06 12:44:16 -04:00
DottsGit 64e024eb32 fix movement through the map is easier 2026-06-06 12:28:48 -04:00
DottsGit 050912ca61 fix: better sites 2026-06-06 12:26:03 -04:00
DottsGit 775e57ba4a feat: basic dust 2 2026-06-06 12:23:39 -04:00
DottsGit 6dceab46db feat: fps counter and limiter 2026-06-06 01:06:43 -04:00
DottsGit 33f5c7cb82 feat: added advanced settings for showing player movement debug and settings for mouse sensistivity 2026-06-06 00:51:53 -04:00
DottsGit d0716f72e8 feat: added moving killable dummy 2026-06-06 00:31:43 -04:00
DottsGit 6aae02bef8 feat: fixed ragdoll replacement 2026-06-06 00:09:20 -04:00
DottsGit acd495893d feat: added ragdoll, health, death, and adjusted mortar 2026-06-06 00:01:27 -04:00
DottsGit 72346803a9 feat: humanoid player model without animations 2026-06-05 13:37:43 -04:00
DottsGit a85e0952c5 feat: added hud for utilites 2026-06-05 02:15:32 -04:00
DottsGit ecefeb9f7e feat: added grapple mechanic 2026-06-05 02:05:07 -04:00
DottsGit da16a3a757 feat: implement weapon framework, hitscan logic, and player movement controller with state management 2026-06-05 00:25:41 -04:00
DottsGit 5ae6e20039 feat: add test_level_builder script for debugging level generation 2026-06-04 17:13:05 -04:00
DottsGit a8b3619f2e feat: implement damage dummy system, floating UI numbers, and double-barrel shotgun mechanics 2026-06-04 13:15:26 -04:00
DottsGit 02c6caa0d6 feat: implement pause menu with loadout management and rebindable input settings 2026-06-04 11:33:10 -04:00
DottsGit 8c928c2d92 feat: add test_level_builder script to debug tools for level creation testing 2026-06-04 10:28:26 -04:00
DottsGit a86ef53622 feat: implement modular state-based player movement system with chain mechanics 2026-06-04 10:26:18 -04:00
DottsGit 5e9f4bec8a feat: add test_level_builder script for debugging level generation 2026-06-04 09:22:30 -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
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 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 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 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