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,即可驗證所有權並自行管理介紹。
一分鐘完成驗證A 3D game inspired by an old game mode called Murder in Garry's Mod. This is running on @modcommunity's gaming platform made with @godotengine!
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗This is a game to demonstrate the capabilities of the Dot collection built on-top of Godot 4 and TMC's gaming platform. In this 3D game everybody looks the same, and one or two of them are murderers. Everybody else is a bystander, and one or two bystanders also have a gun with a single shot. Nobody knows anybody's role but their own: find out who it is before they get to you.
This project and the assets under it are COMPLETELY OPEN SOURCE. You are free to use, modify, and distribute them under the terms of the MIT license. The only thing not open source is the back-end web infrastructure. So if you opt into using your own authentication backend instead of integrating with TMC, you will need to build and integrate your own back-end infrastructure.
This project, along with every asset it is built on, was built initially with Claude Code and will continue to be maintained and extended using it. This is because I (gamemann) cannot build the entire TMC platform alone (I wish I could lol).
Please treat this as partially tested. It has its own headless test suite and that suite passes, but very little of this has been in front of real players yet. Expect rough edges, and please report anything you run into.
I intend on reviewing code, testing, and editing documentation regularly. If you're interested in helping out, please let me know!
Each round starts with a short grace. Everybody is told their own role, and only their own, and scatters; no weapon can come out yet. Then the round has 3 minutes.
The bystanders win if every murderer is dead or the clock runs out with any of them alive. The murderers win if nobody else is left. At the end of the round everybody is told who the murderer was. Winning is worth 10 points to everyone on that side, a kill 5, shooting the murderer 15 and surviving 5. Kills, deaths, heroics, innocents shot, guns picked up and the rest go to your stats and the leaderboards on TMC.
The murderer is drawn at random, never the same person twice running when somebody else can be. Somebody who joins while a round is being played watches until the next one.
Three maps are this game's own: a small practice house built into the game, and two from murder-mystery-maps:
| Map | What it is |
|---|---|
| The practice house | A small house with a kitchen, a living room and a garden with toys |
| Blackwood Mansion | A dark two-storey house with a hall, a library, a cellar and grounds round it |
| Lonely Pines Motel | A roadside motel at dusk: rooms off an outside walkway, an office, a diner and a back lot |
Every Hide & Seek, Prop Hunt and Playground map is playable too: the game reads those games' map packs as they are, mounted under maps_extra/, and starts everybody at their spawn points.
| Key | Action |
|---|---|
| WASD / mouse | Move and look |
| Shift | Sprint |
| Ctrl | Crouch |
| Space | Jump |
| Mouse 1 | Stab (murderer, weapon drawn) or shoot (with the gun) |
| Q | Draw or put away the weapon (murderer) |
| E | Open or shut a door; kick, push or press the toy you are looking at |
| V | Talk (voice, heard by the people near you) |
| F5 | First or third person |
| Tab | Scoreboard (hold) |
| H | Help: the goal, the rules and every key as you have it bound |
| M | The map list (the server's owner changes the map; anybody else votes) |
| Esc | Menu: settings (every key above can be rebound), help, and leave |
You need Godot 4.7. The game is built from many Dot addons, each in its own repository; symlink each one listed in .gitignore into addons/, ../murder-mystery-maps/maps into maps/, and the other games' map packs into maps_extra/hide-n-seek, maps_extra/prop-hunt and maps_extra/playground. dot-bootstrap does not know this game yet.
game.sh does everything else:
| Command | What it does |
|---|---|
./game.sh | Play offline against bots |
./game.sh online | Start a local server and the browser client, and print the link to open |
./game.sh online down | Stop them |
./game.sh server | Start a local dedicated server only |
./game.sh test | Check every script and run every test suite (./game.sh test headless_net for one) |
./game.sh shot | Save a screenshot to screenshots/. tools/shot.sh lists the views |
./game.sh help | All of the options |
Settings are cvars. Set them in the server's config, on the command line, or live from the console. Most of them take effect from the next round.
mm_grace_seconds 10 // seconds at the start with roles told and no weapons
mm_round_seconds 180 // how long a round is played
mm_players_per_murderer 12 // one murderer for every this many players
mm_min_murderers 1 // never fewer
mm_max_murderers 2 // never more
mm_players_per_gunner 12 // one gun for every this many players
mm_min_gunners 1
mm_max_gunners 2
mm_murderer_weapon knife // knife, cleaver, axe, bat or sword
mm_melee_range 0 // metres a stab reaches (0 = the weapon's own)
mm_melee_cooldown 0 // seconds between stabs (0 = the weapon's own)
mm_melee_cone 40 // degrees either side of the aim a stab still lands
mm_draw_seconds 0.35 // seconds after drawing before a stab lands
mm_gun_cooldown 3 // seconds between shots
mm_gun_range 120 // metres a shot reaches
mm_drop_on_miss 1 // a miss drops the gun
mm_drop_on_innocent 1 // shooting a bystander drops the gun
mm_innocent_kills_shooter 0 // shooting a bystander kills the shooter too
mm_pickup_range 1.1 // metres from a gun on the floor that picks it up
mm_blood_seconds 60 // blood starts this long before the end (0 never)
mm_blood_stages 4 // in this many steps
mm_blood_per_kill 1 // and a step more for each kill
mm_murderer_speed 1.05 // the murderer's speed against everybody else's
mm_bot_chat 1 // bots say things
mm_doors 1 // 1 = E opens and shuts doors
mm_rounds_per_map 3 // rounds on a map before the next one
mm_spectate_camera 0 // deprecated, sets mp_forcecamera
mp_forcecamera 0 // who somebody who is out may watch: 0 anybody, 2 nobody (1, own side, is anybody here)
mp_freeroam 1 // 1 = whoever is out may fly a free camera (G)
mp_freeroam_speed 8 // metres a second; Sprint is faster, Walk slower
mm_autobhop 0 // 1 = hold jump to keep hopping
bot_quota 6 // players a round is kept at with bots; each person who joins replaces one
mm_vote_after 20 // seconds into a map's last round before the vote opens
--mm-map-ids=<ids> limits a server to some maps, and every setting in game/mm_config.gd can be given the same way (--mm-round-seconds=240, --mm-murderer-weapon=axe).
Console commands:
| Command | |
|---|---|
mm_status | The round, the map, and how many are alive |
mm_roles | Who is what this round (the server's own console only) |
mm_maps | The maps the server has, and any it refused (with the reason) |
mm_map <id> | Play this map next |
mm_reload | Read the map folder again, for the next map |
mm_say <text> | Say something to everybody, as the server |
mm_net | What the network code is doing |
Admin commands come from dot-moderation.
| Suite | What it covers |
|---|---|
headless_run | The game itself: the draw, the grace, the weapon, the gun and its drops, blood, winning, falls, joiners, doors, toys, bots, help and the map menu |
headless_maps | Our maps in full, and every Hide & Seek, Prop Hunt and Playground map for what playing it here needs |
headless_bots | Bots play whole rounds against each other; who kills, who shoots, who wins |
headless_net | A server and a client in one process: roles stay secret on the wire, a stab, a shot, a dropped gun, doors, toys |
dedicated | A real server: boots, loads the game, runs its commands, a round of bots, the map vote |
CLAUDE.md has the rules and docs/ the reasoning.
The furniture is Kenney's Furniture Kit (CC0); seventy-two of its models (plants, chairs, sofas, tables, bookcases, cartons, lamps, screens and more) are rebuilt for this game with their own palette and added parts by art-src/build_props.py, credited in assets/props/furniture/CREDITS.md. The trees, plants and rocks his Nature Kit (the two climbing trees are this game's own, made in that kit's style by tools/climb_trees.py, CC0 like it), the players are the family's people from Quaternius' Zombie Apocalypse Kit (CC0 1.0, credited in dot-player-char), chosen by the blocky kit's skins (kenney.nl, CC0). The Nature Kit's colours are toned down when the game loads them. The converted maps' floors, walls, ceilings and roofs are CC0 photographs from Poly Haven and ambientCG, resized to 512 px (diffuse and normal only), each credited with its URL and author in assets/polyhaven/License.txt; the hand-built maps' remaining floors, walls and roofs are Kenney's Prototype Textures under a pastel; glass, boards, lockers and lines are drawn in code, and Hollow Hill's flooded cellar is ambientCG's Foam003 (CC0 1.0) tinted blue-green. The converted maps' fog, sun, sky, snow and ambience come from each map's document (environment, weather, ambience, ambience_indoor); the sound is dot-audio's CC0 stock only. Each kit's licence is next to its files. Footsteps are Kenney's Impact Sounds and the ambience beds are generated by dot-audio, both CC0 and shipped in dot-audio (addons/dot_audio/stock/CREDITS.md). The toys are dot-props' (drawn in code; their sounds are Kenney's CC0 Impact, Interface, Foley and Digital Audio sounds plus a horn made for it, listed in addons/dot_props/toys/sounds/CREDITS.md), and the death sounds are dot-player-char's (Kenney, CC0).
MIT. See LICENSE. The Kenney art is CC0, which is public domain.