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로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Snake FOK Edition uses classic Snake as its starting point, but it is as much a love letter to retro arcade gaming as it is a Snake clone. Power pellets, bonus multiplier chains, border barricades that crumble on impact, extra lives hidden across levels -- it all adds up to something that feels like flipping through an arcade cabinet catalogue from the 1980s.README 전문 보기 ↗Snake FOK Edition uses classic Snake as its starting point, but it is as much a love letter to retro arcade gaming as it is a Snake clone. Power pellets, bonus multiplier chains, border barricades that crumble on impact, extra lives hidden across levels -- it all adds up to something that feels like flipping through an arcade cabinet catalogue from the 1980s.
Play online: https://poeggi.github.io/FOK-snake/
| Item | Description | |
|---|---|---|
| Gem | The main collectible. 10 per level. Grab in the fewest steps for a x2 score bonus. | |
| Lucky Gem | Rare gold gem. Worth 10x or 20x the normal score bonus. | |
| Epic Gem | Extremely rare rainbow gem. Worth 80x or 160x the normal score bonus. | |
| Gouranga Bonus | Seven orange gems appear in a line -- horizontal, vertical, or diagonal. Each eaten gem pays an escalating x2, x4, x6 ... score multiplier; sweep all seven in one near-continuous run (a couple of stray steps are allowed) to land the full GOURANGA bonus. Hare Krishna. | |
| Power Pellet | A Pac-Man nod, from level 2 onward: a two-tone capsule that turns your head into a chomping Pac-Man while it lasts. For 6 seconds all barricades turn fragile AND flee across the board like frightened ghosts -- crash through everything. They blink as the effect fades and freeze wherever they are when it ends. | |
| Time Crystal | Rare icy pickup from level 6 onward (chance rises with the level). Collect it to slow the whole board to level-3 speed for 30 seconds; a field-wide shimmer marks the warp and blinks as it runs out. | |
| 1UP Heart | Extra life. Appears once during levels 4-6 and occasionally on respawn in later levels. Blinks before disappearing. Can push you above the starting three lives. | |
| Barricade | Solid orange brick. Colliding costs a life. Grows in number each level. | |
| Fragile Barricade | Crumbling border block. The snake can smash straight through it for a score reward and a debris effect. Activated by the Power Pellet. |
| Input | Action |
|---|---|
| Arrow keys | Move snake / navigate menus |
| Arrow key (hold) | Boost, in the direction you are already going |
| W A S D | Player 2 in a local duel -- steer, and hold to boost |
| Space | Pause / unpause |
| Escape | Quit to menu (in-game) |
| Enter / OK | Select / confirm |
| Backspace | Delete (name entry) |
| M | Mute / unmute (music and SFX) |
Boost doubles your speed while you hold the direction you are already travelling in. It engages only after a short aligned hold, so the tap that turns you is never read as a boost, and turning drops it again. Settings -> TURBO BOOST switches it off entirely.
Mobile: X-shaped d-pad + OK/pause/ESC side buttons. Hold a d-pad direction to boost. Swipe the canvas to steer, swipe on the way you are already going to boost, and swipe back against it to brake (end the boost). Tap the canvas during name entry to open the keyboard.
| Easy | Normal | Hard | |
|---|---|---|---|
| Speed | Slow | Standard | Fast |
| Barricades | Few | Standard | Many |
| Growth per gem | +1 | +2 | +2 |
| Snake length at level start | Resets | Resets | Carries over from previous level |
| Lucky / Epic gem odds | Standard | Standard | Doubled |
| Achievements | Basic only | Full | Full + Iron Snake |
Easy awards only: first gem, level 1, level 5, and FOKoin milestones. Completing all 10 levels requires Normal or higher.
Hard carries your snake's full length into each new level, so the board fills up over time just like the original Nokia Snake.
Online features speak to FOK-server (https://fok-server.poggensee.it, repo
poeggi/FOK-server); the client-facing contract is that repo's docs/API.md --
matchmaking, signaling, PTS time sync, latency reporting and global scores.
This client is built against API 5. A server on a newer major closes the
online half until the game updates. Single-player is unaffected either way.
The engine runs on a deterministic fixed-timestep 60 Hz tick clock, which is
what makes prediction netcode and replay-validated scores possible.
(docs/multiplayer-server-prompt.md is the historical design brief.)
In repo Settings -> Pages -> Source: Deploy from branch -> main -> / (root)
sw.js (service-worker cache version + asset list) is auto-managed by a
pre-commit hook. Enable it once after cloning:
git config core.hooksPath .githooks
The hook derives MAJOR.MINOR from the latest git tag and bumps the PATCH on every commit. The asset list carries each file's blob id, so an installed client downloads only the files a version changed and copies the rest from its previous cache. Do not edit the version/CACHE/ASSETS lines in sw.js by hand.
A client runs from its cached bundle and never waits for the network. The service worker update check (a 4 KB file) finds a new version, the new bundle is fetched whole before it goes live, and the game reloads once on the splash.
Tests are plain Node, no dependencies. bash test/checks.sh runs the fast tier
(the pre-commit hook runs the same), bash test/checks.sh --full adds the duel
sweeps CI runs. See test/README.md for the on-demand modes.
Snake - FOK Edition is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE for the full text.
Copyright (C) 2026 Kai Poggensee
The game is delivered to your browser, so AGPL section 13 applies: anyone who runs a modified version and lets others play it must offer those players the source of that version.
The bundled font is not covered by the AGPL. Press Start 2P is Copyright 2012 The Press Start 2P Project Authors, licensed under the SIL Open Font License 1.1 -- see fonts/OFL.txt.
#friend=<8 hex> (add me), #tourney=<code> (join that lobby) and
#event=<code> (join that event). An event code is 11 characters either way and
the dot tells the two apart: a live pass is <eid>.<pass>, and a printed key has
no dot because it names its own event. Eleven is the whole budget -- every QR an
event shows has to be readable by the game's own scanner, which is a fixed QR
version 3 holding 53 bytes, and 42 of those are the URL itself