Files
2026-05-27 23:29:53 +01:00

1.9 KiB

OpenSpec Change: enterprise-gaming-r3f-character

  • Change ID: enterprise-gaming-r3f-character
  • Package: @suaveplan/r3f-character
  • Category: gaming/character
  • Target path: gaming/character/r3f-character
  • Status: PROPOSED
  • Date: 2026-04-24
  • Reference spec: /mnt/s/web/suaveplan/enterprise/r3f-character.md

Summary

Deliver @suaveplan/r3f-character on the genesis branch from scratch at enterprise quality. The package provides a full character controller for 3D games in React Three Fiber. It wires @suaveplan/character-physics (capsule controller) to a Rapier rigid body via the @suaveplan/r3f-physics-rapier backend; drives Three.js AnimationMixer for locomotion blend tree (idle/walk/run/jump/fall); applies @suaveplan/animation-events foot IK and procedural modifiers; and exposes a Character component and useCharacter() hook. Genesis adds structured errors, OTel frame-time histogram, and 100% coverage.


Available workspace deps

@suaveplan/error, @suaveplan/types, @suaveplan/character-physics, @suaveplan/animation-events, @suaveplan/ik-solver, @suaveplan/events, @suaveplan/r3f-physics-rapier, react, @react-three/fiber, @react-three/drei, three.


Public API surface

function Character(props: CharacterProps): JSX.Element
// model, animations, controller, physicsBackend

function useCharacter(): CharacterContext
// position, velocity, isGrounded, activeAnimation, playEmote()

File layout

gaming/character/r3f-character/
  package.json / tsconfig.json / vitest.config.ts
  src/
    index.ts / error-codes.ts
    types/common.ts + md
    core/
      locomotion/ (ts + md + types + test + index)
      animation-mixer-driver/ (ts + md + test + index)
    context/
      character-provider.tsx + md + test
    hooks/use-character.ts + md + test
    components/
      Character/ (tsx + md + test + stories + index)
  tests/integration.test.ts