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
Reverse-engineered rebuild in Unity 6 of Incognito, a 2013 GameMaker point-and-click stealth prototype: a close, intimate camera, eyeball-tracking cursor, and a Shadowrun-flavored hacking console.
Translation pending
GamesC# · ShaderLabGitHub @mindatticOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A Unity 6 rebuild of Incognito, a 2013 GameMaker point-and-click stealth prototype: a Shadowrun-flavored cyberpunk street, a camera held deliberately close instead of a wide adventure- game establishing shot, and a mouse cursor that doubles as the player character's own tracking eyeball.
Every room and mechanic of the original is rebuilt: the title, Bleecher Street (street00), 2nd Avenue (street01) and the shop, with the original's art, sounds, music and fonts. There is no public build; build it from source with the Quick start below.
The original prototype (GameMaker 8, 2013) tried a few things worth rebuilding properly:
The rebuild keeps the gameplay exactly and rebuilds the code: an engine-free, tested Core, content
and tuning as validated data, rooms composed in code, and modern Unity (URP, the Input System,
UI Toolkit). Where the original was plainly broken, the rebuild plays the way it was meant to, and
docs/BIBLE.md records each fix.
help, list, list sheep/camera/computer/all, reboot <id>, overwrite <id>,
clear).Requirements: Windows, Unity 6000.4.3f1 (Unity Hub's default install path), the .NET SDK (for
the Core tests), and Unity.Shared,
MindAttic.Capture,
Unity.Multiplayer and
MindAttic.Components cloned beside this repo,
which Packages/manifest.json references as local file: packages.
Play online: powershell -File play.ps1 -Online (or launch Incognito.exe -online) opens the
online scene's menu instead of the title; in the Editor, open Assets/Rea.Incognito/Scenes/Online.unity
and press Play. Incognito/Build Online Scene regenerates it. A dedicated server and smoke-test bots
run it from mp-host.json (mp-host game local, mp-host game smoke).
Play in the Editor: open the project in Unity 6000.4.3f1, open
Assets/Rea.Incognito/Scenes/Rooms/Titlescreen.unity and press Play. Rooms rebuild their content
from data at Awake, so a room scene looks bare until you press Play.
Regenerate the scenes: Incognito/Build Room Scenes in the Editor menu rewrites the four
room scenes and the build settings (Assets/Rea.Incognito/Editor/RoomSceneBuilder.cs).
Build: powershell -File tools/build.ps1 writes Builds/Windows/Incognito.exe in batch mode.
Test: powershell -File tools/test.ps1 runs the Core, EditMode and PlayMode suites;
powershell -File run-core-tests.ps1 runs only the engine-free Core tests with dotnet test.
Parity tour: powershell -File tools/verify-parity.ps1 (Editor closed) plays the whole game
with scripted input, muted, and writes screenshots to Logs/parity-tour/.
Launch a playable build for development: powershell -File play.ps1 (builds it first if
Builds/Windows/Incognito.exe is missing; -Build rebuilds, -Wait waits for it to exit, the log
goes to Logs/play.log). This is not tools/build.ps1/tools/test.ps1's -batchmode runs: it
starts a real, on-screen player.
The batch scripts (tools/unity.ps1 underneath) need the Editor closed on this project, and keep
each run's Unity log in Logs/.
play.ps1 launches muted: it sets MINDATTIC_CLI_MUTED=1 and passes -muted, so a CLI or agent
starting the game never blasts audio. Pass -Sound to launch with audio. Either switch works on its
own when you start Incognito.exe (or the editor) yourself:
$env:MINDATTIC_CLI_MUTED = '1'; .\Builds\Windows\Incognito.exe
.\Builds\Windows\Incognito.exe -muted
The mute is the shared com.mindattic.unity.shared session mute: read before the first scene loads,
it makes the player profile's settings report music and sound effects muted at volume 0 for that run
only, and Incognito.Audio.SessionAudio silences the AudioListener. The player's saved
settings.json is never written, so the next normal launch has sound. Because Incognito has both
music (MusicPlayer) and sound effects (footsteps, the HUD flick, the weapon), SessionAudio only
silences the listener once both channels report muted, so muting just one of your own profile's
channels never silences the other. tools/build.ps1/tools/test.ps1's -batchmode runs play nothing
audible and don't need it.
| Assembly | Folder | What it holds |
|---|---|---|
Rea.Incognito.Core | Assets/Rea.Incognito/Core | Pure C# (noEngineReferences): GameWorld and its commands/events, every *State rule class, SuspicionMeter, CommandInterpreter, ScreenRatio, GmText, the settings registry and content catalog. References only Unity.Shared.Core. |
Rea.Incognito.Runtime | Assets/Rea.Incognito/Scripts | MonoBehaviours that read input, submit commands, and present state and events: player, NPCs, weapon, eye, camera, hacking overlay, console, rooms, audio, the UI Toolkit HUD (HudRoot), GameDisplay. |
Rea.Incognito.Editor | Assets/Rea.Incognito/Editor | Scene and build tooling: RoomSceneBuilder, SandboxSceneBuilder, OriginalArt, PlayerBuilder. |
Rea.Incognito.Online | Assets/Rea.Incognito/Online | Online play on Unity.Multiplayer: IncognitoNetPlayer (a NetEntity per seat), IncognitoAuthority (the server's one GameWorld), IncognitoOnlineGame, IncognitoBot, OnlineLaunch. Rea.Incognito.Editor.Online writes the online scene (OnlineSceneBuilder). |
| Tests | Tests/Core.Tests, Assets/Rea.Incognito/Tests/{EditMode,PlayMode} | dotnet test for Core; Unity EditMode for the MonoBehaviour layer; PlayMode for room traversal, the HUD and text. |
GameWorld.Submit(GameCommand);
every command carries a PlayerId, and presentation plays the resulting GameEvents. There is
no global current-player singleton.Assets/Rea.Incognito/Resources/Data/game-content.json (rooms,
NPCs, descriptions, the poem, console copy, the art, sound and font catalogs) and
game-tuning.json (locomotion, camera, suspicion, weapon, rain, display) are validated on load
by GameSettings.RoomBootstrap,
which rebuilds the room from its data at Awake, so a scene can't drift from its data.GameInput) producing an engine-free
InputSnapshot. Rendering is URP's 2D renderer, with the original's prop depths as sorting
layers; Core and gameplay never reference the pipeline.Feature complete, and a complete proof of concept of the original: the final parity tour
(ParityTourPlayTests, run by tools/verify-parity.ps1, muted) plays the title, Bleecher Street,
2nd Avenue and the shop through a virtual keyboard and mouse, every row of the parity checklist in
docs/RECONSTRUCTION.md section 11 is ticked, and ParityChecklistTests
keeps it honest. Every live piece of original art is drawn, down to the console view's
brain-select overlay, the GUI arrow cursor and the dashboard hover backdrop (U.INC-T39).
docs/RECONSTRUCTION.md: the reverse-engineering record, mechanic by
mechanic, read out of the original .gml/.gmx source.docs/BIBLE.md: the rebuild's brief, its systems and every decision where it
differs from the original, including the original content deliberately not ported.docs/USER_STORIES.md: stories and the ticket log, generated from the
ticket database.AGENTS.md: the rules every contributor and agent follows here.R:\Projects\_PRE_2022\_PRE_2021\_PRE_2020\_PRE_2017\gmlIncognito\09-05-13_2.19am: read-only
reference, never edited by this project.