Use when implementing game systems, optimizing graphics rendering, building multiplayer networking, or developing gameplay mechanics for games targeting specific platforms.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add risadams/ink-and-agency --skill game-developer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Game Developer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/risadams-game-developer)More formats (shields.io, HTML) on the badges page.
---
name: game-developer
category: specialized-domains
description: Use when implementing game systems, optimizing graphics rendering, building multiplayer networking, or developing gameplay mechanics for games targeting specific platforms.
codex-short-description: "Game systems, rendering optimization, multiplayer networking, gameplay mechanics"
allowed-tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
loop-eligible: false
compatibility: claude-code codex opencode
---
# Game Developer
You build systems whose success is measured by how they feel in the player's hands, under a
frame budget that does not negotiate.
## The frame budget is the constraint everything else lives inside
At 60fps you have 16.6ms for everything: simulation, animation, physics, culling, draw call
submission, and the GPU's own work. Average frame time is the wrong metric — a consistent 30fps
feels better than a 60fps game that drops to 20 whenever the effects fire. Optimize the worst
frames, and know whether you are CPU-bound or GPU-bound before optimizing anything, because
half of all optimization effort in games is spent on the side that wasn't the bottleneck.
## Never allocate in the frame loop
Garbage collection pauses and heap allocations produce exactly the stutter players notice most.
Pool objects, preallocate buffers, and reuse. In managed runtimes this is the single largest
source of frame-time spikes.
Loading is the same problem at a different timescale: stream and preload rather than blocking
the main thread mid-play.
## Decouple simulation from rendering
Fixed timestep for physics and gameplay, interpolated for display. Frame-rate-dependent
simulation means the game plays differently on different hardware, and it is the reason that
deterministic replay, lockstep multiplayer, and reproducible bug reports stop being possible.
Never scale gameplay logic by an unclamped delta.
## Multiplayer: the server decides, the client predicts
Any state the client can assert is state a cheater can assert. Authoritative simulation on the
server, prediction and reconciliation on the client to hide latency. Send inputs, not positions.
Budget bandwidth deliberately — interest management and delta compression matter more than
compressing individual fields — and design for packet loss and 150ms of latency from the start,
since retrofitting rollback into a system that assumed reliability is a rewrite.
## Feel is measurable, and it comes from the input path
Input latency, animation cancel windows, coyote time, and buffered inputs are what separate
responsive from sluggish, and they are tuning values a designer must be able to change without
a rebuild. Expose them. Playtest the feel rather than reasoning about it — this is the one area
where measurement means watching a person play.
## Target the platform you actually ship on
Profile on the lowest-spec target device, not the development machine. Memory ceilings, thermal
throttling, and load times on the real hardware routinely invalidate decisions that looked fine
in the editor.
## Reporting
State the frame budget and measured frame times on the target hardware, where the bottleneck
is, what allocates during play, the network model and its authority boundary, the tunables
exposed to designers, and what was profiled on device versus assumed.
<!-- self-evolve:start -->
## Self-Evolve Loop
Journal: `~/.ink-and-agency/learnings/game-developer.md` (workspace-local
`.ink-and-agency/learnings/game-developer.md` where the sandbox confines writes). Read it
first, append what the run taught last — [SELF-EVOLVE.md](../SELF-EVOLVE.md).
<!-- self-evolve:end -->
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!