Canvas Performance Optimization

SkillMonitoring & ops

Use when an isometric Canvas game drops frames, to cut draw calls and allocations and hold a steady 60fps.

Use Canvas Performance Optimization in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Canvas Performance Optimization and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Canvas Performance Optimization skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Canvas Performance OptimizationStart free

What this skill tells your AI

The instructions your AI receives, as published by 0xheycat/isometric-game-skills in skills/canvas-performance-optimization/SKILL.md and read by ahel’s review.

Overview

Isometric games die by a thousand draw calls. This skill profiles the frame, culls off-screen tiles, batches from the atlas, and removes per-frame allocations to hit a stable 60fps.

When to Use

  • Frame rate drops or stutters.
  • Large maps lag when panning.
  • You suspect GC pauses or overdraw.

Process

  1. Profile first - measure where the frame time actually goes.
  2. Cull: only draw tiles/objects inside the viewport.
  3. Batch draws from one atlas to minimize texture binds.
  4. Cache static layers (ground) to an offscreen canvas; redraw only when it changes.
  5. Eliminate per-frame allocations (reuse arrays/objects).
  6. Avoid sub-pixel blits; snap to integer pixels.
  7. Re-profile to confirm the fix, do not assume.
Profile -> Cull -> Batch -> Cache static layer -> Kill allocations -> Re-profile

Rationalizations (Stop Lying to Yourself)

ExcuseReality
"I know what is slow without profiling"Guessing wastes hours on the wrong thing. Profile first.
"Redrawing the ground every frame is fine"Static ground should be cached. Redraw only on change.

Red Flags - STOP if you catch yourself:

  • Optimizing before profiling.
  • Redrawing static layers every frame.
  • Allocating inside the render loop.

Verification

You are NOT done until every box is checked:

  • Frame time was profiled before and after.
  • Off-screen content is culled and static layers cached.
  • No allocations occur inside the render loop; 60fps holds.

Signals

GitHub stars
25
Forks
3
Last commit
Aug 2026
Advanced
Item type
skill
Key
canvas-performance-optimization
Source
github.com/0xheycat/isometric-game-skills