Commit Graph
74 Commits
Author SHA1 Message Date
Nicholas ButzkeandClaude Fable 5 0ba14a9469 feat: overhaul movement for flow — momentum-preserving states, smooth crouch, landing feel
- Quake-style air-strafe accelerate (real speed gain from strafing; external
  speed from dash/rockets never clamped)
- Wall run: keeps entry momentum (incl. upward carry), accelerates along the
  wall instead of hard-setting velocity, gravity fades in over the run
- Slide: slope physics (gravity projected along floor accelerates downhill),
  flat-ground decel instead of multiplicative friction, entry boost, direct
  slide->wallrun and slide->dash transitions
- Dash: cooldown 10s -> 2s, per-player (was a static shared across instances),
  momentum fully kept on exit, FOV punch event
- Grapple: taut pendulum with active rope control (W reels in, S pays out),
  release keeps swing energy
- Wall climb: carries upward momentum in, jump-off kick, shared vault helper
- Crouch capsule: single owner in the machine, smoothly lerped, ceiling check;
  camera eye height follows via crouch factor (no more head snapping)
- Landing: machine emits 'land' events scaled by impact; camera dip + pitched
  down thud; footsteps get pitch variation
- Camera rig: event-driven (land dip, dash FOV kick, vault pitch impulse),
  slide roll tilt
- Model: Jump vs Fall split by vertical velocity, Land one-shot on heavy
  landings, wall-run body lean (synced to remotes via synced_wall_side)

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-17 11:58:14 -04:00
Nicholas ButzkeandClaude Fable 5 29fdca3565 feat: shooter animation feel — directional lean, slide, composed airborne, weapon hold
Layer a procedural SkeletonModifier3D (ShooterPoseModifier) on top of the base
clip so the character reads like a movement-shooter avatar:

- Directional lean: banks into the movement direction (right/left/back) and
  blends smoothly for diagonals, driven by velocity relative to facing.
- Slide: leans the torso back and pitches the head up to look forward, instead
  of the base clip's forward-torso/legs-out "spine break".
- Airborne: plays a composed Jump pose (weapon ready) rather than a flailing
  fall.
- Weapon hold: the base clip already keeps the arms down (weapon at the hip);
  on ADS both arms lift and swing in toward centre-front to aim. ADS is read
  from the active weapon and synced (synced_is_ads) so remote players raise
  their weapons too.

The controller feeds movement direction + ADS to SkinnedPlayerModel.set_locomotion()
each frame (works for local and remote via synced velocity/rotation). All
rotations are authored in skeleton space (fwd=+Z, up=+Y, right=-X) and converted
per-bone; tuning constants are at the top of ShooterPoseModifier.

Verified by rendering the poses (idle/strafe/back/slide/ads) in a real Godot
viewport. Smoke test 30/30.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-06 23:23:51 -04:00
Nicholas ButzkeandClaude Fable 5 e2fbc424a7 feat: third-person camera toggle (V) + fix first-person showing inside the model
The first-person head-shrink (SkeletonModifier3D) left the camera looking at
the inside of the neck/torso/hair. Replaced it: the owner's model now renders
shadows-only in first person (clean FPS view, still fully animated and visible
to others and in shadows).

Added a third-person toggle (V / toggle_camera_view) so you can actually see
your own animated model — the easiest way to verify a new skin's animations:
- over-the-shoulder SpringArm3D camera (wall-collision aware) on the local
  player; press V to swap, press again to return
- firing still uses the first-person camera, so aim is unchanged
- reveals the owner's model via set_owner_visible() on both SkinnedPlayerModel
  and HumanoidModel; hides the first-person weapon viewmodel while in TP
- death forces first person so the toggle can't fight the death cam

Smoke test extended to cover the toggle (camera boom created, becomes current,
round-trips) — 28/28 checks pass for both color and GLB skins.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-06 17:18:16 -04:00
Nicholas ButzkeandClaude Fable 5 d05477c135 feat: Sketchfab-to-game character pipeline, FP/TP animated views, client-auth netcode, audio system
Character pipeline (tools/):
- sketchfab_import.py: search/download via Sketchfab Download API with
  license/attribution tracking (SKETCHFAB_API_TOKEN)
- autorig.py: headless Blender auto-rig — fits a Mixamo-named skeleton
  to unrigged humanoids, binds automatic weights
- merge_animations.py: merges the shared Mixamo-skeleton animation
  library onto any rigged character, strips root motion, canonical names
- pipeline.py: one command chains download -> rig -> animate -> register

In-game skin system:
- SkinManager autoload reads skins.json (auto-written by the pipeline)
- SkinnedPlayerModel rewritten: canonical clips with fallback chains,
  blend times, speed-scaled locomotion, weapon bone attachment
- First-person: full animated body for the owner, head hidden via
  SkeletonModifier3D; third-person: full model for other players
- Skin selector in main menu; skin id synced in multiplayer
- Fixed GLBLoader crash (GLTFDocument.get_animation_count doesn't exist)

Multiplayer sync overhaul:
- Movement is now client-authoritative: the owning peer simulates
  locally (no input round-trip), server keeps health/kills/death
- Remote players interpolate synced_position/velocity with
  extrapolation and snap-on-teleport
- Knockback/impulses routed to the simulating peer

Audio:
- AudioManager autoload: SFX/Weapons/Footsteps/UI/Music buses, pooled
  3D players, variation + pitch randomization, auto-registration from
  assets/sounds

Docs: 3D_ASSET_PIPELINE.md rewritten end-to-end, new ASSET_SOURCES.md
(non-procedural animation/map/sound sources) and SOUND_DESIGN.md.
Verified with debug/spawn_smoke_test.gd (headless: 24/24 checks pass).

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-06 02:28:58 -04:00
Hermes 2537ad19c0 fix: queue_free() returns void - split into remove_child + queue_free 2026-06-25 23:25:31 -04:00
Hermes 0672bebe7b feat: add rigged+animated Miku player model with auto-rig pipeline
- Add miku_rigged_animated.glb (3.27MB) with 18-bone skeleton and 6 animations
  (Idle, Walk, Run, Jump, Crouch, Death) via Blender auto-rig script
- Add tools/rig_and_animate.py: reusable Blender script for rigging any humanoid
  mesh with Mixamo-compatible bone naming
- Update SkinnedPlayerModel: scale_factor, first-person mode, animation state
  matching (Idle/Walk/Run/Jump/Crouch/Death)
- Update level_runtime.gd: use skinned model for local player, procedural
  humanoid for remote players
- Update skin_manager.gd and test_level_builder.gd to use animated model
- Fix Godot 4.2.1 'is not Type' syntax in 5 weapon files
- Add editor/import_miku_to_tscn.gd for editor-based GLB import
2026-06-23 00:19:52 -04:00
Hermes 00141f80cb fix: set position before adding grenade to tree, remove duplicate add_child 2026-06-22 21:52:48 -04:00
Hermes e84a9d641a fix: textured Miku model + ragdoll color
- Re-exported Miku with properly mapped textures (9.8MB GLB)
- Texture files saved alongside GLB for Godot import
- Fixed Blender 5.0 API: 'Base Color' (not 'BaseColor'), major_segments (not segments)
- Ragdoll now uses Miku teal color (0.0, 0.75, 0.75)
- Player 1 uses SkinnedPlayerModel (no procedural generation)
- Other players still use procedural HumanoidModel
2026-06-22 19:46:22 -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
DottsGit 3c512870f2 feat: implement movement state machine ground/air states and initialize weapon manager system 2026-06-10 22:37:17 -04:00
DottsGit 3dc7fda622 feat: implement modular movement state machine and ground, air, and wall climb states 2026-06-10 22:27:10 -04:00
DottsGit 18ab9da4a3 feat: implement MovementStateMachine to manage modular player movement states and mechanics 2026-06-10 22:21:41 -04:00
DottsGit da4a6442c7 feat: implement player movement controller with grounded state, stair stepping, and wall interaction mechanics 2026-06-10 22:11:00 -04:00
DottsGit 4cb27f991e feat: add PlayerMovementController for character locomotion, state machine integration, and multiplayer synchronization 2026-06-10 21:12:44 -04:00
DottsGit 887d9c1523 feat: implement PlayerMovementController and grenade projectile system 2026-06-09 23:04:32 -04:00
DottsGit e8e5391d9f feat: implement MovementStateMachine for handling player movement states and mechanics 2026-06-09 22:53:24 -04:00
DottsGit f63187e493 feat: implement foundational weapon systems, including hitscan and projectile base classes, reload mechanics, and player movement/camera integration. 2026-06-09 22:33:40 -04:00
DottsGit ed973c3b3b feat: implement persistent settings manager, add character movement controller, and create FPS map blockout scene 2026-06-09 20:10:12 -04:00
DottsGit 22ea918e6d feat: implement movement state machine architecture and add various sound assets 2026-06-07 16:13:01 -04:00
DottsGit 1a989f3586 feat: implement player movement controller and movement state machine system 2026-06-06 21:16:48 -04:00
DottsGit 30dbf7a4cd feat: implement player movement controller and initial weapon framework including double barrel shotgun and explosive projectiles 2026-06-06 21:09:40 -04:00
DottsGit 54dfd342c2 feat: implement walking and killable enemy dummy entities and player movement controller base 2026-06-06 21:00:45 -04:00
DottsGit eb9344c0bb feat: implement PlayerMovementController with support for movement states, multiplayer synchronization, and audio/UI systems 2026-06-06 20:51:34 -04:00
DottsGit 07a15fe998 fix: a lot of network sync fixes 2026-06-06 20:45:10 -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 d3680765da adj: respawning kills self 2026-06-06 14:23:28 -04:00
DottsGit 2a3e6a2c78 fix: fixing respawning 2026-06-06 14:18:45 -04:00
DottsGit 9adbff3968 feat: implement multiplayer network manager and player movement controller with base game entities and UI 2026-06-06 14:03:57 -04:00
DottsGit 168bd8f1ce feat: implement networked match HUD with real-time scoreboard and killfeed systems 2026-06-06 13:49:12 -04:00
DottsGit a6f5f24420 adj: less obstructive damage numbers 2026-06-06 01:30:39 -04:00
DottsGit d784045214 feat: added audio settings 2026-06-06 01:26:51 -04:00
DottsGit acd495893d feat: added ragdoll, health, death, and adjusted mortar 2026-06-06 00:01:27 -04:00
DottsGit 8984739334 feat: added animations for movement 2026-06-05 13:42:18 -04:00
DottsGit 2f259b5428 feat: adjusted the shotgun impulse knockback 2026-06-05 13:33:37 -04:00
DottsGit 6af87eb7bd feat: added rocket noises and smoke trails and adjusted AoE of rockets and damage falloff on AoE 2026-06-05 13:32:10 -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 ca2a80e38b feat: reducing ms gain from shotguns. Adjusting swarm launcher 2026-06-05 01:19:51 -04:00
DottsGit 00f190d423 feat: reducing the wall jump speed 2026-06-05 00:56:59 -04:00
DottsGit 2c35f5074a feat: adds a cd to the jump to prevent spam jumping up a slope 2026-06-05 00:54:19 -04:00
DottsGit eee1925b7a feat: create movement_params resource to centralize movement configuration variables 2026-06-05 00:29:45 -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 e6a2199777 feat: implement weapon system, loadout manager, and specialized projectile behaviors with associated assets 2026-06-04 18:14:50 -04:00
DottsGit 7b7107c5d6 feat: implement PlayerMovementController to handle movement input, audio cues, and UI feedback 2026-06-04 17:22:30 -04:00
DottsGit 67bd5b4302 feat: add double-barrel shotgun weapon, player movement state machine, and procedural sound assets 2026-06-04 16:40:15 -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 d8cb91e593 feat: implement dash and wall run movement states for the player controller 2026-06-04 11:47:08 -04:00
DottsGit 5c2d648801 feat: implement dash movement state with velocity calculation and cooldown logic 2026-06-04 11:36:30 -04:00