Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

STATIC

A short, monochrome puzzle platformer about what remains.

Play it in the browser: rfhickey.github.io/static-game

Something ended the world. Nobody remembers what, and the game never says. What's left: ash, fog, the ruins of cities, and the machines, still running, still following their last instruction. You are one small silhouette crossing all of it, looking for proof that you are not the only one left.

The look and feel chase the same targets as Playdead's Limbo: everything near the camera is black silhouette, everything far is pale haze, film grain and fog sit over the whole frame, there is no HUD, no dialogue, no tutorial, and death is instant, frequent, and cheap to retry.

The one rule

The machines see motion, not people.

Every sentry in the game (patrol drones, wall turrets) detects movement only. When a searchlight lands on you, stop. Hold still while it stares, and it will decide you are debris and move on. Run, and you have less than half a second. The whisper you see the first time is the only hint the game gives.

The hunter in the fifth stretch is the exception. It already knows you are alive. Run.

Running it

No build, no dependencies. Either:

  • Double-click index.html (any modern browser), or
  • Serve it: python -m http.server in this folder, then open http://localhost:8000

Sound starts after the first keypress (browser autoplay rules).

Controls

Key Action
A / D or arrows move
Space / W / Up jump (hold for full height)
E / S / Down use levers
M mute
R return to the last lamp (or restart from the end screen)

Lit lamps are checkpoints. Everything between lamps resets when you die.

The road east

  1. Ash forest: learn to walk, hop the bus, clear the first pit.
  2. Outskirts: a crate, a wall too tall to jump, and the first drone.
  3. The fences: one cycles on a timer, one has a lever, and a searchlight owns the ground between them. Machines cannot see you pull a lever if you are standing still while you do it.
  4. The works: a turret you cannot outrun, an EMP floor plate, and three pistons on offset timers.
  5. The hunter: something big wakes up behind you. There is a chasm it does not see coming. Look closely at what is lying beside the cold campfire on the way in.
  6. The hill: a light at the top that is not a machine.

Testing

node test/sim.js proves the level against the live physics constants: every gap is checked against the simulated jump arc, every rise against the jump height, every entity against the ground it needs, the EMP against the turret it must silence, and the mech against the player's top speed. If a tuning change in js/config.js makes any part of the level impossible, the test fails before a playtest ever would.

Layout

File What it holds
js/config.js every tuning constant
js/util.js math, PRNG, geometry queries
js/physics.js AABB movement and the jump simulator
js/levels.js the world: solids, entities, props, testable claims
js/entities.js drones, turrets, fences, crushers, the hunter, the fire
js/render.js parallax ruins, fog, grain, vignette, the player silhouette
js/audio.js procedural wind, rumble, hums and one-shots (no asset files)
js/main.js loop, input, camera, states, particles

Plain script tags, no modules, so file:// works. The DOM-free files (config, util, physics, levels) also load in Node for the tests.

About

STATIC: a Limbo-style monochrome puzzle platformer about what remains. Plain JS + canvas, zero dependencies, procedural audio.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages