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 1/60s simulation step with interpolated render. Same frame, same sim, every machine — replays and netcode that don't drift.
A small, game-first language. Spawn players, mount platforms, hook collisions and goals — without ceremony, without inheritance trees.
Drag-and-drop level design with grid snapping, tile palettes, and back-syncing — every visual change writes Flat_F you can read.
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.
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.
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 }