Files
stickman/docs/tech_debt_and_optimizations.md
T
ryan e3df1cc5c0 feat: Implement kinematic-to-ragdoll transition system
- Added KINEMATIC_BLENDING_AND_RECOVERY.md to outline features for smooth transitions between kinematic and ragdoll states, including visual and physical blending, and ragdoll recovery.
- Introduced KINEMATIC_TO_RAGDOLL.md detailing the objectives, scope, and core architecture for transitioning the stickman from kinematic to ragdoll mode.
- Created KINEMATIC_TO_RAGDOLL_SPEC.md as an implementation specification, verifying codebase facts and correcting the initial plan based on Godot 4.4 source.
- Enhanced StickmanRig with state management for animated and ragdoll modes, including momentum preservation and ragdoll construction.
- Updated physics_test_harness to support toggling between kinematic and ragdoll states with user input.
2026-08-27 00:05:17 -04:00

6.9 KiB
Raw Blame History

Technical Debt & Optimization Log

Overview

This document tracks known technical debt, optimization opportunities, and minor improvements for the Stickman Studio project. Items are prioritized by impact and effort. Update this log as issues are identified, resolved, or deprioritized.


Current Observations

# Issue Priority Status Notes
1 Neck Joint Free Rotation — The head can spin 360° during violent ragdoll tumbles, which looks unnatural. Medium Open Consider adding angular_limit_enabled = true with ±45° limits and low stiffness to allow natural lolling while preventing full rotations.
2 Torso Capsule Origin — The torso capsule's local origin should be at its midpoint for natural rotation. Currently derived from bone distance; verify alignment. Low Open Test by rotating the torso body in ragdoll mode — it should spin about its center, not its top. Adjust position offset if needed.
3 Collision Layers Separation — Bodies and terrain share layer 1/mask 1. This may cause selfcollision issues (limbs clipping through each other) under high stress. Low Open Future enhancement: assign ragdoll limbs to layer 2, terrain to layer 1, and use masks to allow limblimb collision only where desired.
4 Performance (Ragdoll Pooling) — Spawning 10 bodies + 9 joints procedurally is fine for a single rig. If the scene ever contains dozens of ragdolls, consider a pooling system to avoid allocation spikes. Low Open Not needed now, but worth noting if scaling to large crowds.
5 Line2D ↔ Capsule Radius Match — Limbs use Line2D width 16, ragdoll capsules radius 8. These align visually. Resolved Closed Verified during implementation. No action needed.
6 Recovery Animation Starting Pose — The stand_up animation must work from any captured ragdoll pose. Currently uses a fixed start frame. High Open Investigate blending the captured pose with the animation's first keyframe using an additive blend or a SkeletonModification that interpolates.
7 Transition Visual Pop — The crossfade between kinematic and ragdoll currently uses a simple modulate.a lerp. This may cause ghosting if the kinematic and ragdoll poses are misaligned. Medium Open Ensure the kinematic skeleton is snapped to the ragdoll pose before the fade begins (or vice versa) to avoid doubleexposure.
8 Rest Timeout UI — The director can adjust rest_timeout via inspector, but there is no inworld UI in the physics harness yet. Low Open Add a slider or spinbox to the harness UI for easier tuning.
9 Animation Generation DRYcreate_walk.gd is a standalone script. It should be merged into a unified create_animations.gd that also generates stand_up and idle animations. Medium Open Refactor to support parameterized generation (profile, duration, target pose).
10 Rig Collision Proxy Readdition — The proxy is readded on ragdoll exit, but may cause a brief visual pop if it appears while the kinematic rig is visible. Low Open Consider delaying proxy readdition until after the recovery animation completes, or fading it in.

Suggested Future Improvements (Beyond Current Scope)

Improvement Description Priority
Soft Transition Blending Add physical blending (joint stiffness ramp) to complement visual crossfade. Medium
Ragdoll Recovery Interruptibility Allow the director to force a mode switch midrecovery (e.g., if they want the character to ragdoll again immediately). Low
Multiple Rig Support Ensure all state variables are instancespecific (already true) and that the harness can manage multiple rigs. Future
Animation Blending (IK vs. Physics) Blend between the animationdriven pose and the ragdoll pose during transition to prevent snapping. Future
Save/Load for Ragdoll State Save the current ragdoll pose to .stk (e.g., for storyboarding a fall). Future

How to Use This Log

  1. New Issues: Add a row with #, description, Priority (Low/Medium/High), Status (Open/In Progress/Resolved/Deprecated), and Notes.
  2. Resolving Issues: Change Status to Resolved and add a note with the date and fix details.
  3. Deprioritizing: If an issue is no longer relevant, mark it Deprecated with a brief reason.
  4. Quarterly Review: Revisit this log every major milestone to reassess priorities.

Change Log

Date Change
2026-08-26 Initial creation — migrated observations from Phase 10 review.

End of Log