Copperfall
A custom 2D JavaScript Canvas game engine and adventure prototype.
Early notes on the Copperfall engine architecture, tooling, and roadmap.
JavaScriptCanvas APIGame Dev

Quick Stats
Role: Solo Developer
Duration: Ongoing
JavaScript (ES2023)Canvas 2DEntity Component SystemWeb Audio
Links
Copperfall Engine Overview
Copperfall is currently in heavy development. This outline captures the structure I’ll expand into a full case study once the vertical slice is ready.
Goals
- Build a lightweight 2D engine in pure JavaScript without external frameworks.
- Support an entity-component-system (ECS) loop, deterministic updates, and responsive input.
- Ship a small narrative-driven prototype on top of the engine.
Planned Sections
- Renderer — batching sprites, parallax layers, screen shake, and post-processing.
- Simulation — fixed timestep loop, ECS scheduling, collision primitives.
- Tooling — map editor experiments, asset pipeline, debug HUD.
- Narrative layer — dialogue runner, scripting hooks, save system.

Notebook Excerpt
// main loop draft (subject to change)
const STEP = 1000 / 60
let accumulator = 0
let last = performance.now()
function tick(now) {
accumulator += now - last
last = now
while (accumulator >= STEP) {
world.update(STEP)
accumulator -= STEP
}
world.render(ctx)
requestAnimationFrame(tick)
}
requestAnimationFrame(tick)
Next Steps
- Capture footage of the ECS debugger overlay once the UI is stable.
- Write up the level streaming approach and asset packing pipeline.
- Post a build for early playtesting feedback.
Have thoughts?
Curious what others see or think
Feel free to reach out or leave feedback
Share FeedbackPrefer email? joshuatjhie@pm.me