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.
Every classic 2D genre, in voxels.
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
Five games come with the engine, each a folder of Lua and voxels, each a different genre.
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.
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.
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.
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.
Puzzle
Sokoban in voxels, with the 155 Microban puzzles by David W. Skinner.
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.
function conf(c)
c.kit = "platformer"
c.things.gem = {
behaviour = "pickup", model = "gem.vox",
family = "pickups", spin = 120,
props = { worth = 100 },
}
end
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
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.
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.
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.
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.
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.
Scenarios begin a run late in a game, and a console (the key left of 1) runs Lua while it plays.
Code, models, levels and songs reload while the game runs.
The world is voxels: blow a hole in it, and the pieces cut loose fall.
Songs are written in MML for SID-like voices, or composed from chord progressions, and a game can move on their beat.
Voxel-exact shadows, glow, glass and metal. Light and shade come from the engine, never painted into the models.
Rust, wgpu and SDL3 on Vulkan, DirectX 12 or Metal. Smooth on older machines too, with quality levels for the rest.
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.
Voxcade is not released yet. Coming next:
News follows here and on sacrvm.dev.