Underground 2 Revived
Chrome과 Firefox에서 Need for Speed Underground 2를 WebGPU로 두고 팬 프로젝트입니다
2013년 GameMaker 스텔스 프로토타입 Incognito를 Unity 6으로 역공학 재구축
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.
게임C# · ShaderLabGitHub @mindattic온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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.