The Project
Forest Survival is a free 3D first-person shooter where you survive endless waves of hostile robots across eight biome maps, playable instantly in any modern browser. One developer, Surya, wrote it; the source is MIT licensed and public.
Forest Survival is a browser-native wave-survival FPS built with React 19, TypeScript 5.9 in strict mode, and hand-written Three.js r180 on WebGL2. Rapier 3D handles death ragdolls, Convex handles accounts and leaderboards, and PeerJS carries multiplayer peer-to-peer with no game server in the middle. It is free, has no ads and no monetization code, and Solo and Tutorial need no account.
Forest Survival drops you on foot into a forest overrun by hostile machines, and the waves never stop. There is no win condition — the run ends when you die. Across three modes and four difficulties you pick one of 8 classes, earn your way through 8 weapons, and fight 10 robot archetypes plus Ranged Sentinel turrets across 8 maps, one biome each.
The design bias is toward systems that change how you play rather than numbers that go up. Hazards damage robots on the same terms they damage you, so kiting a pack across lava is a real tactic. Four archetypes exist to break a habit: the Bulwark forces you to flank, the Howler to change targets, the Leaper to react, the Splitter to think about spacing. The full guide covers how they fit together.
Forest Survival is a single-page TypeScript application with a hand-written render layer — no game engine, no engine editor, no asset store. The table below is the honest stack.
| Layer | What Forest Survival uses |
|---|---|
| Language and build | TypeScript 5.9 (strict), Vite 7 |
| Interface | React 19, Tailwind 3.4 |
| 3D | Three.js r180 on WebGL2, written by hand |
| Physics | Rapier 3D (WASM), death ragdolls only |
| Accounts and data | Convex with Convex Auth |
| Multiplayer | PeerJS over WebRTC, host-authoritative |
| Hosting | Vercel |
Forest Survival talks to Three.js directly — scene graph, materials, shader patches and the render loop are imperative code sitting outside React, which owns only menus, HUD and settings and never re-renders mid-frame. @react-three/fiber and @react-three/drei appear in the dependency list but are never imported, so please do not credit them: a reconciler between the game loop and the GPU was the one thing this project could not afford.
Rapier 3D in Forest Survival exists only to make robots fall over convincingly when they die. Everything else — movement, step-up, wall-slide, enemy locomotion, projectiles — stays custom kinematic code, because the game is GPU-bound rather than physics-bound and a full rigid-body world would buy nothing. The WASM module is lazy-loaded, ragdolls are capped, and they run in solo only.
Forest Survival splits persistence away from the live session entirely. Convex stores accounts, progression, leaderboards and daily challenges behind Convex Auth, and is deliberately never consulted during gameplay — no live subscriptions run while you are shooting. The match itself is browser peer-to-peer over WebRTC via PeerJS: the host simulates enemies authoritatively, up to seven guests mirror. There is no game server, which is also why several solo systems are absent from multiplayer.
The Tactical Director sits above individual enemy AI and reads how you play — camping, kiting, engagement range, accuracy, damage stress. It emits one shared directive per tick that every robot reads inside its own decision function: flank bias, encircle, rush, prediction lead, hold range. A single O(1) evaluation instead of per-enemy planning is what makes it affordable. The model is openly Left 4 Dead's AI Director, F.E.A.R.'s squad tactics and Dave Mark's tactical influence maps; it is solo only.
The part worth stealing is the relax beat, borrowed from Left 4 Dead: when you are already taking heavy fire the rush directive is eased rather than intensified, because a director that only escalates turns a bad moment into an unrecoverable spiral. HUD callouts expose the live directive — “The swarm swings wide to flank you”, “Snipers pull back to zone you out”.
Enemy perception in Forest Survival raycasts against real world geometry, so trees, rocks and walls genuinely block sight instead of being decoration a navmesh ignores. Hearing is modelled too, with a five-second sound memory and a last-seen position robots move toward once you break contact. Call it occlusion, not stealth — base vision is 500 m across a full 360°, and the honest ways to break tracking are cover, the Phantom's Cloak, and storms that cut engagement range.
Robots also run predictive trajectory analysis on incoming fire and sidestep it, at 20 m detection for Fast units and 15 m for the rest. Both systems tick every enemy every frame, so both were rewritten to allocate nothing per tick — no temporary vectors, no clones, no sorting in the hot path.
Every in-game sound in Forest Survival is synthesized live in the browser: all 55 effects and the entire adaptive combat score are generated at runtime, not streamed from assets. That keeps the download small and lets the score respond to the state of the fight rather than crossfading fixed loops. One honest caveat — the menu music is a shipped MP3, so the claim is zero gameplay audio files, not zero audio files.
The ARK-07 relay network is Forest Survival's attempt at a risk layer that doubles as lore. Three spires stand on each map (four on Desert Canyon and Frozen Tundra), each projecting a 55 m field. Inside it robots hit up to 90% harder and move up to 45% faster, and keep that charge for up to 45 seconds after leaving. You take radiation damage after a 2.2 s grace window, your vision distorts, and equipment jam force-expires any held power-up. Kills inside the field pay up to 50% bonus score, so it is a wager rather than a wall.
“A pre-collapse relay spire — one node of a network still answering a dead satellite, still running its last order: field-test the units against a live target. That target is you.”
Barrels that spawned in a field become irradiated cores that detonate across 32 m, and the network can hijack a whole wave with an Overdrive Surge or a Null Wave. The layer runs host-authoritatively in multiplayer too; it is off in the tutorial.
Running all of the above at frame rate is the constraint that shapes every other decision in Forest Survival. Combat effects are pooled rather than allocated — disposal returns an object to its pool instead of freeing it — and proximity queries go through a spatial grid. Dynamic lights are pre-allocated at startup, because adding one at runtime forces a shader recompile and a visible hitch. For the same reason a warm-up pass renders one instance of every shader-distinct object before the first wave, so the GPU links its programs behind the loading screen rather than the first time a rocket detonates. Five preset tiers, Ultra Low to Ultra, plus a custom section, let one build run on a phone and on a desktop GPU.
Forest Survival composites its final image through Bloom, GTAO, ACES tonemapping, SMAA, god-rays and CAS. The intent is a grounded, contrast-heavy look rather than a bright arcade one — ACES for filmic highlight rolloff, GTAO to seat objects into the ground, god-rays to give the sun direction something to do. Each pass is gated by graphics tier, so lower presets drop passes, not just resolution.
Forest Survival is MIT licensed and the whole repository is public on GitHub. Read the render loop, the Tactical Director, the synthesized sound bank and the Convex schema, fork any of it, ship it in your own work under the licence. A 21-page project wiki documents the systems in more depth than these pages do, and the in-game tutorial links into it step by step. Issues and pull requests are welcome.
Forest Survival was designed, coded, modelled and scored by Surya as a solo project — every system on this page, plus the procedural robot armour, the weapon rigs and the menu scene. One acknowledgement matters a great deal: smsolutionsva-byte provided the forestsurvival.live domain and wrote the project wiki. The game has a proper home on the web and proper documentation because of that.
The open-source work it stands on is credited in the repository manifest: Three.js, Rapier, React, Vite, Convex, PeerJS and Tailwind. One disclosure that should not be buried — Vercel Analytics and Speed Insights are mounted on the site.
The contact route for Forest Survival is the GitHub repository — an issue for a bug, a discussion for an idea, a pull request if you already fixed it. Bug reports are far more useful with your browser, your device and the graphics preset you were on. If you are working out a mechanic rather than reporting a problem, the FAQ and the controls page answer most of it, and the trailer shows what a run looks like.
If you are here for the engineering, the wiki is the technical reference. It is maintained separately from this site and kept in step with the code.
Forest Survival runs in the browser tab you already have open, and Solo and Tutorial need no account — sign-in exists only for multiplayer and for saving progression.