Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A blocky three.js shooter you play in the browser against bots: 1v1, 2v2 or free for all.
Menu – two screens, filling the whole screen in white (no map moving behind it). The Lobby has the maps at the top as picture tiles, three across, plus a ? Random tile (selected by default every time the game opens) that rolls a surprise map at the start of every match (rematches too, and never the same map twice in a row). Below them are mode (Duels or Rumble), players (1v1, 2v2, Free for all and its size) and bot difficulty. On the right is your character: a large portrait with their name and ability, and below it compact tiles with each character's picture and their name underneath. Your level sits along the top. Two icons in the top-right corner open small panels: Play a friend (host, room code, join) and Options (Sound and Music). The Loadout button takes you to the Loadout screen: your primary and secondary weapons first, then your lethal, with Start at the bottom and a ‹ Lobby button to go back. Rumble is fists only, so its Lobby button is Start. Coming back from a match always lands on the Lobby. Parkour is switched off for now.
Duels – pick 1v1, 2v2 (you and a bot teammate against two bots; teammates spawn side by side, and the two teams start somewhere neither can see the other, so a round never opens with both teams staring at each other in the open (your teammate stands to your left with a gap between you, facing the same way, so you can see each other), can't hurt each other, and once you're out you spectate your teammate) or Free for all (you against three bots, everyone for themselves). 1v1 and 2v2 are first to five rounds; Free for all is a deathmatch with no rounds: everyone respawns 3 seconds after going out, at the spawn point furthest from the others, and the first to 10 kills wins (10-minute limit, most kills wins if time runs out). Every map has a shop at each end. Maps: Street Life, Railed and Beach Please. On Street Life (Maple Street) every house can be entered; most have two floors (each staircase ends on a landing with a wide, open side onto the floor, so you step straight off at the top), balconies, lofts with rooftop terraces, and big upstairs windows you can walk out of. Ledges and air-con units under the side windows let you climb onto the roofs, and every pitched roof can be walked on. The two big end houses also have a hop-up (a bin and two crates) against one side that takes you up onto the window ledge and in through an upstairs window. Rooms are tall (about 4 m downstairs, 3.6 m upstairs and in the lofts), so the houses don't feel cramped. The street sits on a square plot with six houses: the four big ones have yellow, green, red and blue roofs so you can call out positions, and the two flat-roofed ones have white and light grey roof decks. There's a shop at each end of the road, and the road has a white dashed centre line. Rockets, grenades and fireballs blow up the cars: they go up in a fireball and are left as burnt-out, smoking wrecks you can still hide behind. Nothing that gets blown up or broken comes back until the next round. The flat roofs have wooden fence panels and crates to fight behind: bullets go through them and they break apart. Inside the houses the wooden floors, stairs and the wooden partition wall can be shot through but the concrete outer walls can't, and short wooden furniture gets chipped down by gunfire but still works as cover. Each big house has its own character: the yellow one is Maple Motors, a garage with a car on the bay floor with its bonnet up, tyre stacks, oil drums, a workbench and tools; the red one is a clinic with a reception desk, waiting chairs, a ward with beds, drips and a heart monitor, an ambulance at the kerb and a helipad on the loft terrace; the green one is a family home with a chimney (smoke curls out of it), a fire in the hearth, a kitchen, dining table, sofa and rug; and the blue one is Maple Mart, a corner shop with shelves of groceries, a till, drinks fridges, trolleys out front and a stockroom of boxes. Small loose things (cans, bottles, cones, chairs, drips, lamps, mugs, the till...) get knocked over by bullets, blasts and people walking into them, and stay down until the next round. Every solid piece of furniture takes damage: beds, counters, shelves and fridges get chipped down, tyre stacks, drums and boxes blow apart, and enough bullets will set a car off. The two flat-roofed houses can be brought down: the first rocket, grenade or fireball that hits one blows the roof wall off and leaves it cracked, leaning and smoking; a second one makes it slowly sink and fold into a pile of big blocks you can climb over. Everything is rebuilt at the start of the next round. Parked cars (with spinning hubcaps that blur at speed and kick up a little dust) pull out now and then and drive along the street at their own speed (they stop for players and walls), birds fly over, clouds drift, trees sway and butterflies flutter round the front gardens. Railed is a freight yard with two live lines through the middle: a freight train comes out of the tunnel at one end every half a minute or so on each line (in opposite directions), sounds a deep horn and runs the length of the yard, so the middle keeps closing and opening. You can ride on top of the wagons (or inside a hopper or on a flatcar), and anyone standing in front of a train is flung clear and badly hurt. The live rails glow red from a few seconds before a train arrives until it has gone, and stepping on a glowing rail gives you a small shock. Signals turn red while a train is in the section and the level crossing lights flash and the barriers drop as one approaches. Around the tracks: a loading dock and a brick goods shed with wide stairs up to a mezzanine and on up through an open roof hatch, an engine shed with a parked locomotive and wide outside stairs up to the roof, a signal box with a lever frame upstairs, a gantry crane straddling all four tracks (two wide, straight flights of stairs with one landing up to a 16 m walkway), a wooden water tower (11 m deck, a ladder up the side; a blast bursts the tank and a second brings the whole tower down), a footbridge over the line (drop onto passing trains) (all of Railed's stairs are open underneath, so you can walk under them wherever there's headroom), parked wagons on the sidings (walk into the open box wagon, climb onto the tank and flatcar), container stacks two containers wide with steel steps up them, and a scatter of single containers spread out across the open ground behind the footbridge (one you can walk straight through) for close-quarters fights, leaving the foot of the footbridge stairs clear. A yellow site cabin cracks under one blast and collapses into rubble under a second, red fuel drums explode when shot (and set each other off), crates break, pallets, sleepers and cable reels get chipped by bullets and blown apart by blasts (wooden furniture on every map too), and cones and buckets get knocked over. Beach Please (Wreck Cove) is a sunny cove closed in by cliffs and headlands. The middle of the beach is wide open sand with clusters of cover spread out: driftwood logs to crouch behind, upturned boats, rock pairs to hide behind and a striped cabana you can climb onto. Three tall pavilions (6 m) have a ladder up to a lookout platform with a striped roof and corner walls for cover (wide gaps on every side, so you can drop off anywhere or climb back down the ladder); a blast takes the roof and walls off and a second brings the whole thing down. On any ladder, climbers turn to face the rungs, put their gun away (no shooting or aiming while climbing) and climb hand over hand, arms reaching and feet stepping in time with how fast they're going up or down. Bots climb ladders too, up and down. The steps up to the cliff lookout are painted in bright colours, and a breakable wooden fence along the lookout's front edge gives cover up there. Nearly everything on the beach can be destroyed: crates, barrels, logs, boats, umbrellas, deck chairs, coolers, the ice-cream cart, the volleyball net, the surf rack, kayaks, windbreaks, the picnic table and the sandcastle break apart, and the cabana, the Tiki Bar, the lifeguard tower and each beach hut take a first blast (roof off) and collapse on the second. Everything comes back at the start of the next round. Around it: a thatched Tiki Bar (crates up onto the roof), a lifeguard tower, a row of beach huts, a rock lookout up the cliff, a volleyball court, dunes, rocks, umbrellas and a bonfire. A wide jetty runs out to a moored fishing boat (wide, with a gate from the jetty, a swim platform across the stern, a roomy wheelhouse with a wide doorway and crates up onto its roof), a big trawler is moored out in the bay (19 m by 14 m: ladders up from the water at the stern and both sides, a ladder up the back of the roomy wheelhouse to an armoured flying bridge with shooting slots, and a ladder up the mast to a crow's nest), and there's a swim raft, a swan pedalo and inflatable dinghies bobbing in the shallows that you can jump onto. Six big beach balls roll about the sand when you run into them, kick or shoot them. The sea is the star: a swell rolls in every few seconds, rises over the shallows and breaks into a white curl and a foaming bore with spray, then rushes up the sand as a thin sheet edged with bubbly foam and slides back leaving lace and dark wet sand. Foam swirls in the shallows, sunlight ripples over the sand under the water, and the surface glitters in the sun (phones get a lighter version). You can wade out to the buoy line, a little slower: every step splashes, landing in the water makes a bigger splash, and bullets, thrown items and explosions all splash where they hit the water. Sailing boats, a yacht, a speedboat and a cargo ship pass offshore, gulls circle and crabs scuttle along the waterline. Each round you and the bot start at spawn points far apart and out of each other's sight (unless the map has no such pair): out in the street, up on roofs and upper floors, or inside houses. The bot climbs stairs and roofs too.
Bot play styles – every round each bot secretly picks one of ten styles (and weapons to match), so you have to work out what you're up against:
All styles push when you're low, play safer when hurt, and chase the clock late in a round when behind on health. Sniper, Turtle, Kiter and Camper aren't used in Rumble.
Rumble – Duels with no guns (also 1v1, 2v2 or free for all): fists only (18 per punch), on the small Backyard map or The House. Punch someone while you're falling for 20 damage: you both get knocked back and they're stunned for a second. Abilities, walls, pick-ups, slams and finishing moves all still work.
The menu is a full-screen, three-step setup: 1) mode and map, 2) character (with a profile preview; Blaze is selected by default) and consumable, 3) primary and secondary weapons (with previews and stats). Start turns green once everything is picked.
The menu opens with everything pre-picked so you can hit Start straight away: the top map, Blaze (top left of the character grid), HDR, MP5 and Grenade. The menu appears straight away: the character, weapon, lethal and map pictures are drawn a few at a time and fill in over the first moments of your first visit, then they're saved in the browser so later visits show them instantly (they're redrawn automatically whenever the game is updated).
Shop – every map has an open SHOP kiosk on the clearest ground near the middle, reachable from all sides; the edges of its roof glow so you can spot it, and nothing round it gets in your way (just one slim post in the middle). Walk up to it and a quick menu pops up: press a number (or tap) to take one item – Health (+50 HP), Armour (blocks the next 50 damage), or Grenades (3 more; if your consumable is the grenade they simply add to your G count, otherwise they're thrown with T). Stamina (refills twice as fast; you keep it for as long as your side keeps winning rounds) is on sale in every mode. In Rumble the rest is Health, Armour or Speed (+25% for 30 s). After a pick the shop restocks for you in 30 seconds. The fight doesn't pause while you're there. Unused shop items carry into the next round only if you (or your team) won the round; lose or draw and they're gone. Bots shop too, but rarely: their first chance comes 40–70 seconds in, then every 60–100 seconds, and only half the time, when you're not close and in view. They buy health when hurt, then armour, grenades, speed or stamina, and they throw the grenades they buy.
Characters (15), each a sculpted 3D model: Blaze (a fire brawler; fireballs), Gorillaz (a cyber gorilla mech; 130 HP, leaps and smashes the ground for up to 48 damage and knockback, breaking nearby walls), Jet (an astronaut ace with a jetpack; when Rocket boost is ready, jump (or E) lights the jetpack and you rise faster and higher the longer you hold it: a tap is a small hop, a full hold (1.6 s of thrust) lifts you about 21 m, enough for the tallest roofs; letting go cuts the thrust; 15 s cooldown. The back of his helmet is filled in so you don't see inside it from above), Blink (a street magician with a wand; teleport dash), Pyro (a mech pilot in a yellow exo-frame; 150 HP and a shield), Starscreen (a hooded horned spectre; invisibility), Ice Maiden (a cryo-armoured valkyrie; frost nova that slows anyone within 9 m), Murda Medic (a field medic; heals 48 HP), Xero (a living plant warden; blocks 30% and reflects 60% of the damage taken), Angel (white wings and a dark halo; Wing leap launches her up and forward and she glides down slowly), Crusty (a clown; 110 HP, Honk blasts foes within 7 m for 20 damage, knocks them back and stuns them briefly), Wednesday (a goth runner; fastest runner, 90 HP, sprint burst), Anti Hero (a masked caped hero; grapples to wherever you aim) Thor (a horned Viking with a hammer; 36-damage lightning bolt) and Isaac (the classic blocky look: brown knit jumper and jeans; Quick reload instantly refills both guns), each with an ability on E. Angel's wings are only visual: everyone has the same hit boxes. When Angel wins a match she floats in shafts of white light instead of sitting on a throne.
Stamina and regen – there's no sprinting: everyone walks 25% faster than the original walk speed instead (bots too). Walking drains stamina slowly and aiming down sights faster; stand still and it starts refilling after half a second, full again in about 3 seconds (twice as fast with the shop's Stamina). At 0 you move 25% slower until it's back to a quarter. Getting shot drains stamina too, more for harder hits (an HDR body shot takes most of it, an SMG bullet a sliver). A double jump costs 15 stamina and works whenever you have that much. Health regenerates once you've gone 5 seconds without being hit: 6 HP a second up to half health, then 3 HP a second; bots regenerate too.
HUD – bottom left is a vitals panel with health (green), armour (blue) and stamina (purple) bars in that order, and above it a compact items row: an icon, its key and how many you have (ability, consumable, walls, plus shop grenades and speed boots when you have them); on phones this row is hidden because the buttons show the same counts. Top left is a small leaderboard of everyone in the match with kills, assists (damaged someone a teammate or rival then eliminated within 15 s) and deaths; anyone out for the current round is greyed. Top right is a minimap that turns with you and shows the map layout, the shop (gold square) and teammates (blue). Enemies never show unless they fire: each shot leaves a tiny red dot where they were, fading over a couple of seconds. Whenever anyone is eliminated a small red X marks the spot for 3 seconds. While you're out, the vitals and weapon panels switch to the player you're watching (name, kills/assists/deaths, live health, armour, stamina, gun and ammo); in deathmatch you watch whoever got you until you respawn. Being stunned puts a black-and-yellow zigzag round the edge of the screen, being frozen by Frost a blue-and-white one, and taking a grenade or rocket blast a black-and-red one (no text).
Volume – Sound and Music sliders are in the Options panel (the gear icon, top right of the front menu); they're the same settings as the ones on the pause menu. Both follow a curve, so the low end is very quiet (20% on the slider is about 2% volume).
Pause menu – Resume, Controls (every key, grouped), HUD layout and Home, plus settings: Graphics (Auto, Low, Med, High), Frame rate (30, 60, Max), Auto weapon switch (swap to your other gun when the one in hand runs dry; off by default), touch controls on/off, and on phones Aim assist (Off, On, Strong), Aim when firing (holding Fire also aims down sights) and Gyro aim. Sliders: camera sensitivity (up to 6×), Aim sensitivity (other guns) (0.1–1), Sniper scope sensitivity (0.1–2, HDR and Kar98), sound and music, plus Battery saver (30 fps and Low graphics in one tap) and Show FPS (a small frame-rate readout). HUD layout switches each panel on or off; Move & resize is where everything is placed and sized: drag any panel or control, tap it to make it bigger or smaller (60–160%) and more or less see-through (Opacity 10–100%, kill feed starts at 65%), and on phones an All buttons size; the edit bar can be minimised to a strip at the top. Your layout is remembered (phones keep their own layout, separate from desktop) and Reset layout puts it back. Slow motion only kicks in for moments you're part of (your own down, kill or finishing move), never for other players' finishers. XP is only shown on the menu and the end-of-match screen.
Replays and Home – clips are recorded from exactly what you see, scope included, at up to 1280×720 and 30 fps (cropped to 16:9, compressed in the background). Lower graphics settings record smaller, slower clips (Medium: 640 wide at 20 fps, 480 at 12 fps on phones; Low: no replays). Only the 4 best of the match are kept: the winning shot first, then finishing moves, headshots and quick double kills. Each clip keeps the moment that decided the fight: the shot that downed someone (from about 3 seconds before it to 1 second after) joined to the last 4.5 seconds before they're finally out (the finish or finishing move) and a moment after, so a long finisher or a downed opponent can't push the actual shot out of the clip. Watching a replay pauses the game; Save video downloads it as a video file. Home is a small house icon locked in the top-left corner the whole time you are out of the main menu (in matches, on round and match results and on the pause menu). On phones it's hidden during play so it can't be tapped by accident, and shows at round and match end; Home is also on the pause menu.
Damage – every weapon and ability hits 20% harder than it used to (Blaze's fireball 54, Thor's bolt 36, Gorillaz's smash up to 48, Ice Maiden nova 12; Murda Medic heals 48 and Xero reflects 60%), so fights end a little quicker. On top of that, every primary and secondary gun (not fists, the sword, abilities or lethals) does 25% more damage per hit, rounded to whole numbers; the loadout cards show the new figures.
Reviving – stand over a downed teammate and they glow green and revive twice as fast (2 seconds instead of 4).
End of match – "You caught the W!" or "Took the L this time :(" in big letters, the score and four stats: Kills, Damage, Accuracy, Headshots. Rematch and View Clips (every replay from the match), centred on their own row. If you pick nothing within 10 seconds (a small "Home in Ns" countdown shows on the right) it takes you back to the home screen; clicking anywhere on the bar stops the countdown. Home is the permanent house icon.
Lethals (what used to be called consumables; press G): Grenade, Stim, Stun Grenade and HeartBeat (formerly Sense Pack), plus:
Menu descriptions are short: Grenade "BOOM!", Stim "45% Speed 6s", Stun "Stunned 3s", HeartBeat "Locate 6s", Flash "Blinded 3s", Mine "Proximity", Cluster "Multi BOOM!!!", Gold Armour "Armour + Rebuilds".
Deaths and celebrations – an ordinary kill drops the body flat on the ground with a few small red blocks round it (no explosion, no slow motion); only finishing moves blow people apart. Downing someone no longer slows the game either. If you finish a downed enemy while every one of their teammates is also down, the whole team is out. Winning a round gets a quick fist pump, a high five between teammates or a little jig. Winning the match cuts away from the map to a black throne room: the winners sit down on gold-and-red-velvet thrones under warm spotlights, and each one's kills and damage for the match fade in on the throne back above their head, two blonde ring girls (black one-pieces, red belts, red lips, sparkly silver heels) walk in carrying jewelled crowns and place them on their heads (the crown sits on the top of the head or hair, flames and spikes poke through it), then the camera cuts to a close-up of each winner turning to the lens with a raised eyebrow and a smirk, before going back to the wide shot, which stays behind the results screen. No coloured lights or rings. Space or Enter skips it. Before any celebration or finishing move starts, anyone standing close to a wall, car, prop or other solid object first steps out into clear space (finishers slide both players into open room in under half a second), so nobody clips into or through anything. Round and match results sit in a slim bar across the top so the celebration stays in view. The kill feed sits under the score at 65% opacity.
Explosive drums – every Duels map (and any new one) gets a few small clusters of red fuel drums (one to three drums each, spread well apart), tucked beside walls, crates and cars on open ground, clear of spawns, shops, ladders, stairs, water and the train lines. Shoot one and it blows (and sets off its neighbours). They sit in the same spots each time you play a map.
Bots get everywhere you can on foot – bots climb ladders, jump and double-jump up onto crates, containers, ledges and roofs (onto a canopy roof like the shop they jump straight up beside the edge and step on once clear), and squeeze through tight gaps beside railings. A jump a bot keeps missing gets dropped from its routes for the rest of the match. Rooftop spawns are only placed where bots can climb to. The only spots they can't reach are ones you need Jet's rocket boost for (cliff-top rocks, the pavilion and signal-box roofs, the crane cab top, the platform shelter roofs).
Bots under fire – when a bot gets shot it picks a reaction instead of always walling up: dodging side to side with hops, ducking into cover, backing off, relocating round your side, walling up (less often) or just fighting on. Rushers and breachers mostly fight on.
Armour plates – a few glowing blue armour plates sit on the hardest places to get to on each map (high roofs on Maple Street, the upstairs of The House, the shed roof in the Backyard). Plates always sit in different areas of the map from each other. Grab one for +50 armour (up to 100); it comes back 60 seconds later somewhere else (away from where it was and from the other plates), and every round start shuffles them to fresh hard-to-reach spots. A plate on a building that gets brought down moves elsewhere after the same 60 seconds. Armour doesn't carry over: everyone starts each round with none.
Cover – bullets go through wood (fences, sheds, furniture, wooden floors and crates; each layer takes off 30% of the damage, up to three layers) but not through concrete, brick, walls, cars or built walls. Bodies can't pass through solid structures: throws and slams stop at walls, a Home run finisher stops at the first wall it hits, and anyone pushed into a wall is moved back out.
At 0 HP you go down instead of dying, with 30 downed health that takes full damage, so a few shots finish you: you crawl slowly, and if nobody finishes you, you revive automatically after 4 seconds with whatever downed health you have left, and regen waits 5 seconds before it starts. Downed players can't punch (bots included). While down, clicking fire tags the enemy you're aiming at so they're outlined in red for 3 seconds. In 2v2, if you're down and your teammate is eliminated, you're out too. The opponent can walk up and press F for a finishing move picked at random each time from every finishing move in the game, never the same one twice in a row, so you don't know which one you'll get. If the finisher fires or gets shot mid-move the finisher is cancelled and the victim stays down. Every elimination plays the winner's kill effect: each character has two kill effects of their own. XP: +10 per round won, +5 per round lost, 100 XP per level. Built walls sink away after 6 seconds, break apart brick by brick, and gunfire knocks them down twice as fast as before.
The hip-fire crosshair is white and turns red when an enemy is under it, in clear view and within the weapon's range. Aiming down sights with any non-sniper gun switches to first person with see-through ring sights (bigger rings on ARs and LMGs, small on SMGs and pistols, huge on the rocket launcher); bigger guns take longer to raise (0.12s Dual Pistols up to 0.42s Rocket Launcher) and only reach full accuracy once the sights are up. SMGs and pistols hit hardest up close but fall off fast; ARs hit harder per shot but fire slower. The HDR and Kar98 aim through a scope (the HDR's view is a little tighter) and fire on release: hold fire to scope in, let go to shoot (if you let go before the bolt has cycled it fires the moment it's ready); a small red ✕ under the crosshair (or right-click on desktop) cancels without firing, each with a red centre dot and a thin outline in the gun's colour. The shop's Scope adds a see-through red-dot ring sight to the AKM, M4, LMG, MP5 and Uzi. Weapons: pick one primary – HDR sniper (long range, a headshot downs in one, 2 body shots), Kar98 (short-range sniper), AKM, M4 (gold; harder hits, slower fire) or LMG – and one secondary – MP5, Uzi (heavier, steadier SMG), Rocket Launcher (slow-firing splash), Ninja Stars or Sword.
Lethals (press G; for grenades, hold G to see a clean dotted throw arc that stops at the first thing it would hit, with a circle there (the grenade itself still bounces and rolls as before), release to throw toward your crosshair; aiming with Ninja Stars shows their flight path too): Grenade (2 per round, 60 splash damage; thrown a long way, it explodes on anyone it hits, otherwise 2 seconds after it first lands, in a fireball with smoke and a scorch mark), Stim (+45% speed for 6s, 20s cooldown), Stun Grenade (2 per round; anyone caught in it moves at 25% speed for 3 seconds, 1.5 if you catch yourself, but can still shoot) or HeartBeat (see the enemy through walls for 6s, 25s cooldown). The bot gets a random one and uses it too. You also get four buildable walls per round. Magazines are small; reloads are quick, an empty gun in your hands starts reloading by itself after a short beat (even if you switched weapons mid-reload), and R reloads early.
Controls: WASD move · Space jump (press again in mid-air to double jump; it costs 15 stamina) · mouse aim (click to lock) · left click fire (snipers: hold to scope, release to fire) · right click aim down sights / scope · C crouch (toggle; moving forward stands you up) / pick up a downed opponent · E ability · G consumable · T shop grenades (when your consumable isn't the grenade) · F finish · R reload · 1/2 or wheel switch · Q build wall · P or Esc pause (controls and sensitivity sliders are on the pause menu). Touch controls switch on automatically on phones and tablets and can be toggled on the pause menu (see Phones below).
Play a friend (online) – on the front menu, open the Play a friend icon (top right); Host game gives you a 4-letter room code; your friend opens the game, types the code and presses Join. The friend's character and guns are whatever they pick on their menu; the host chooses the mode and map and presses Start, and the friend takes the place of the first enemy bot (in 1v1 you fight each other; in 2v2 and Free for all the other slots stay bots). The host's game runs the match; the friend's movement and shots show instantly on their screen and the host decides the hits. If the friend leaves or drops out, a bot takes over their fighter and they can rejoin with the same code. Connections go device to device (WebRTC via the free PeerJS matchmaking server); a few strict mobile or work networks may block the direct link.
Phones – landscape only (a "Turn your phone sideways" screen shows in portrait and pauses the match). Move stick on the left, drag anywhere to look (fast swipes turn further), and a thumb-reach arc of buttons round Fire: Aim, Jump, Crouch, Reload, Swap, Ability, Wall and Item, with Finish and Nade appearing only when you can use them; counts and cooldowns show on the buttons. Add the game to your home screen for full screen (Android also goes full screen and locks to landscape when a game starts; iPhone shows a one-time Add to Home Screen tip). Sounds, icons and three.js are cached for quick loading. Phones start on Medium graphics with a 60 fps cap; menus, pause and results screens drop to 20 fps to keep the phone cool. Small props aren't drawn far away on Medium and Low, and characters are built from about half as many pieces as before. Auto starts recent high-end phone GPUs on High, and after it has had to drop a level it tries one level higher again next time. Switching away from the app pauses the match. On phone menus the Start button floats in the corner.
Parkour – 12 obstacle courses with double jump, swings and moving platforms (switched off in the menu for now; the code is still there).
Static scenery is merged into a handful of meshes at load (instead of ~1,000 separate boxes, each with its own outline), which keeps the frame rate up on Maple Street.
Under the hood the match runs on a fixed 60-ticks-a-second clock on every device, player input reaches the game as one command per tick, shot spread uses a per-match seed, and the match state can be saved as a small snapshot: groundwork for online multiplayer.
It's a single static index.html (three.js and fonts load from CDNs), served by GitHub Pages. To play locally, open index.html in a browser.
sfx/).music/), via Pixabay under the Pixabay Content Licence: