Underground 2 Revived
Chrome과 Firefox에서 Need for Speed Underground 2를 WebGPU로 두고 팬 프로젝트입니다
GTFO용 BepInEx IL2CPP 플러그인으로 체력·재생·스태미나·낙하 피해를 조정해 협동 플레이를 쉽게 합니다
BepInEx IL2CPP plugin for GTFO that makes co-op easier by tuning health, regen, stamina, fall damage, ammo and enemy detection, with 530+ config entries for nearly every other balance value. Adjusts t
게임HTML · C#GitHub @mindattic온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기BepInEx IL2CPP plugin for GTFO that makes co-op easier by tuning health, regen, stamina, fall damage, ammo and enemy detection, with 530+ config entries for nearly every other balance value. Adjusts the game's own loaded datablocks at runtime, so it keeps working across balance patches. On Thunderstore.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A BepInEx IL2CPP plugin for GTFO that tunes health, regen, stamina, fall damage, ammo, and enemy detection for an easier co-op run, with 530+ further config values exposed underneath for players who want to go deeper.
Try it: install from Thunderstore (listed
there as GtfoEZ, since package names can't contain a period).
.cfg, so this mod runs a one-time, per-setting migration whenever a default changes,
instead of leaving upgraders stuck on a stale number forever.Core tuning (community-consensus defaults; see package/README.md for the full
vanilla-vs-default table):
Stamina Multiplier that goes further still), fall damage amount and max-damage height, weapon/tool ammo,
and enemy movement-detection range.Fog Clearing.Bots, off by default): forces every bot's tool slot to the
basic Sentry Gun.Everything else - 530+ further config entries covering flashlights, movement speed, friendly
fire, battery drain, no-air damage, per-enemy health/damage, the full per-difficulty-tier
ExpeditionBalanceDataBlock (loot budgets, enemy caps, level generation, doors), every melee
weapon, and every ranged weapon archetype plus sentries - all left at vanilla by default. See
package/README.md for the complete breakdown, including real in-game weapon names.
Experimental (Experimental config section; see Limitations below):
PING <KEY> from any terminal reaches an item anywhere in
the level, not just the terminal's own zone. Same-zone pings are left to the game's own PING.
A cross-zone ping is sent to the whole team (over GTFO-API): every player gets the same marker on
the same item for the same 10 seconds, and their event log says who pinged what.
Technique credit: BetterTerminal by
AlexanderMakunin (MIT).| Input | Action |
|---|---|
| E (aiming your sentry) | Place the selected turret - every bot's first, yours last - instant; back to your previous weapon once yours is down |
| 4 (sentry in hand, pressed again) | Cycle the selection among the bot turrets still available |
| Shift+E (aiming your sentry) | Place a bot's turret at your aim (never yours) |
| Insert | Infinite health on/off |
| Delete | Infinite ammo on/off |
| X | Drop the next turret at your current position/orientation - bots first, then your own |
| Z | Recall every bot-placed turret and your own placed sentry, all at once |
Requires the .NET 6 SDK and BepInExPack_GTFO already installed
and launched at least once ("Modded" start) in a Thunderstore Mod Manager or r2modman profile.
git clone --recurse-submodules https://github.com/mindattic/GTFO.EZ.git
cd GTFO.EZ
.\build.ps1
This builds against the Thunderstore Mod Manager profile named "Easy Mode DEV" by default
(.\build.ps1 -Profile MyProfile to use another one), places the plugin straight into that
profile's BepInEx/plugins/GTFO.EZ/ folder so you can launch the game and test immediately, and
also produces dist/GTFO.EZ-<version>.zip for sharing. A successful load lists "GTFO.EZ vN
Active" (plus a line per other active GTFO.* mod) on the rundown-select screen and again as a warden-intel message in-level.
If you're on the older r2modman app instead, its profiles live under a different path - point the build at it directly:
dotnet build .\src\GTFO.EZ\GTFO.EZ.csproj -p:BepInEx="$env:AppData\r2modmanPlus-local\GTFO\profiles\Default\BepInEx"
GameDataInit.Initialize (game boot)
|
v
GameDataTweaks postfix patch
|
+--> ApplyPlayerTweaks (health, stamina, fall damage, ammo, movement...) /
| ApplyFlashlightTweaks / ApplyDetectionTweaks / ApplyLootTweaks / ...
| (each of the 9 tweak categories runs in its own try/catch -
| one broken category logs and skips, the rest still apply)
v
multiplies fields directly on the game's own loaded datablocks
(PlayerDataBlock, FogSettingsDataBlock, ExpeditionBalanceDataBlock, ...)
No datablock JSON is shipped or copied. Everything is a multiplier (or toggle) applied in memory
once, at load time, read from the BepInEx config. Additional Harmony patches cover behaviour that
isn't a simple datablock field: one-time control
defaults (ControlDefaultsPatch), revive speed, bot sentry equipping, instant sentry placement
(SentryInstantPlacementPatch), sentries passing through each other and bullets
(SentryPassThrough: a live sentry's solid colliders move to a layer no bullet or sentry ray
includes, picked at runtime from LayerManager's masks, and live sentries ignore each other's
colliders), the experimental bot tool controls
(DeployPickupHotkeys), Ping Anywhere (TerminalPingPatch), and fog clearing (FogClearPulse).
All tweaks are multipliers or toggles, tunable after first launch in
BepInEx/config/MindAttic.GTFO.EZ.cfg - no rebuild needed to retune a value. The first entry,
[0. Mod] Enabled, is the master switch: false and the mod returns from Load before binding or
patching anything else (the other mods sharing its code then treat it as not installed). Config sections
mirror the feature groups above: Health, Stamina, Fall Damage, Ammo, Lighting, Enemy Detection,
Movement, Combat, Utility, Environment, Enemy Balance, Loot, Interactions, Controls,
Bots, Expedition Resources/Enemies/Level Gen/Doors, one section per melee weapon and per weapon
type/archetype, Sentries, Fog Clearing, and Experimental. (The Artifacts section and the kit
settings under Loot moved to GTFO.EZ.AbsurdItems; an older .cfg keeps them as leftover lines that
do nothing here.)
BepInEx keeps whatever value is already in a player's .cfg, so when this mod changes a default
between versions, an existing install won't pick up the new number on its own -
Plugin.ApplyConfigDefaultMigrations applies the one-time, per-setting correction instead of
leaving upgraders silently stuck on a stale default (see package/CHANGELOG.md for the version
each migration was introduced in).
dotnet test tests\GTFO.EZ.Core.Tests\GTFO.EZ.Core.Tests.csproj
No game install or BepInEx profile needed - GTFO.EZ.Core holds the plugin's pure balance data and
math (weapon/melee config-table generation, the WeaponMult/MeleeMult/ScaleInt multiplier and
rounding logic, config-key validation) with no BepInEx/Il2Cpp dependency, so it's unit tested
directly with NUnit. The datablock patches themselves (src/GTFO.EZ/Patches/) can't be unit
tested - they only run against the game's own loaded data - so verify those by launching the game
after build.ps1.
src/GTFO.EZ/ the plugin project (BepInEx/Il2Cpp - needs the game installed to build)
src/GTFO.EZ.Core/ pure balance data/math the plugin uses, with no BepInEx/Il2Cpp dependency -
split out so it's unit-testable; ships alongside GTFO.EZ.dll at runtime
tests/ GTFO.EZ.Core.Tests - NUnit, runs with plain `dotnet test`, no game needed
package/ exactly what ships to Thunderstore / gets zipped for sharing
manifest.json Thunderstore package name is "GtfoEZ" (no period allowed there)
README.md becomes the Thunderstore page - full vanilla-vs-default tables and changelog
CHANGELOG.md
icon.png 256x256, resized from reference/logo-1254x1254.png
reference/ (gitignored) local-only: EasyMode's files, vanilla data dumps, notes
build.ps1 builds the plugin and packages dist/GTFO.EZ-<version>.zip
external/
GTFO.EZ.Shared/ git submodule: the shared code this mod and some companions compile in (see Shared code)
GTFO.EZ is the core of the GTFO.EZ family: GTFO.EZ.AbsurdWeapons, GTFO.EZ.AbsurdMoves and GTFO.EZ.AbsurdItems are companion mods built on it (each compiles in the code below; each works on its own too), and GTFO.CrashTestDummies compiles in the same shared code.
The code shared by GTFO.EZ, its Absurd companions and GTFO.CrashTestDummies lives in its own repo,
GTFO.EZ.Shared. Each mod has it as a git submodule
at external/GTFO.EZ.Shared and compiles the files it uses straight into its own DLL (linked
<Compile> items in its .csproj, shown under Shared\ in the IDE), so players install nothing
extra. Clone with --recurse-submodules, or run git submodule update --init in an existing clone. The files:
SharedOwner.cs - with several of the mods installed, picks the one that answers shared keys
(the first installed of GTFO.EZ, GTFO.EZ.AbsurdWeapons, GTFO.EZ.AbsurdMoves, GTFO.EZ.AbsurdItems,
GTFO.CrashTestDummies)
and holds state every copy must agree on once for the whole game process. A mod whose master
switch ([0. Mod] Enabled) is off counts as not installed. SharedOwner.IsActive(guid) and
SharedOwner.TryGetSetting<T>(guid, section, key, out entry) are how one mod checks another
(installed, loaded and switched on) and reads its settings.InfiniteToggles.cs - Insert / Delete, infinite health and ammo, announced in the event log and
always in the console too.MessageHelper.cs - on-screen messages for the local player, wherever they fit:
MessageHelper.Show(text, MessageType.Warden | EventLog | Center | Subtitle, seconds). Compiled by GTFO.EZ, its Absurd companions and GTFO.CrashTestDummies.KitLoot.cs - kits as consumables. Compiled by GTFO.EZ.AbsurdItems only (its Consumables Are
Kits, with Loot Mix's Frag/Plasma Grenades and Stim Packs as extras). GTFO.EZ doesn't use it, so
GTFO.EZ.csproj leaves it out of this mod's build.RemoteEvents.cs - RemoteEvents.Register<T>(name, handler), a GTFO-API network event whose
handler can't throw (an exception escaping one would hand GTFO-API's packet to the game's own
receive). Compiled by the mods that use GTFO-API - GTFO.EZ.AbsurdWeapons and GTFO.EZ.AbsurdMoves -
and, like KitLoot.cs, left out of this mod's build.To change any of them, commit and push to GTFO.EZ.Shared, then in each mod move the submodule to
that commit (git -C external/GTFO.EZ.Shared pull origin main), rebuild and commit the new
submodule pointer.
v1, v2, v3... - major-only bumps, matching the convention across other MindAttic projects.
Thunderstore requires manifest.json's version_number to be strict x.y.z, so "v1" is 1.0.0,
"v2" is 2.0.0, and so on (minor/patch stay 0). package/CHANGELOG.md headers use the short vN
form; the manifest keeps the N.0.0 form Thunderstore requires.
The GTFO.EZ family - GTFO.EZ, GTFO.EZ.AbsurdWeapons, GTFO.EZ.AbsurdMoves and GTFO.EZ.AbsurdItems -
shares one version number, so a matching set is easy to spot: they were aligned at v13 (the
companions were v1 before, and GTFO.EZ's in-development v14 was folded into v13), and every release of
the family bumps all four together. GTFO.CrashTestDummies and GTFO.SkipDrop joined the same vN
scheme at v17. Current release: v20.
dist/ as a local mod in your mod manager, then
Settings -> Profile -> Export profile as code and send friends the code.SentryGunInstance.PickUp(PlayerAgent) directly
too (the same real pickup call the vanilla walk-up-and-interact flow ends in). Shift+E and E are
confirmed working in play, as is the weapon switch-back after placing your own. X's quick-drop-all
and Z's own-sentry recall (v19) compile against the real interop assemblies and are placement/
pickup calls proven safe elsewhere in this mod, but haven't yet been confirmed in an actual play
session.LevelAPI.OnBuildStart
fires before level generation reads the ExpeditionBalance/artifact/consumable datablocks (the client
applies the host's values the moment they arrive in the lobby - a few seconds after joining - and
checks again at build start, but a late joiner whose level builds before the host's answer arrives
gets the warning instead); that the interop properties restore cleanly by reflection; that
re-running GTFO.EZ.AbsurdItems' kit-loot postfix (found by owner and type name among GameDataInit's
patches) gives the same tables as at startup; and that the event log is visible in the lobby (every
notice is shown again when the level starts). GTFO.EZ.AbsurdItems' level settings (kit loot, Loot
Mix, Frag/Plasma Grenade pickup counts and switches) follow the host too (G.EZ-T128/GAI-T40): handed
to its public HostLevelSettings hook by reflection before the re-apply, also unconfirmed in play
(an older AbsurdItems without the hook keeps its own values and is only warned about).docs/USER_STORIES.md - the project's living feature/ticket log (generated from the shared
workflow database; don't hand-edit it).package/README.md - the Thunderstore page: the complete vanilla-vs-default stat tables and the
full version-by-version changelog.AGENTS.md - entrypoint for LLM agents working in this repo.No LICENSE file is included in this repository; all rights are reserved.
See package/README.md for full credits to the other GTFO mods and the modding community this
project's design and defaults are built on.
Part of MindAttic - see more projects at github.com/mindattic. Other GTFO mods from the same team: GTFO.EZ.AbsurdWeapons (new weapons, with its own End toggle to carry them on a serious run), GTFO.EZ.AbsurdMoves (new movement abilities, gated behind its own Home toggle), GTFO.EZ.AbsurdItems (artifact buffs and glow, the Frag and Plasma Grenades and Stim Pack, consumables as kits, and breadcrumb markers), GTFO.CrashTestDummies, and GTFO.SkipDrop.