Minecraft × Call of Duty · cross-platform · in a browser tab

BLOCKSTRIKE

VOXEL ARENA WARFARE — CROSS-PLATFORM: WEB, PC & MOBILE · free to play · no install · *subscription required to play online

CROSS-PLATFORM · WEB, PC & MOBILE FREE TO PLAY · SUBSCRIPTION FOR ONLINE ZERO ASSET FILES — EVERYTHING DRAWN IN CODE 120 FPS TARGET 8 MODES · 16 MAPS · 36 WEAPONS · 17 KILLSTREAK REWARDS

🖱️ CLICK TO FIRE — FOUR IN THE CHEST DROPS THE BOT. OR JUST DIG THE ISLAND APART.

BOT HITS0
BOTS DOWN0
BLOCKS MINED0
8/ 16
SCROLL
So what is this thing

MINECRAFT
MET CALL OF DUTY.

BlockStrike is a full arena shooter built out of voxels: procedurally generated worlds you can mine and build in, and Call of Duty gunplay on top of them — sprint, slide, ADS, recoil you can learn, killstreaks that arrive by air.

🌍
PROCEDURAL

Every map is new

19 hand-tuned themes — snow, dunes, volcanic, nether, sky castle, the end, a jungle you can climb into — and 27 kinds of structure (houses, warehouses, bunkers, mineshafts, pyramids, monuments, ruins, stilt huts) rolled fresh from a seed. Two players typing /seed compare maps; the whole room fights the same one.

🎯
GUNPLAY

CoD movement, honest cone

Sprint, slide, jump, ADS with a 60% look slow-down. Recoil is a view offset the gun wears and bleeds back, bloom grows per shot, air costs 3.2× accuracy — and the reticle gap is the cone the bullet flies on.

🕹️
ANY SCREEN

One tab, zero installs

Keyboard and mouse, gamepad, or thumbs: touch controls with a trackball-style flick, a layout you can drag into place, and per-device sensitivity shown in cm/360° so you can calibrate it like you mean it.

0map themes
0craftable recipes
0killstreak rewards
0players per room
A procedurally generated voxel archipelago behind the menu
GENERATED AT BOOT procedural · seeded at load
The shooting

THIRTY-SIX WEAPONS.
ONE HONEST CONE.

Six cells, thirty-six weapons, and every one of them on this page with its own numbers. Nine melee tools — knife, machete, sword, greatsword, pickaxe, hammer, battle axe, shovel, hoe. Five sidearms — M1911, GLOCK 17, .357 MAGNUM, MP-40, UMP-45. Seven primaries: three shotguns, and four rifles from the M4 CARBINE to the M16A4's three-round burst. Six marksmen — bow, crossbow, M14 DMR, SVD, RAILGUN, .50 cal. Four throwables and five specials, four of which you switch on for thirty seconds rather than carry. What a trigger pull is worth, how fast it comes round and how far it holds: read out of the build, not remembered.

Every bar is that weapon measured against the best in its own row — the top melee damage is a full bar, and a rifle's cadence says nothing about a marksman's. The figure beside each bar is the game's own number: DMG is one trigger pull with every pellet counted, RPM and SWING are per minute, REACH is where damage starts to drop (FLAT means it never does), BLAST is the radius it touches, and ISSUED is what a new career walks in with — everything else is bought with coins at the level printed on the card.

BlockStrike loadout screen with a live 3D weapon turntable
LOADOUT — A LIVE TURNTABLE 7 attachment rails

Attachments that redraw the gun

A suppressor is ribbed. An 8× scope is a tube with a bell. A drum is a disc. Click a part and mountAttachments re-measures the finished gun and seats it on the right rail — so the thing you fitted is on the thing you are holding.

Frags are thrown, not dropped

The arm adds its own loft and the dotted arc under the reticle is drawn from the same function the grenade flies — so the line can't lie about where it lands. 26 m/s, 3 s fuse, and a level chuck puts it ~32 m out.

SHIFT · SPRINT

CTRL while sprinting is a slide.

RMB · ADS

Hold or toggle. Scopes slow your turn — as they should.

V · QUICK-KNIFE

One gesture per weapon keeps the arcs honest.

C · CAMERA

First person or over-the-shoulder, any time.

Controllers & thumbs

A PAD KNOWS
WHAT IT IS.

Keyboard and mouse, a controller, or thumbs on glass — all three are the same input source to the game. The pad is the one that gained a vocabulary: it prints the buttons your controller actually has, in the names printed on its plastic.

🎮
FOUR FAMILIES

Xbox, PlayStation, Switch — or standard

Every pad is read through the W3C standard mapping, but index 0 is A on an Xbox pad, ✕ on a DualSense and B on a Switch Pro — Nintendo's bottom button is B and its right one A, the mirror of everybody else. So SETTINGS prints its legend in the family's own words (A B X Y · LB LT RB RT, ✕ ○ □ △ · L1 L2 R1 R2, or Nintendo's swapped pair) and says which family it thinks you are holding. Detection is by device id, vendor blocks first, because a DualSense reports itself as "Wireless Controller (STANDARD GAMEPAD) Vendor: 054c" — the name is noise and the vendor code is the answer. A pad no id can place is named in neutral words rather than guessed at.

🕹️
AND YOU CAN OVERRULE IT

BUTTON NAMES: AUTO

A clone shell reports itself as a generic pad and no id can say whether you are looking at a square or an X, so the screen carries DETECTED and BUTTON NAMES side by side: pick the family yourself and every hint in the game follows — the settings legend, the note in a match, the menu prompts. The legend is built from the table the game reads buttons with, so it cannot advertise a control your pad does not have, and with nothing plugged in it still prints — a player deciding whether to plug one in is exactly who reads it.

🔁
HOT-PLUG · BOTH WAYS

Clip a pad on and the thumbs go

Attach a controller on a phone and the touch controls step aside, with the arena printing a SHOW TOUCH CONTROLS note and the pause menu carrying the same row — one condition, two doors, so the note and the menu cannot disagree about whether your thumbs are gone. Take the pad off and the choice is forgotten, so the next controller starts clean. It fires in the menus too: the first thing you meet after clipping one on is a screen that already knows about it.

⌨️
THE D-PAD IS THE ITEM ROW

One control, two meanings

Up and down walk the hotbar a press at a time; left and right are the two cells a fight actually reaches for — medkit and armour plate. It is also the same four directions a menu is walked with, and the bottom face button confirms whatever the caret is on while the right one means "back": that is the Escape key in a match and the screen's own close box in a menu, so no screen had to learn a second navigation model.

💬
COMMANDS, ON GLASS

A slash, on a phone keyboard

The touch chat's one-tap chips lead with /HELP — the command that lists every command — and the drawn keyboard carries its own / key, so a phone player who reads the list can type any of it: /teleport to price, /player price nice shot. A build room swaps the row for its own vocabulary (/here, /help, /who), because a callout about a fight is not a callout in a room where nobody is fighting.

🎯
AIM

Calibrate it like you mean it

Stick sensitivity, curve and dead zone are sliders of their own above the FOV, vibration is a toggle, and a mouse is measured in cm/360° — the number a competitive player keeps in their head. Look on a pad is rate-based, so one thumb turns and micro-adjusts; both sticks share the same radial dead zone and response curve as the touch controls, so the pad cannot disagree with itself about what a thumb position means.

Killstreaks

SIX RUNGS.
END THE MATCH.

Kills aren't the only currency any more: flag captures, banked diamonds, waves held and a minute on the hill all pay into the same counter, fractions carried and never rounded. Cross a rung and the game offers you the reward — no timer, no auto-pick, and the fight never stops. And when the same reward lands twice, the ladder stacks it where a reward is a quantity: MISSILE, SPY PLANE and SUPPLY DROP hold up to nine calls in one slot, counted on the badge, and everything else is held exactly once.

Equip before you drop

One reward per rung

Pick it on the CHARACTER screen's KILLSTREAKS tab and the slot lights up when the rung lands. Leave a rung empty and it simply asks you in the match — rewards on screen, no countdown, movement and trigger still live.

Cross a rung with the same reward already in hand and the honest answer is on the slot: a second missile, spy plane or supply drop folds into the first as a count — the second is one press away rather than a re-earned rung — while a reward that is not a quantity is refused, because a second JUGGERNAUT suit is one suit and a rung nobody can see. Two planes on station, two crates on the ground, two missiles in the air: the ones that stack are the ones you would call in twice on purpose.

BlockStrike killstreak selection screen
KILLSTREAKS TAB pre-selection
Companions

YOUR SQUAD HAS
FOUR LEGS.

The 3-kill rung hands you a pet that hunts on its own — it walks the map, bites what it finds, and levels up as it kills: two kills a level, three levels, faster and harder each time.

AVATAR RENDER DOG · LEVEL 1
CLICK A COMPANION TO RENDER IT

Loyal, fast, first into the fight you started.

Bot builder · the flagship

SAY A SENTENCE.
WATCH A CREW BUILD IT.

Type "build a house", "a castle", "make mountains", "dig a bunker" — a crew of up to seven bots walks to the site, lays every block and stops when the job is done. Try it right here:

CREW IDLE 0 blocks · 0 crew
DRAG TO ORBIT
BRAIN:
crew ready — 3 builders on the plot.
awaiting a sentence.
Two halves, one safety net

The model never touches a block

Connect an OpenAI-compatible model — Ollama, llama.cpp, LM Studio, Jan, or any cloud endpoint with a key — and the model only answers sentence → small JSON. The rules expand that into geometry, unknown templates fall back, coordinates are clamped into the level. A hostile or broken model's worst outcome is a plan the rules refuse.

PICTURE → CREW

Build a photo

A user uploads an image and the bot builds/replicates the image into block art: a vision model answers with one line — "a long low white yacht with a raised cabin and a tall mast" — and that line takes the ordinary sentence path, so the crew raises what the picture shows. Asked for almost nothing on purpose: a model deliberates in proportion to what you ask it to hold. The image is downscaled to 448 px and sent only when you press the button.

Deterministic by default

Same words, same building

The built-in vocabulary is a table, not a model, so a crew splits the same placement list every time. No server, no key, no network — it works on a plane, and it works on a phone.

BlockStrike's in-game how-to-play bots page: the enemy-AI card, the difficulty card and the bot-builder card
IN-GAME DOCS how to play → bots
Level editor · build together

MAKE A MAP.
PUBLISH IT. SHARE IT.

A 128 × 48 × 128 voxel volume you fly through, paint into and play — then publish to the world. Below is a mini version you can actually paint in: pick a block, click the ground, shift-click to carve.

The match's own item row runs along the bottom of the editor — the same hotbar, the same cells — and the side panel never sits over it: on a desk the panel is a full-height column, on a phone it is a sheet along the bottom, and the movement stick lifts clear of both rather than hiding under them. Height is its own control: the climb/dive strip stands outside the panel, over the arena on a phone, so flying down from a roof is never a trip through a menu — and it is gone the moment you leave the editor.

LEVEL 1 · MY FIRST ARENA ✔ SAVED
CLICK = PAINT · SHIFT+CLICK = CARVE
BlockStrike level editor with voxel world and side panel
THE REAL THING 128×48×128
Co-op building

A room where the artifact is a map

HOST BUILD opens a room: the host owns the grid, a build frame ships chunked level data to everyone, and every builder's strokes land in the same world. A joiner with nothing sends an ask and receives the map. Refresh and you keep the room — the relay remembers which browser it seated.

Unlimited shared maps

Published, opt-in, playable by everyone

PUBLISH runs the same validator the game uses — no spawns, a spawn walled in, a map that isn't a map: refused. Pass and it appears under USER-CREATED in solo, and in a host's USER MAP dropdown online, thumbnail and author included — so even a joiner without the level sees the layout before the blocks arrive.

Your map, your rules

Prefer the ground whole?

SETTINGS carries BLASTS REMOVE TERRAIN. Turn it off and every explosion — frags, mines, rockets, killstreaks — still hurts bodies but stops carving blocks, so a private match can't end in a moonscape.

The maps

NINETEEN PLACES
TO GET SHOT IN.

Buildings follow the map: timber cabins with snow roofs on TUNDRA, concrete blocks with metal lintels on URBAN BLOCK, adobe with a brick frame on DUNES, stilted plank decks on ARCHIPELAGO. THE VILLAGE has residents who walk their own streets and wear their own straw hats — on their heads, with their noses pointing the way they are facing. Around thirty chests a map, buried bunkers, mineshafts, rails, nether portals, boats — and a sky that is a pure clock, so the whole room gets the same weather. BACKROOMS is the vertical one: four storeys of yellow offices joined by four stairwells — two below street level, the lobby third of the four — with eight stand rooms, two to a floor, so both squads open the match on every level. Its top floor was never finished: a hall with the roof taken off, which is the one place on a roofed map a gunship can descend into. DRY FOREST is the one you climb: jungle trunks two storeys high under a ragged two-tier canopy, vines hanging off every edge, and a ladder lashed to a trunk here and there — so the crown is somewhere you walk rather than a ceiling to shoot at. (A twentieth, THE DARK FIELD, is where LIGHTS OFF plants its board.)

⛏️

Mine anything, build anywhere

Iron and gold veins run under solid ground on every map. Whatever you mine banks to your profile and comes back as material at the bench.

🌋

Hazards are terrain

Lava pools carve the map, water cancels a fall completely, fire is a cell that lives nine seconds and rolls into what's next to it.

🛤️

Rails, carts, portals, boats

Tracks are tunnelled and re-laid as structures arrive; minecarts have one degree of freedom; a lit portal takes 3 seconds and three or more lit frames make every destination random.

A procedurally generated BlockStrike map
GENERATED ARENA no asset files involved
Game modes

EIGHT WAYS
TO WIN A ROUND.

Every mode runs on a brand-new procedural map, and every mode is played headlessly by a test harness before you ever see it — because a mechanic can be correct and the mode still unplayable.

BlockStrike solo setup screen with mode and bot options
SOLO SETUP mode · bots · difficulty · map
Playable here · LIGHTS OFF

JUMP ON A TILE TO FLIP IT AND ITS FOUR NEIGHBOURS

LEVEL 1 · 3×3 · 0 PRESSES

Clear the board before the clock — zombies walk in from the four gates while you do it. Level 1 is 3×3; every level after is two tiles wider under a tighter clock.

BlockStrike in-game game modes documentation
IN-GAME DOCS how to play → modes
⛃
WHILE YOU PLAY

A ticker, not a scoreboard

What a body is doing is priced as you do it: the corner prints the delta — EARNED 40 XP · 12 ⛃ — naming which half moved, and says nothing at all when the worth has not moved. It is hidden for a match that banks nothing, and again the moment a menu comes up.

🧾
AT THE WHISTLE

The match's ledger, itemised

The results screen carries the payout as rows — KILLS, OBJECTIVE, BLOCKS MINED, then VICTORY or THE FIGHT — and the level row is drawn apart from them, because those coins were earned by the level and not by the kills it would otherwise sit under. The headline is the fight's take plus what crossing a level paid, so a player who levelled up reads a number that matches their balance rather than one smaller than it.

🎖️
THIRTEEN RANKS

A lost round still climbs

A hundred levels, thirteen ranks over them at deliberately uneven spacing — RECRUIT at 1, SERGEANT at 18, WARLORD at 100 — and the bar under the card shows the next one (or says so when the ladder is finished). Level gates what the loadout can carry, so a match you lose still moves the rank that unlocks the next thing; the character screen carries the same receipt and names what the balance can now afford: IN REACH — the nearest thing, not a count.

Crafting · the Minecraft half

A HUNDRED
RECIPES. ONE BENCH.

There is no store: every gun, every attachment, every tool, every block is made at a 3×3 bench from material you mined. The book is tabbed and every tab prints ready/total, so "what can I build right now" is one number, not a scroll.

The ladder

Wood → stone → iron → gold → diamond → obsidian

The rung is the tool's budget: a wooden pickaxe is 80 uses, obsidian 1,200. Damage crawls where durability climbs — and gold is the one rung off the curve: it hits harder than iron and dies sooner, which makes it the only real choice on the ladder.

And the bench mends it

Wear follows the tool home

A spent pickaxe comes back spent, with its hotbar cell empty until you fix it. MEND prices the repair in the tool's own material — one block per quarter — so mending early is cheap and letting it break is nearly a recraft.

BlockStrike character screen
CHARACTER body · poses · gear
BlockStrike crafting bench and recipe book
THE BENCH 100 recipes
Try a recipe — tap one
Pick a recipe to see what it costs — the same tree the bench spends, sub-crafts multiplied through.
Online · rooms & relays · cross-platform

SHARE A CODE.
FIGHT ON ONE MAP.

CROSS-PLATFORM — WEB, PC & MOBILE. A room code syncs lobbies across tabs, across devices and across networks through a relay — a phone and a desktop land in the same room. It carries a shared seed, so everyone fights the identical procedural map, or the host's own published level. Spawn into a match in flight and you get a short hold, not a head start.

THE DOWNLOAD IS WINDOWS-ONLY · THE GAME IS NOT
Room code
HOST11

FREE TO PLAY — *subscription required to play online. Solo play, the editor, a room on this device and a self-hosted relay stay free; the subscription buys online play on the official relays ($1.99/month) and nothing else. What it brings in is what those relays run on: your money keeps those servers up for everybody who plays, subscriber or not — it is a donation to the project's servers rather than a paywall on the game, and there is no other funding behind them.

BlockStrike multiplayer screen with rooms and relays
MULTIPLAYER rooms · relays · friends
BlockStrike settings screen
SETTINGS aim · audio · terrain
The BLASTS REMOVE TERRAIN toggle in BlockStrike settings, left unchecked by default
BLASTS REMOVE TERRAIN off by default · tick it for craters
Desktop build · Windows / PC only

A MODEL THAT
NEVER LEAVES THE PC.

The browser game needs nothing: no install, no account, no key, on any device. But there is one thing a tab cannot do, and the desktop build does it — it runs the model itself. The installer carries llama.cpp's runner, and the LOCAL AI box grows an ON DEVICE (THIS PC) block whose weights are a download you choose. It is also strictly a Windows / PC download: 64-bit Windows 10 and 11, and nothing else — there is no macOS, Linux, iOS or Android build anywhere. Everywhere the game runs it is free to play, and *a subscription is required to play online — money that goes straight into keeping the official relays up for everyone.

🧠
IN THE INSTALLER

The runner rides along

llama-server ships as a sidecar: one pinned llama.cpp release, each archive checked against the SHA-256 GitHub publishes for it before a byte is unpacked, and only the files the runner actually loads are kept. It lands beside the executable, because ggml's backend scan looks in the executable's own directory and nowhere else — a bundle that got that wrong starts, loads every library, and then refuses every model.

⬇️
ON REQUEST

The weights are a download

Multi-gigabyte weights cannot be an installer anyone sane publishes, so the panel offers three rungs and fetches the one you pick — weights and vision projector together: QWEN3-VL 2B · 1.9 GB, 4B · 3.3 GB (the default) or 8B · 6.2 GB. Stopping mid-fetch keeps what arrived (RESUME · 1.4 GB left), and a finished file is checked against the hash it was pinned to before it is kept.

🔌
LOOPBACK ONLY

Nothing leaves the machine

The runner comes up on a loopback port with a key minted for that port, and the panel then fills SERVER and MODEL and presses the ordinary CONNECT — so an on-device model reaches the crew through exactly the path Ollama does, and is special-cased nowhere. Downloaded once, it answers with the network off. No account, no key, no prompt leaving the box.

It reads the machine first

The rung is picked from your RAM

The panel asks what the box actually has — total RAM, what is free right now, cores — and recommends the largest rung that fits with a gigabyte of headroom, saying out loud what it found: 16 GB RAM · 9.1 GB free · 16 cores. This build's runner is the CPU one, so the line ends cpu only · no gpu backend in this build rather than leaving you to wonder why the graphics card is idle.

Two installers, one game

Slim, or offline

Both carry the identical game and the same runner, and both are 64-bit Windows installers and nothing else. Slim (~55 MB) carries Microsoft's WebView2 bootstrapper, so a machine missing the runtime fetches ~1.5 MB once; offline (~260 MB) carries the whole runtime installer, for a box with no runtime and no internet. The install is per-user, so it never asks for administrator rights — and until the builds are code-signed, Windows will show SmartScreen's warning on the way in.

⬇ WINDOWS BUILD — SIZES & SHA-256 WINDOWS / PC ONLY — NO MAC, LINUX OR MOBILE both installers, which one to take, and how to check what you downloaded
Cross-platform · web, PC & mobile · no download · no account · no store

GO BREAK SOMETHING.

Open the tab on whatever you are holding — a phone, a laptop, a desktop — and see how long the bots let you live. Then go make a map and hand it to seven friends, on any of the three. Free to play everywhere it runs; to play online on the official relays, that is the one thing a subscription buys, and what it brings in is what those relays run on for everybody.

▶ PLAY BLOCKSTRIKE — FREE blockstrike.pages.dev
CROSS-PLATFORM · WEB · PC · MOBILE THE BROWSER BUILD — WIN · MAC · LINUX · ANDROID · iOS INSTALLS AS AN APP GAMEPAD READY