Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Selects game engines and frameworks by platform, genre, and architecture (full canvas shell vs hybrid DOM shell + guest viewport). Covers Phaser, PixiJS, Kaplay, Canvas/WebGL, Three.js, Babylon.js, Godot, Unity, Ink, Twine. Use when choosing a stack or comparing runtimes before implementation.
.claude/skills/sickn33-engine-selection/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-01 | ✓→✓ | = Same ✓ | -17% | 0% |
> Pick tools that match delivery target, interaction model, and team constraints. Engines serve the game type — not the reverse.
| Pattern | When | Notes | |---------|------|-------| | Full engine shell | Game is the canvas/scene | Phaser, Godot, Unity, Kaplay as app root | | Renderer + custom logic | You want draw power, own gameplay | PixiJS, Three.js + your systems | | Hybrid shell + guest | Dense UI/text + occasional skill-checks | DOM/app shell; mount canvas engines in modals/viewports only | | Narrative runtime | Branching prose is the product | Ink, Twine; host chrome separately | | Content-as-data | Levels/events authored as packs | JSON/YAML + thin loader; engine optional |
What type of game?
│
├── Mostly DOM / panels / forms / text UI
│ ├── + small arcade/spatial challenges
│ │ └── Hybrid: custom shell + guest
│ │ Raw Canvas/WebGL → Kaplay → Phaser → PixiJS
│ └── + branching story
│ └── Ink (inkjs) or Twine export → host in DOM
│
├── Full-screen 2D game
│ ├── Full gameplay features (scenes, physics, input)
│ │ └── Phaser 4 (or Kaplay if you want lighter/faster prototype)
│ └── Mostly rendering / custom systems
│ └── PixiJS 8 (or Raw Canvas/WebGL if tiny scope)
│
└── Full-screen 3D game
├── Full engine / physics / XR
│ └── Babylon.js
└── Rendering-focused / lighter
└── Three.js| Tool | Type | Best for | Watch-outs | |------|------|----------|------------| | Raw Canvas / WebGL | 2D/low-level | Tiny games, learning, no framework tax | You own everything | | Kaplay (ex-Kaboom) | 2D toolkit | Fast prototypes, jam games | Less “full product” structure than Phaser | | Phaser 4 | 2D engine | Complete 2D features | Heavier; often bundled | | PixiJS 8 | 2D renderer | Performance, custom game code | Not a full gameplay framework alone | | Three.js | 3D renderer | Visuals, lightweight 3D | You add gameplay systems | | Babylon.js | 3D engine | Fuller 3D + XR | Heavier than Three for simple scenes | | Ink + inkjs | Narrative | Complex branching prose | Weak for real-time multi-entity sims | | Twine / Twison / TweeJS | Narrative | Educator-friendly branches | Export/host glue; not a physics engine | | Godot 4 | Full engine | 2D/3D indie, open source | Web export iteration cost | | Unity | Full engine | Large teams, multi-platform | Heavy for simple web UI games |
Editor-first web shells (Construct, GDevelop) fit visual prototyping; weaker when you need versioned code-first content pipelines.
| Target | Lean toward | |--------|-------------| | PC indie / open source | Godot 4 | | PC large team / multi-platform | Unity | | Mobile | See game-development/mobile-games (touch, stores, battery) | | VR/AR | See game-development/vr-ar (+ Babylon/Three on web) |
| Don't | Do | |-------|-----| | Choose Unity/Godot for a form-heavy browser tool | Prefer DOM/hybrid | | Force Ink to run real-time concurrent simulations | Use narrative tools for branches; custom/sim code for clocks & entities | | Use Phaser as “the whole app” when the surrounding UI is HTML | Prefer a hybrid guest viewport | | Optimize for WebGPU on day one | Ship WebGL; add WebGPU + fallback when needed |
Use when choosing or comparing game engines/frameworks before implementation, especially for hybrid DOM+canvas or narrative-first products.
game-development/web-games, game-development/pc-games, …).| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 40,023 | 27,140 | -32% | 1 | 1 | 0% | 6,894 | 5,704 | -17% | 0 | 0 | — |
case-02 | fail→fail | 40,268 | 29,495 | -27% | 1 | 1 | 0% | 6,442 | 5,929 | -8% | 0 | 0 | — |
case-03 | pass→pass | 22,826 | 19,653 | -14% | 1 | 1 | 0% | 3,571 | 4,339 | +22% | 0 | 0 | — |
case-04 | pass→pass | 30,405 | 19,694 | -35% | 1 | 1 | 0% | 5,151 | 4,182 | -19% | 0 | 0 | — |
case-05 | pass→pass | 16,809 | 11,550 | -31% | 1 | 1 | 0% | 2,605 | 2,981 | +14% | 0 | 0 | — |
case-10 | pass→pass | 20,705 | 14,934 | -28% | 1 | 1 | 0% | 3,205 | 3,515 | +10% | 0 | 0 | — |
case-06 | pass→pass | 14,673 | 7,746 | -47% | 1 | 1 | 0% | 2,210 | 2,586 | +17% | 0 | 0 | — |
case-07 | pass→pass | 12,747 | 9,704 | -24% | 1 | 1 | 0% | 2,036 | 2,685 | +32% | 0 | 0 | — |
case-08 | fail→pass | 16,978 | 11,878 | -30% | 1 | 1 | 0% | 2,486 | 3,019 | +21% | 0 | 0 | — |
case-09 | pass→pass | 20,818 | 32,342 | +55% | 1 | 1 | 0% | 3,109 | 4,193 | +35% | 0 | 0 | — |
case-11 | pass→pass | 19,946 | 14,777 | -26% | 1 | 1 | 0% | 2,944 | 3,324 | +13% | 0 | 0 | — |
case-12 | pass→pass | 19,053 | 19,909 | +4% | 1 | 1 | 0% | 3,044 | 4,250 | +40% | 0 | 0 | — |
case-13 | pass→pass | 23,145 | 19,642 | -15% | 1 | 1 | 0% | 3,818 | 3,841 | +1% | 0 | 0 | — |
case-14 | pass→pass | 14,359 | 11,252 | -22% | 1 | 1 | 0% | 2,373 | 3,027 | +28% | 0 | 0 | — |
case-15 | pass→pass | 22,154 | 21,524 | -3% | 1 | 1 | 0% | 3,442 | 4,440 | +29% | 0 | 0 | — |
case-16 | fail→pass | 14,342 | 11,333 | -21% | 1 | 1 | 0% | 2,233 | 2,885 | +29% | 0 | 0 | — |
case-17 | fail→pass | 19,776 | 16,120 | -18% | 1 | 1 | 0% | 3,184 | 3,701 | +16% | 0 | 0 | — |
case-18 | fail→pass | 20,097 | 20,561 | +2% | 1 | 1 | 0% | 2,871 | 3,948 | +38% | 0 | 0 | — |
case-19 | pass→pass | 11,544 | 8,057 | -30% | 1 | 1 | 0% | 1,773 | 2,344 | +32% | 0 | 0 | — |
case-20 | pass→pass | 24,253 | 15,364 | -37% | 1 | 1 | 0% | 4,615 | 4,040 | -12% | 0 | 0 | — |
case-21 | pass→pass | 23,081 | 19,435 | -16% | 1 | 1 | 0% | 4,833 | 5,334 | +10% | 0 | 0 | — |
case-22 | pass→pass | 21,248 | 20,395 | -4% | 1 | 1 | 0% | 3,680 | 4,880 | +33% | 0 | 0 | — |
case-23 | pass→pass | 24,710 | 16,948 | -31% | 1 | 1 | 0% | 3,508 | 3,864 | +10% | 0 | 0 | — |
case-24 | pass→pass | 16,625 | 13,994 | -16% | 1 | 1 | 0% | 2,506 | 3,451 | +38% | 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. 24 cases were attempted. The headline lift of +17 percentage points is the difference between those two pass rates over the 24 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.