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,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A weapon-ball battle simulator for the web. Pick a weapon or special ball for each side, drop them into the arena and watch them bounce, parry and scale up until one is left standing.
This is plain HTML5 canvas and JavaScript with no build step and no runtime dependencies. It is integrated with the CrazyGames HTML5 SDK v3.
The game also runs without the SDK (opened from disk, other hosts, ad blockers). Every SDK call is guarded.檢視完整 README ↗A weapon-ball battle simulator for the web. Pick a weapon or special ball for each side, drop them into the arena and watch them bounce, parry and scale up until one is left standing.
This is plain HTML5 canvas and JavaScript with no build step and no runtime dependencies. It is integrated with the CrazyGames HTML5 SDK v3.
npx http-server -p 8080 -c-1 . # then open http://localhost:8080
The game also runs without the SDK (opened from disk, other hosts, ad blockers). Every SDK call is guarded.
| Weapons (62) | Sword, Dagger, Spear, Axe, Unarmed, Bow, Shuriken, Katana, Hammer, Torch, Scythe, Poison Flask, Wrench, Boomerang, Shield, Grimoire, Cannon, Lance, Dummy, … plus (js/data4.js) Yo-Yo, Drill, Harpoon, Kusarigama, Tuning Fork, Plasma Blade, Laser Pointer, Chakram, Scissors, Pillow, Baseball Bat, Storm Hammer |
| Specials (37) | Fibonacci, Speedy, Grower, Spiky, Gravitron, Splodey, Orbital, Duplicator, Vampire, … plus (js/data4.js) Magma, Meteor, Chrono, Balloon, Disco, Prism, Golem, Clover, King, Zombie, Hypno, Comet. Paid balls get signature flair in js/flair.js (Phoenix rebirth, Rage, Vampire wings, rarity sparkles). 100 balls in total. |
| Iridescent (1) | Kami (神): 25,000 coins. Locked at 1 HP; Divine Grace dodges every attack while charged (4 charges, refills over time). Three divine arts on cooldowns with anime cut-ins (Seraph Beam, Golden Gates, Heaven's Arsenal) and its own finisher cutscene. Logic and art live in js/kami.js. |
| Modes | 1v1, 2v2, 3v3, Free For All |
| PvP matchmaking (CrazyGames) | Live, one tap (your last squad is reused). Before every round both players aim their ball (6s slingshot drag or WASD/arrows, random if idle, js/shoot.js); aims are swapped over the link so both screens run the same fight. Pairing: the public PeerJS server pairs two online players through 10 shared quick-match slots (same approach as Nexo TD), then they swap squads/ratings and the host picks maps + seed; both screens play the identical seeded 3-round series. js/match.js, lib/peerjs.min.js (MIT). |
| PvP (CrazyGames) | Async 3-ball series via invite links. Each side picks 3 different balls in order; the receiver picks blind, then lineups are revealed; all 3 rounds play (1v1, 2v2, 3v3 by slot) and most wins takes it. Seeded fights replay identically on both screens; a result link sends the outcome (and a replay) back to the challenger. Elo rating with ranks. |
| Maps | Classic, Large, Bouncy (gravity), Pillars, Saws, Shrinking, Hot Potato, Meteors |
| Per ball | Health, size, and overrides for damage, spin and speed |
| Settings | Sound, dark mode, hit freeze, parry freeze, damage numbers, impact frames, finisher (incl. Kami's), ability text, overtime bonus, reverse Team Two spin, vibration |
Every weapon scales on hit (for example, Sword gains +1 damage, Dagger spins faster, Bow adds an arrow). Weapons that touch parry, which flips both spin directions. After 40s, overtime raises all damage, so every battle ends. Wins earn coins, which unlock Rare, Epic and Legendary items. Opponent slots can use any item, so players can see locked items in action.
| Requirement | Where |
|---|---|
SDK.init() before anything else; loadingStart / loadingStop around boot | js/main.js boot() |
gameplayStart when a battle starts or resumes; gameplayStop on pause, tab hidden, results, menus, ads | js/main.js |
| Midgame ad only at a natural break (Continue / Rematch after results), at most once every 3 min | js/sdk.js maybeMidgame() |
| Rewarded ads: "Double coins" on results, "Try once" for locked items | js/ui.js |
Audio muted and game paused only once adStarted fires; restored on adFinished / adError | js/sdk.js, js/main.js |
settings.muteAudio respected and overrides the in-game volume (settings listener) | js/main.js applyAudio() |
Progress saved through SDK.data (falls back to localStorage) | js/save.js |
happytime() when a new item is unlocked | js/ui.js |
| Arrow keys and Space don't scroll the host page; no right-click menu; no external links; no app download prompts | js/main.js |
Check it with the mock-SDK test suite (19 checks):
npx http-server -p 8080 . &
node tools/sdktest.mjs
bash tools/build.sh # -> dist/ball-battles.zip (~56 KB, 13 files, index.html at root)
Upload dist/ball-battles.zip as an HTML5 game. It meets the ≤ 20 MB initial download needed for the mobile homepage, and the file count is far under 1500.
marketing/, not committed)The covers and preview videos are generated locally into marketing/ and are git-ignored; upload them to CrazyGames directly.
| File | Spec |
|---|---|
cover-landscape-1920x1080.png | 16:9 cover |
cover-portrait-800x1200.png | 2:3 cover |
cover-square-800x800.png | 1:1 cover |
preview-landscape-1920x1080.mp4 | 16:9 1080p, ~17s, H.264, no audio |
preview-portrait-1080x1620.mp4 | 2:3 1080p, ~17s, H.264, no audio |
The covers show only the game title: no borders, logos or store icons. Each video opens on its static cover, then crossfades into real gameplay at 1x speed. There is no "Play now" text, no cursor, no black bars and no sound.
Regenerate them with:
npx http-server -p 8080 . &
node tools/covers2.mjs # covers + video title frames (tools/art3.html)
node tools/trailer2.mjs # trailers from real 1x gameplay with captions (needs an Anton TTF: FONT=path)
node tools/seeds.js # finds seeds whose battles end with a K.O. inside a clip
Title: Ball Vs Ball
Description: Pick a weapon, drop two balls into the arena and watch them fight! Every weapon gets stronger with each hit. Swords hit harder, daggers spin faster, bows fire more arrows. A ball whose hits follow the Fibonacci sequence can turn a fight around in one slam. Mix 100 weapons and special balls across 1v1, 2v2, 3v3 and Free For All on 8 maps with saws, meteors, gravity and a hot potato bomb. Earn coins and unlock legendary gear.
Controls: Mouse / touch for menus. Space or Enter starts a battle. P or Esc pauses.
Tags: Physics, Simulation, Ball, Weapon, Battle, Casual, 2 Player, Sandbox
Music: "Arcade Groove" (two tracks, music/), provided by the game owner. Fonts: Anton, Pixelify Sans and Lilita One, all SIL Open Font License (fonts/). All art and sound are generated in code.