VOXCADE

Voxcade

Every classic 2D genre, in voxels.

Scenes from the five games that come with Voxcade, drawn by the engine from their recorded runs.

Voxcade is a game engine that lifts every kind of game there was in 2D into the third dimension: shooters, jump & runs, RPGs, adventures, strategy, racing, simulations, all made of voxels you can blow apart. Write them in Lua, shape them in its own editors, and play them alone, side by side at one screen, or together over the network.

In development · not released yet

Games

Five games come with the engine, each a folder of Lua and voxels, each a different genre.

Screenshot of More Blood

More Blood

Run-and-gun shooter

Fight through the desert, free the hostages and bring down the gunship. Huts, watchtowers and the ground itself burst into voxels.

Screenshot of Voxkeep

Voxkeep

Jump & run

A castle at night: six rooms of bats to time, ferries over spikes, levers, lifts and a crate that holds a hatch open.

Screenshot of Pulsar

Pulsar

Space shooter

The enemy waves arrive on the bars of the music. Fly alone or with a friend: two ships, each with its own shield, bombs and score.

Screenshot of BunnyFarm

BunnyFarm

Farming game

Sow, harvest, cook and fill orders, keep hens, and mend the fence before the wolf comes at night. In English, German and French.

Screenshot of Sokovox

Sokovox

Puzzle

Sokoban in voxels, with the 155 Microban puzzles by David W. Skinner.

Make your own

A game is a folder: conf.lua sets it up, main.lua holds its rules, and .vox models sit beside them. Ready-made rules move the things of a shooter or a jump & run; what a touch, a hit or a fall means is your code.

conf.lua
function conf(c)
  c.kit = "platformer"
  c.things.gem = {
    behaviour = "pickup", model = "gem.vox",
    family = "pickups", spin = 120,
    props = { worth = 100 },
  }
end
main.lua
function on_touch(a, b, where)
  if a ~= player then return end
  if b.families.enemies and where == "top" then
    b:hurt(1, player)
    player:bounce(50)
  elseif b.families.pickups then
    player.state.score = player.state.score + b.props.worth
    b:remove()
  end
end
From Voxkeep: a gem worth 100 points, and a jump onto an enemy.
The Voxcade IDE: the game's files on the left, Voxkeep playing in the main area.

The IDE

One window for the whole game: the code, with the API's names offered as you type; the game playing in place, its errors pointing at the line; scenarios that start a run anywhere; and BUILD, which packs the game up to share.

Editors for voxels and levels

Shape models voxel by voxel, or with boxes and spheres, bevels and a mirror; build levels from blocks of voxels. Calm on purpose: few tools, big words, the game's own light.

An agent along, if you like

The IDE's console can run Claude Code, which sees the game you are making: it looks at a frame, reads the game's state and tries a line of Lua in the running game.

The voxel editor with the hero of Voxkeep.
Pulsar with two ships, one in blue, one in gold.

Play together

Up to four players at one screen, as at an arcade machine: pads and a shared keyboard, one camera holding the group together. Over the network every machine plays the same game in step, and friends can join a game already running.

  • Co-op, versus or teams: each game decides.
  • A second player joins with START on a pad, or Return at the keyboard.
  • Every run is recorded, network games too.

Under the hood

Every run a replay

The simulation is deterministic: the same keys give the same game on Linux, Windows and macOS. Replays double as tests, and a game can be checked without a window.

Start anywhere

Scenarios begin a run late in a game, and a console (the key left of 1) runs Lua while it plays.

Save and see

Code, models, levels and songs reload while the game runs.

Everything breaks

The world is voxels: blow a hole in it, and the pieces cut loose fall.

Music as text

Songs are written in MML for SID-like voices, or composed from chord progressions, and a game can move on their beat.

Lit like pixel art

Voxel-exact shadows, glow, glass and metal. Light and shade come from the engine, never painted into the models.

Native and fast

Rust, wgpu and SDL3 on Vulkan, DirectX 12 or Metal. Smooth on older machines too, with quality levels for the rest.

Lua or Rust

Games are Lua in a safe, deterministic sandbox, in the spirit of LÖVE; a game can also be written in Rust on the engine alone.