Flatform v0.1.0
2D PIXEL-ART PLATFORMER ENGINE / 0.1.0 PROTOTYPE

NO BOILERPLATE,
ONLY BOLD MOVES.

Flatform is a focused engine for side-scrolling games. Write a few lines of Flat_F, drop a tilemap in the Constructor, and watch your level run in the live preview the same frame you save it.

FIXED STEP 60Hz
TARGET RES 320×180
EXPORT HTML5
LICENSE OSS
LEVEL_01.FLATF / LIVE
320×180 · 60FPS
SCORE 0240
x 03
FLAT_F 1.0.0 · ENGINE 0.2.0
SPC
/ 01 — RUNTIME

Deterministic Loop

Fixed 1/60s simulation step with interpolated render. Same frame, same sim, every machine — replays and netcode that don't drift.

/ 02 — LANGUAGE

Flat_F Scripting

A small, game-first language. Spawn players, mount platforms, hook collisions and goals — without ceremony, without inheritance trees.

/ 03 — TOOLING

The Constructor

Drag-and-drop level design with grid snapping, tile palettes, and back-syncing — every visual change writes Flat_F you can read.

/ ABOUT FLATFORM

WE BUILT A NARROW ENGINE SO YOU CAN SHIP A WIDE GAME — PIXEL-PERFECT, SIDE-SCROLLING, PLAYABLE TODAY.

MISSION

SHIP IT, DON'T FIGHT IT.

At Flatform, our mission is to compress the distance between an idea on a notebook page and a level you can actually jump through. Less framework, more game.

VISION

A HOME FOR PLATFORMERS.

One toolchain that knows what a coyote frame is, what a jump buffer should feel like, and where your tilesheet seams should land. Built for one job — done well.

FIXED-STEP COYOTE TIME JUMP BUFFER WALL JUMP PARALLAX TILEMAPS SPRITE SHEETS ROOM TRANSITIONS CHECKPOINTS AUDIO MIX HTML5 EXPORT CONTROLLER MAPPING FIXED-STEP COYOTE TIME JUMP BUFFER WALL JUMP PARALLAX TILEMAPS SPRITE SHEETS ROOM TRANSITIONS CHECKPOINTS AUDIO MIX HTML5 EXPORT CONTROLLER MAPPING
/ THE LANGUAGE

FLAT_F READS LIKE THE GAME YOU'RE BUILDING.

A tiny surface area of commands, parameters, and events. Every line maps to something you can see move on screen. No abstract base classes. No build step.
▾ main.flatf
player.flatf
level1.flatf
UTF-8 · LF · FLAT_F 1.0
01 // scripts/main.flatf — level 1
02 const GROUND_Y = 220
03 const JUMP_HEIGHT = 44
04
05 on enter_level(level) {
06   platform(ground): rect=[0, GROUND_Y, 960, 20]
07   platform(ledge): rect=[180, 184, 72, 8]
08   collectible(coin_1): x=202, y=166, value=1
09   hazard(spikes_1): rect=[280, 216, 36, 4]
10   goal(exit): x=900, y=188
11
12   spawn(player) {
13     self.x = 32
14     self.y = 168
15     controller: kind="platformer", speed=140,
16                 jumpHeight=JUMP_HEIGHT, coyoteTime=0.10
17   }
18
19   camera_follow(player): offset_y=-18
20 }
21
22 on press("jump") { jump(player) }
23
24 on collect(coin) {
25   add_score(coin.fields.value)
26   play_sound("coin")
27 }
LIVE PREVIEW
LEVEL1 · 320×180
FRAME 00248 · 60.0 FPS · 0 ALLOC
/ ROOMS

EVERY SCENE IS JUST A .FLATF FILE — EDIT, SAVE, JUMP.

FOREST_01
FOREST · 01192 ENTITIES · 12s
CRYSTAL_03
CRYSTAL · 03248 ENTITIES · 18s
FURNACE_07
! !
FURNACE · 07312 ENTITIES · 24s
60HZ
FIXED SIM STEP
0MS
REBUILD ON SAVE
26+
CORE COMMANDS
~120KB
EXPORTED RUNTIME
/ READY WHEN YOU ARE

STOP CONFIGURING.
START JUMPING.