Claude Agent Skill · by Jeffallan

Game Developer

Install Game Developer skill for Claude Code from jeffallan/claude-skills.

Install
Terminal · npx
$npx skills add https://github.com/jeffallan/claude-skills --skill game-developer
Works with Paperclip

How Game Developer fits into a Paperclip company.

Game Developer drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.

S
SaaS FactoryPaired

Pre-configured AI company — 18 agents, 18 skills, one-time purchase.

$27$59
Explore pack
Source file
SKILL.md161 lines
Expand
---name: game-developerdescription: "Use when building game systems, implementing Unity/Unreal Engine features, or optimizing game performance. Invoke to implement ECS architecture, configure physics systems and colliders, set up multiplayer networking with lag compensation, optimize frame rates to 60+ FPS targets, develop shaders, or apply game design patterns such as object pooling and state machines. Trigger keywords: Unity, Unreal Engine, game development, ECS architecture, game physics, multiplayer networking, game optimization, shader programming, game AI."license: MITmetadata:  author: https://github.com/Jeffallan  version: "1.1.0"  domain: specialized  triggers: Unity, Unreal Engine, game development, ECS architecture, game physics, multiplayer networking, game optimization, shader programming, game AI  role: specialist  scope: implementation  output-format: code  related-skills: --- # Game Developer ## Core Workflow 1. **Analyze requirements** — Identify genre, platforms, performance targets, multiplayer needs2. **Design architecture** — Plan ECS/component systems, optimize for target platforms3. **Implement** — Build core mechanics, graphics, physics, AI, networking4. **Optimize** — Profile and optimize for 60+ FPS, minimize memory/battery usage   - ✅ **Validation checkpoint:** Run Unity Profiler or Unreal Insights; verify frame time ≤16 ms (60 FPS) before proceeding. Identify and resolve CPU/GPU bottlenecks iteratively.5. **Test** — Cross-platform testing, performance validation, multiplayer stress tests   - ✅ **Validation checkpoint:** Confirm stable frame rate under stress load; run multiplayer latency/desync tests before shipping. ## Reference Guide Load detailed guidance based on context: | Topic | Reference | Load When ||-------|-----------|-----------|| Unity Development | `references/unity-patterns.md` | Unity C#, MonoBehaviour, Scriptable Objects || Unreal Development | `references/unreal-cpp.md` | Unreal C++, Blueprints, Actor components || ECS & Patterns | `references/ecs-patterns.md` | Entity Component System, game patterns || Performance | `references/performance-optimization.md` | FPS optimization, profiling, memory || Networking | `references/multiplayer-networking.md` | Multiplayer, client-server, lag compensation | ## Constraints ### MUST DO- Target 60+ FPS on all platforms- Use object pooling for frequent instantiation- Implement LOD systems for optimization- Profile performance regularly (CPU, GPU, memory)- Use async loading for resources- Implement proper state machines for game logic- Cache component references (avoid GetComponent in Update)- Use delta time for frame-independent movement ### MUST NOT DO- Instantiate/Destroy in tight loops or Update()- Skip profiling and performance testing- Use string comparisons for tags (use CompareTag)- Allocate memory in Update/FixedUpdate loops- Ignore platform-specific constraints (mobile, console)- Use Find methods in Update loops- Hardcode game values (use ScriptableObjects/data files) ## Output Templates When implementing game features, provide:1. Core system implementation (ECS component, MonoBehaviour, or Actor)2. Associated data structures (ScriptableObjects, structs, configs)3. Performance considerations and optimizations4. Brief explanation of architecture decisions ## Key Code Patterns ### Object Pooling (Unity C#)```csharppublic class ObjectPool<T> where T : Component{    private readonly Queue<T> _pool = new();    private readonly T _prefab;    private readonly Transform _parent;     public ObjectPool(T prefab, int initialSize, Transform parent = null)    {        _prefab = prefab;        _parent = parent;        for (int i = 0; i < initialSize; i++)            Release(Create());    }     public T Get()    {        T obj = _pool.Count > 0 ? _pool.Dequeue() : Create();        obj.gameObject.SetActive(true);        return obj;    }     public void Release(T obj)    {        obj.gameObject.SetActive(false);        _pool.Enqueue(obj);    }     private T Create() => Object.Instantiate(_prefab, _parent);}``` ### Component Caching (Unity C#)```csharppublic class PlayerController : MonoBehaviour{    // Cache all component references in Awake — never call GetComponent in Update    private Rigidbody _rb;    private Animator _animator;    private PlayerInput _input;     private void Awake()    {        _rb = GetComponent<Rigidbody>();        _animator = GetComponent<Animator>();        _input = GetComponent<PlayerInput>();    }     private void FixedUpdate()    {        // Use cached references; use deltaTime for frame-independence        Vector3 move = _input.MoveDirection * (speed * Time.fixedDeltaTime);        _rb.MovePosition(_rb.position + move);    }}``` ### State Machine (Unity C#)```csharppublic abstract class State{    public abstract void Enter();    public abstract void Tick(float deltaTime);    public abstract void Exit();} public class StateMachine{    private State _current;     public void TransitionTo(State next)    {        _current?.Exit();        _current = next;        _current.Enter();    }     public void Tick(float deltaTime) => _current?.Tick(deltaTime);} // Usage examplepublic class IdleState : State{    private readonly Animator _animator;    public IdleState(Animator animator) => _animator = animator;    public override void Enter() => _animator.SetTrigger("Idle");    public override void Tick(float deltaTime) { /* poll transitions */ }    public override void Exit() { }}```