← LeaderboardThe Skill Leaderboard

web-games

Web browser game development. Framework selection (Phaser, PixiJS, Kaplay, Canvas/WebGL, Three.js, Babylon.js), hybrid DOM+canvas, WebGPU, optimization, PWA, audio unlock. Use when building HTML5/WebGL/WebGPU games or choosing a browser runtime.

Published by sickn33 ↗sickn33/agentic-awesome-skills

Try your first task

A source-grounded starter task has not been verified for this skill yet.

SKILL.md

name: web-gamesdescription: >-  Web browser game development. Framework selection (Phaser, PixiJS, Kaplay,  Canvas/WebGL, Three.js, Babylon.js), hybrid DOM+canvas, WebGPU, optimization,  PWA, audio unlock. Use when building HTML5/WebGL/WebGPU games or choosing a  browser runtime.risk: nonesource: communitydate_added: "2026-02-27"

Web Browser Game Development

Framework selection and browser-specific principles. For stack choice details see game-development/engine-selection.


1. Framework Selection

Decision Tree

What type of game?
│
├── 2D Game
│   ├── Full game engine features? → Phaser 4
│   ├── Fast prototype / jam?      → Kaplay
│   ├── Raw rendering power?       → PixiJS 8
│   └── Tiny / no dependency?      → Raw Canvas / WebGL
│
├── 3D Game
│   ├── Full engine (physics, XR)? → Babylon.js
│   └── Rendering focused?         → Three.js
│
├── Hybrid (DOM UI + canvas moments)
│   └── Custom shell + guest viewport
│       (Canvas/Kaplay/Phaser/Pixi inside a region/modal)
│
└── Narrative-first
    └── Ink (inkjs) or Twine export + DOM host

Comparison

FrameworkTypeBest For
Raw Canvas / WebGL2D / low-levelSmall scope, full control
Kaplay2D toolkitRapid prototypes
Phaser 42D engineFull game features
PixiJS 82D rendererRendering, custom systems
Three.js3D rendererVisualizations, lightweight 3D
Babylon.js3D engineFull engine, XR

Hybrid shell + guest

Use when chrome is HTML (menus, inventories, text, dashboards) but bursts of play need a canvas:

  1. Mount guest in a container; pass context in.
  2. Run a local game loop in the guest.
  3. Return results (score, pass/fail); destroy guest (RAF, listeners, GL context as needed).

Do not let the guest own global app routing unless the product is a full-screen game.


2. WebGPU Adoption

Runtime support

WebGPU support depends on browser version, OS, adapter, driver and secure context; do not infer availability from a browser-name table or a historical global percentage. See MDN WebGPU.

Decision

  • New GPU-heavy projects: Use WebGPU with WebGL fallback
  • Broad legacy / simple 2D: Start with WebGL or Canvas 2D
  • Feature detection: Check navigator.gpu, handle a null requestAdapter() result, device creation failures and device loss; offer a tested fallback

3. Performance Principles

Browser Constraints

ConstraintStrategy
Local files require user-granted access or selected file inputRespect permissions; bundle public assets
Tab throttlingPause when hidden (visibilitychange)
Mobile data limitsCompress assets
Audio autoplayRequire user interaction

Optimization Priority

  1. Asset compression - KTX2, Draco, WebP
  2. Lazy loading - Load on demand
  3. Object pooling - Avoid GC
  4. Draw call batching - Reduce state changes
  5. Web Workers - Offload heavy computation

4. Asset Strategy

TypeFormat
TexturesKTX2 + Basis Universal (or WebP/PNG for simple 2D)
AudioWebM/Opus (fallback: MP3)
3D ModelsglTF + Draco/Meshopt
PhaseLoad
StartupCore assets, <2MB
GameplayStream on demand
BackgroundPrefetch next level

5. PWA for Games

Benefits: offline play, install, fullscreen, optional push. Installation: requirements vary by browser; use an appropriate web app manifest and secure context. A service worker is useful for offline behavior but is not universally an installation prerequisite. Explicitly implement and test cache/version updates and offline recovery; installation alone does not provide offline gameplay. Installability guidance.


6. Audio Handling

  • Create/resume AudioContext on first click/tap
  • Prefer Web Audio API; reuse decoded AudioBuffers, but create a new AudioBufferSourceNode for each playback (source nodes are one-shot); preload common SFX
  • Compress with WebM/Opus when possible

7. Anti-Patterns

❌ Don't✅ Do
Load all assets upfrontProgressive loading
Ignore tab visibilityPause when hidden
Block on audio loadLazy load audio
Skip compressionCompress everything
Assume fast connectionHandle slow networks
Leave canvas engines running off-screenTear down guests

Remember: Browser is the most accessible platform. Respect its constraints.

When to Use

Use when building HTML5/WebGL/WebGPU games, choosing a browser runtime, or wiring hybrid DOM+canvas guests.

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.