agentsclimarketplace

Camera system

Skill Firzus/agent-skills/skills/game/camera-system

Architecture blueprint for game cameras across genres: virtual-camera stacks, blending brains, orbit/follow rigs, collision and occlusion, combat lock-on, genre-specific cameras, damping math, shake, FOV, photo mode, and comfort. Use when designing or building game cameras, dynamic framing, camera collision, lock-on, shake, split-screen, VR comfort, or when the camera jitters, fights the player, or causes motion sickness.From its SKILL.md

Install
npx -y skills add Firzus/agent-skills --skill camera-system

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.4 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

Camera System

Build the camera of a game — the third pillar of feel alongside character-controller and combat-system. References: John Nesky's 50 Game Camera Mistakes, God of War's one-shot camera, Itay Keren's Scroll Back (2D cameras), the Toric-space camera-control research, and Cinemachine as the reference implementation. Excluded: authored cutscene cameras on a timeline (cinematic-system).

The architecture rule

A stack of declarative virtual cameras + one brain that blends. Gameplay never writes the final camera transform.

vcams (one per context: explore / combat / aim / dialogue / photo)
  = declarative configs {follow target, look target, distance, offsets,
    damping, FOV, noise}
brain = picks the live vcam by priority, blends via a per-pair blend table
camera state = a data struct (pos, rot, FOV, lens) — blending = interpolating
pipeline per vcam: composition → collision/occlusion → noise/shake
volumes = the designer override layer (level-placed, blend in/out)

Gameplay talks to the system through states and events only — the same router/stack discipline as menu-ui-manager.

Nesky's law (the input contract)

Never fight the player's input. Every automatic behavior (recentering, auto-framing, soft-lock bias) suspends the instant the player touches the camera stick and resumes only after an idle delay. Manual input always wins. And cut — don't blend — when passing through opaque geometry (unless you've signed up for the one-shot constraint).

Reference map

FileCovers
rig-collision.mdThe virtual-camera model, the orbit/follow rig (composition dead/soft zones, recentering, pitch coupling), collision vs occlusion (whiskers, asymmetric resolve, fades, the camera-only layer)
combat-contexts.mdSoft-lock and hard lock-on, group and big-enemy framing, contextual vcams and designer volumes, the one-shot constraint (GoW), procedural dialogue cameras
genres.mdGenre-specific cameras: FPS (view models, head-bob, recoil, ADS), racing (speed-FOV, look-to-apex), RTS (edge-pan, strategic zoom), fighting (both-fighters framing), platformer (the Keren taxonomy, look-ahead), VR (comfort-first rules), MOBA, isometric ARPG, fixed-cam horror
cinematography.mdShot vocabulary, framing fundamentals (rule of thirds, look-room, 180°/30° rules), camera-movement language and the dolly-zoom, procedural cinematography systems (Virtual Cinematographer, Toric space), lens/FOV emotional language, letterboxing/aspect, spectator/auto-director cameras
math-tech.mdFrame-rate-independent damping and the critically-damped spring (SmoothDamp), the update-order/jitter problem, collision/occlusion math, look-at and quaternion math, FOV/projection and the dolly-zoom formula, networked/split-screen cameras, performance
feel-accessibility.mdThe trauma shake model, impulses, FOV as feel, the motion-sickness accessibility baseline, photo mode
pitfalls.md16 failure modes (symptom → cause → prevention) with debugging order and ship checklist

Build order (4 shippable tiers)

Tier 1 — A camera that doesn't hurt
- [ ] Brain + vcam stack + blend table; explore vcam (orbit + follow, composition)
- [ ] ONE CLOCK: camera updates after the interpolated character (the #1 jitter)
- [ ] Pitch clamps (~±85°); sensitivity curves + invert; recentering that yields
Tier 2 — Collision & occlusion
- [ ] Sphere/frustum cast; asymmetric resolve (snap in, smooth out); hysteresis
- [ ] Whiskers; camera-only collision layer; min distance + character fade
Tier 3 — Combat & contexts
- [ ] Soft-lock bias (toggleable); hard lock-on (frame both, angular speed cap)
- [ ] Group + big-enemy framing; context vcams; designer volumes
- [ ] Shake layer: trauma model + impulse bus, one application point
Tier 4 — Polish & cinematics
- [ ] Procedural dialogue cameras (shot-reverse-shot, 180° rule, validation)
- [ ] Cinematic takeover = push/pop with snapshot/restore; FOV-as-feel
- [ ] Photo mode; accessibility baseline (FOV slider, shake/bob/blur toggles)

Key numbers (starting points — tune by playtest)

ParameterValueAnchor
3P distance~2–4 m explore (CM 2 m, UE 3 m)engine docs
FOV~60° vertical console; sprint +5–10° (in ~0.15 s, out ~0.3 s)convention
Dampingper-axis: lateral 0.1 s, vertical 0.5 s, depth 0.3 s (CM)engine docs
Trauma shake+0.2 small / +0.5 big, decay ~1.5/s, shake = trauma², Perlin 0.1–4 HzEiserloh GDC
Exp dampingx = b + (a−b)·exp(−λ·dt) (fps-independent); SmoothDamp = critically-damped springHolmér/GPG4
SpherecastUE SpringArm ProbeSize 12 uu; min radius = near-plane corner radiusUE source
FPS FOVworld 80–110 HFOV; viewmodel ~70–75; ADS sway −50–80%MoCap Online
Platformer look-ahead80–120 px; Celeste 100→150 px on dashKeren / Celeste src
VRsnap-turn 30/40°; constant velocity only; never control the cameraMeta/USI

Full sourced tables (with the "undocumented — don't invent" list) in each file.

Engine mapping (summary)

Generic blockUnity 6 (Cinemachine 3.x)UE5 (5.4+)
Brain + stackCinemachineBrain + CinemachineCamera prioritiesAPlayerCameraManager + Lyra camera-mode stack; Gameplay Camera System (experimental 5.7)
Orbit rigOrbitalFollow vs ThirdPersonFollowSpringArm or GPC Boom nodes
CollisionDeoccluder + DecolliderSpringArm spherecast (no hysteresis — roll your own)
DampingSmoothDamp / Composer damping (per-axis)CameraLagSpeed + lag sub-stepping
UpdateBrain LateUpdate/SmartUpdate + Rigidbody InterpolateTG_PostPhysics tick group
ShakeImpulse Source/ListenerUCameraShakeBase + PerlinNoise pattern

Full detail in math-tech.md.

What ships with it: 7 files

45.8 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.