Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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 optimizatio
.claude/skills/jeffallan-game-developer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 6% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -7% | 0% |
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 |
When implementing game features, provide:
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); }
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); } }
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 example public 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() { } }
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 18,167 | 17,469 | -4% | 1 | 1 | 0% | 3,231 | 4,668 | +44% | 0 | 0 | — |
case-02 | fail→fail | 21,188 | 18,882 | -11% | 1 | 1 | 0% | 3,957 | 4,766 | +20% | 0 | 0 | — |
case-03 | pass→pass | 14,935 | 14,591 | -2% | 1 | 1 | 0% | 3,214 | 3,881 | +21% | 0 | 0 | — |
case-04 | pass→pass | 8,762 | 7,910 | -10% | 1 | 1 | 0% | 1,549 | 2,576 | +66% | 0 | 0 | — |
case-05 | pass→pass | 9,953 | 12,763 | +28% | 1 | 1 | 0% | 1,931 | 3,583 | +86% | 0 | 0 | — |
case-06 | pass→pass | 13,658 | 12,582 | -8% | 1 | 1 | 0% | 2,610 | 3,672 | +41% | 0 | 0 | — |
case-07 | pass→pass | 13,821 | 16,048 | +16% | 1 | 1 | 0% | 2,443 | 4,117 | +69% | 0 | 0 | — |
case-08 | pass→pass | 11,437 | 12,765 | +12% | 1 | 1 | 0% | 2,175 | 3,880 | +78% | 0 | 0 | — |
case-09 | fail→pass | 12,185 | 12,629 | +4% | 1 | 1 | 0% | 2,044 | 3,710 | +82% | 0 | 0 | — |
case-10 | fail→pass | 15,538 | 12,437 | -20% | 1 | 1 | 0% | 2,665 | 3,216 | +21% | 0 | 0 | — |
case-11 | fail→pass | 8,879 | 2,889 | -67% | 1 | 1 | 0% | 1,618 | 1,714 | +6% | 0 | 0 | — |
case-12 | fail→pass | 11,067 | 3,743 | -66% | 1 | 1 | 0% | 2,029 | 1,877 | -7% | 0 | 0 | — |
case-13 | fail→pass | 9,210 | 2,237 | -76% | 1 | 1 | 0% | 1,485 | 1,507 | +1% | 0 | 0 | — |
case-14 | fail→pass | 11,006 | 1,582 | -86% | 1 | 1 | 0% | 1,884 | 1,461 | -22% | 0 | 0 | — |
case-15 | fail→pass | 12,508 | 4,326 | -65% | 1 | 1 | 0% | 2,129 | 1,924 | -10% | 0 | 0 | — |
case-16 | pass→pass | 20,922 | 18,774 | -10% | 1 | 1 | 0% | 4,354 | 5,486 | +26% | 0 | 0 | — |
case-17 | pass→pass | 8,835 | 11,930 | +35% | 1 | 1 | 0% | 1,539 | 3,425 | +123% | 0 | 0 | — |
case-18 | pass→pass | 11,120 | 12,705 | +14% | 1 | 1 | 0% | 1,950 | 3,687 | +89% | 0 | 0 | — |
case-19 | pass→pass | 6,895 | 6,656 | -3% | 1 | 1 | 0% | 1,532 | 2,518 | +64% | 0 | 0 | — |
case-20 | pass→pass | 18,995 | 18,633 | -2% | 1 | 1 | 0% | 3,235 | 4,242 | +31% | 0 | 0 | — |
case-21 | pass→pass | 17,317 | 14,718 | -15% | 1 | 1 | 0% | 3,044 | 3,237 | +6% | 0 | 0 | — |
case-22 | pass→pass | 16,209 | 16,436 | +1% | 1 | 1 | 0% | 2,545 | 3,816 | +50% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.