BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
Hold Europe against a swarm from the east. Real-time strategy meets tower defence, in the browser.
GamesJavaScript · CSSGitHub @markclausingOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Article 5: hold Europe against a swarm from the east. RTS meets tower defence in the browser.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Hold Europe against a swarm from the east. Real-time strategy meets tower defence, in the browser, on a phone or with a mouse. It starts the way people expect it would: unmarked troops over the Estonian border near Narva, supposed to look like nothing much. Each wave opens a front or two more - Latvia, the Suwałki gap, the Baltic Fleet, Belarus, the Black Sea, the Arctic - until wave fifteen, which is everything at once. You are always NATO and Europe. You put tanks, infantry, drones, fighters and frigates in the way, and the bill for everything you lose is your score.Read the full README ↗
Hold Europe against a swarm from the east. Real-time strategy meets tower defence, in the browser, on a phone or with a mouse.
It starts the way people expect it would: unmarked troops over the Estonian border near Narva, supposed to look like nothing much. Each wave opens a front or two more - Latvia, the Suwałki gap, the Baltic Fleet, Belarus, the Black Sea, the Arctic - until wave fifteen, which is everything at once. You are always NATO and Europe. You put tanks, infantry, drones, fighters and frigates in the way, and the bill for everything you lose is your score.
No build step and no npm install. The only library is three.js (r186), in
vendor/, so the game runs offline and nothing is fetched while it plays.
npm start # http://localhost:8080
npm test # the simulation and the score board, headless
npm run test:ui # the real page, with a mouse and a finger (needs npm start)
Tap the map to deploy. A ring of five units opens where you tapped, each
with its price; the ones that cannot go there are greyed out. Or pick a card from
the bar at the bottom (keys 1–5) and tap where it should go.
| Unit | Where | Good against |
|---|---|---|
| Infantry | our ground | rifle squads; retakes ground; MANPADS at level 3 |
| Tank | our ground | everything on the ground; retakes ground |
| Drone | over our ground or coast | armour and ships, from a loiter circle |
| Fighter | over our ground or coast | drones, missiles, bombers; bombs at level 2 |
| Frigate | open sea near our coast | ships, coasts and the sky; cruise missiles at level 3 |
Tap one of your units to upgrade it (three levels), move it, or stand it down for part of what it cost - which is not counted as a loss. On a computer, right click moves the selected unit.
Drag to move the map, pinch or scroll to zoom; a two-finger swipe
on a touchpad pans. WASD/arrows pan too, Space calls the next wave, F
changes speed, Esc pauses.
The red markers show where the next wave comes from, how many, and where it is heading. Call a wave early - the big button, or tap a marker - and the time you did not wait is paid out as budget.
The score is what the war cost you, and lower is better:
| Lost | Charge |
|---|---|
| a 25 km square of ground | 60 (half back if you retake it) |
| a city | 1,500 |
| a capital | 4,000 (half back if you liberate it) |
| one of your units | 1.5 × what you spent on it |
| a drone or missile that gets through | 250 to 1,260 |
The board ranks by how many waves you held, then by fewest losses: a general who saw the whole war through is above one who lost cheaply in wave three. There is a list per difficulty.
src/game/ the war: 30 ticks a second, seeded, no DOM, runs in Node
sim.js units, combat, ground and cities changing hands, waves, the bill
flow.js flow fields for the swarm, A* for your units
map.js the 25 km grid: land, sea, countries, who started with what
units.js every unit on both sides, three levels for yours
waves.js the fifteen waves, and the three difficulties
data/ europe.js, generated by tools/build-map.js
src/render/ three.js
terrain.js the land (real elevation, shader-painted) and the sea
models.js every unit built from primitives, with turrets and rotors
unitview.js one instanced draw per part per kind, however big the swarm
fx.js fire, smoke, tracers, missiles and shock rings
camera.js the table-top camera
src/ui.js the HUD, radial menus, labels over the map
src/main.js the loop, input, menus, sound, the score board
The map is Natural Earth (1:50m countries and lakes) and the Terrarium elevation
tiles, projected Lambert azimuthal equal-area so a square kilometre is a square
kilometre wherever you lose it. tools/build-map.js fetches them once into
tools/.cache/ and writes src/game/data/europe.js and assets/relief.png.
The swarm does not plan routes: every target city has a distance field over the grid, and three hundred units walk downhill on one array. Your units are few and get A*.
The look is two halves. The units are Total Annihilation's: hard-edged, flat-shaded, with turrets that track their target, rotors that spin and radars that sweep. The map is Kingdom Rush's: saturated colour, chunky trees, painted surf on every coast, team rings under every unit, and a tilt-shift blur that makes a continent look like a table you could lean over.
Graphics quality picks itself and steps down if the frame rate drops; set it in
the menu or force it with ?quality=low|medium|high|ultra.
Kept in localStorage, merged with a shared board: the Cloudflare Worker in
worker/, live at https://webta.vibecoach.workers.dev. New results that make a
top ten are posted to Discord. npm start serves the same two calls locally,
and ?board= in the address points a page at any other board. See
worker/README.md.
node tools/simtest.js --report # the bot plays every difficulty, with the numbers
node tools/simtest.js --log # one war, wave by wave
node tools/shot.js out.png # a screenshot from headless Chrome (needs npm start)
node tools/make-icons.js # the app icons
node tools/build-map.js # rebuild the map from the sources