Skip to content
Ercan Labs
← All workGAME · PRIVATE · prototype

Out of Warranty

A turn-based 2D arena game where small service robots fight for the right to spare parts.

46
JS modules
28
Design docs
26
Isolated test scenes

How this was measured: No build step; index.html runs directly. Closed test report is in the repo.

Architecturetest scene per mechanic
  1. SHELL
    • index.htmlno build step
  2. MODULES
    • 46 JS modülü
    • sahne izolasyonu
  3. TESTS
    • 26 test sahnesi
  4. RENDER
    • Canvas
Each mechanic runs in its own test scene, verifiable without opening the whole game.

Problem

The most expensive mistake in a small game prototype is a design decision made before playing. Economy, damage, ammo balance and AI behaviour look reasonable on paper and collapse in the first ten minutes.

So the prototype's first goal was not to look good, but to run and measure every system in isolation.

Constraints

  • No build step: the game must open from file://. That constrains module loading and asset paths from the start.
  • Solo developer, and the art direction changed later (robot theme).
  • Multiplayer is a target, but the single-player core has to hold first.

Architecture decisions

01

Buildless core

Plain JavaScript with no ES modules; open index.html and the game runs. Feedback loops measured in seconds, and "forgot to build" never happens.

Cost: No module system, bundling or type checking; file discipline is manual.

02

A test scene per system

Separate HTML scenes for combat, HUD, market, targeting, projectiles and robot picking. A balance change is measured there before it enters the whole game.

Cost: Scene files are upkeep; in return "what did this change break" takes 30 seconds.

03

Balance documented, not buried in code

Ammo balance, difficulty curve and map combat layout live in separate docs; code implements the document. Design decision and implementation read separately.

Cost: Consistency between two places is on me.

04

Art direction change managed by plan

The move to a robot theme was done plan-first, code-second; a single conversion with a defined way back.

Cost: Writing the plan before coding; slow at first, fast after.

Proof

  • JS modules46
  • Isolated scenes26 HTML
  • Design/balance docs28 Markdown
  • StatusPlayable arena prototype, closed test done

Known limits

  • Multiplayer (Steam lobbies) is at the planning stage; no working network layer.
  • Not published; itch.io text is ready, release date is not.
  • No test automation: verification is visual in isolated scenes plus closed-test feedback.
  • Source is in a private repo.

What I learned

In a game prototype the most valuable tool is not the engine, it is the isolated scene. The moment you can run one system alone, design arguments end: instead of "it feels bad" you compare two numbers.

Stack

JavaScriptHTML5 CanvasWeb AudioSteam lobbies (planned)