Guide · mashups

Game mashups: one game inside another

The mods that made Universal Modder famous aren't single-game mods. They're mashups: real Minecraft drawn into GTA V, Halo's Warthog driving through Minecraft, Bloons TD 6 played out in blocks.

Four ways to put a game in a game

The mashup-mods skill picks between:

RouteHow it worksExample
Content portConvert the guest's models, animations and stats into the host's formats from your own install.Halo 3 vehicles, Left 4 Dead infected in Minecraft
PassthroughBoth games run unmodified side by side; mods in each exchange camera, ground and events, and frames are composited with depth.Minecraft inside GTA V, Portal 2, RE2
Headless rulesReimplement the guest's rules as a simulation; the host is only the view.Bloons TD 6 inside Minecraft
Decomp as libraryUse a community decompilation of the guest as code the host can call.Retro games inside modern hosts
prompt
Put real Minecraft inside GTA V story mode. Minecraft's camera should follow GTA's, and its TNT should blow up GTA cars.
prompt
Port the Warthog from my Halo install into Minecraft, with a gunner on the turret.

Mashup projects in the knowledge base (17)

workingNative hookFromSoftware engine

Elden Ring

CS2 conversion of Elden Ring offline: native Rust DLL via me3 (fall death, spirit springs, 3D inspect, params)

A "play Elden Ring as Counter-Strike 2" conversion: CS2 guns with their real handling, CS2 movement (bhop), the CS2 agent in third person, grenades, HUD, buy menu, inventory, cases with Valve's odds, skins composited from CS2's own paint kits, a 3D item inspect, the CS2 death screen, and spirit springs on foot. It is a native Rust DLL loaded by me3 plus…

Versions
Elden Ring 1.17.1 (exe 2.7.1.0, Steam build 25080141, regulation 1.17.1), Steam on Linux (Proton), CS2 install of 2026-10 as the asset source
Anti-cheat
EasyAntiCheat: never touched. me3 launches the game offline with its own profile and a separate save file (ER0000.cs2er.sl2); Steam launch stays the untouched game
Built by
Claude Code (Opus 5.5)
Date
2026-10-03
8 gotchas recorded
  • Boot: InvalidRva 7 ms after load.
  • Boot gate never passes.
  • Dying after dropping onto a spirit spring (or anywhere) despite every fall-immunity effect.
  • On-foot spirit springs do nothing.
  • WitchyBND refuses to repack "regulation version exceeds latest known".
  • Unpacking one .param outside its folder fails ("Could not determine PARAM type").
  • Melee / short-range bullets never hit.
  • Bullet holes in the air / on enemies.
Read the full field note on GitHub →
workingReimplementationUnreal Engine

FPV LOGIC

FPV LOGIC drones (flight model, RC radio and 3D models) ported into Minecraft 26.3 (Fabric)

FPV LOGIC's quad flight model was re-implemented as a Fabric mod for Minecraft 26.3, read from the game's own Blueprint bytecode and drone DataTable. The mod also reads the player's FPV LOGIC SaveGames at run time: controller channel map and calibration, and per-drone rates / camera / physics sliders. Their RadioMaster flies the same drone with the same…

Versions
FPV LOGIC (Steam 2398030), UE 5.3.2 (++UE5+Release-5.3, CL 29314046), 18 legacy paks v11, Oodle; Minecraft Java 26.3 + Fabric Loader 0.19.5 + Fabric API 0.162.0+26.3
Anti-cheat
none; FPV LOGIC is only read from disk (paks + SaveGames), never launched or hooked
Built by
Claude Code (Opus 5.5)
Date
2026-10-06
8 gotchas recorded
  • /summon from the test failed: "Incomplete (expected 3 coordinates)".
  • The pilot's mannequin body vanished as soon as it spawned.
  • No way to set a Mannequin's profile.
  • The player must fly along, or chunks never load at the drone.
  • The camera needs roll.
  • Prop spin was wrong on all four props.
  • 26.3 API renames that cost a build each:
  • Translucent block textures:
Read the full field note on GitHub →
workingPassthrough (game in a game)RAGE (Rockstar)

Grand Theft Auto V

Minecraft inside GTA V (passthrough mod)

Real Minecraft Java 26.3 runs next to GTA V story mode and is drawn into GTA's frame: Steve walks, builds, flies an elytra over Los Santos, and his TNT, arrows and fireworks become GTA explosions and bullets, while Minecraft mobs fight the LAPD. GTA's camera drives Minecraft's. GTA's ground becomes invisible collision in Minecraft, and Minecraft's colour…

Versions
GTA V Legacy (Steam, game build 3889, story mode) + ScriptHookV 3889.0 + ReShade 6.8.0; Minecraft Java 26.3 + Fabric
Anti-cheat
BattlEye guards GTA Online only: story mode, launched with BattlEye off (-nobattleye), never online
Built by
Claude Code (Opus 5.5)
Date
2026-09-30
8 gotchas recorded
  • Colour readback returns garbage after a depth readback (Minecraft 26.3).
  • Setup commands on join match nobody (@a is empty).
  • fabric-installer -launcher microsoft_store fails.
  • ScriptHookV's download fails from scripts.
  • The ReShade proxy DLL never loads in GTA.
  • Flicker, then a crash, when toggling the effect.
  • Squashed HUD and skewed angles.
  • Blocks lead the GTA picture by one frame, and explosion shake can't be stopped.
Read the full field note on GitHub →
workingMod-loader API

Half-Life

Half-Life 1's weapons and monsters as a Minecraft Fabric mod, from a GoldSrc model converter

A Fabric mod that adds Half-Life 1's crowbar, 9mm pistol, MP5, shotgun, .357, RPG, gauss gun and egon gun, and its headcrab, baby headcrab, zombie, bullsquid, snark, roach and houndeye, to Minecraft Java 1.21.1. Models, animations, textures and sounds are converted from the player's own install into a private resource pack and the gameplay is…

Versions
Half-Life 1 (Steam, GoldSrc, Studio model version 10), Minecraft Java 1.21.1 with Fabric Loader 0.19.5, Fabric API 0.116.17+1.21.1
Anti-cheat
none involved: single-player Minecraft; Half-Life is never launched or modified, only its files are read
Built by
Claude Code (Sonnet 5.5)
Date
2026-10-05
8 gotchas recorded
  • A monster's body looks patchy or see-through.
  • A weapon appears with gloves, arms or a floating magazine.
  • A character is lying on the ground.
  • A monster's firing pose is a mess of limbs.
  • A held gun slides around when fired.
  • A gun in hand floats off the screen.
  • A mob goal's windup lasts twice as long as written.
  • A houndeye or similar monster runs away from the player.
Read the full field note on GitHub →
workingMod-loader APINative C++

Halo 3 (MCC)

Halo 3 weapons, Covenant, vehicles and maps ported into Minecraft from your own MCC install

A Fabric 1.21.4 mod adds Halo 3's 19 weapons and 3 grenades, Halo shields for the player, Grunts, Jackals, Elites, Brutes, Hunters, Flood and Marines with Halo-style AI, five drivable vehicles, and a map loader. The mod ships only code. A Python converter reads the user's own MCC install and produces a resource pack (real Halo 3 models, rank-coloured…

Versions
Halo: The Master Chief Collection, Steam app 976730, build 19905945 (Halo 3 cache type MccHalo3U13); Minecraft Java 1.21.4 + Fabric loader 0.19.3/0.19.5, Fabric API 0.119.4+1.21.4
Anti-cheat
EasyAntiCheat on MCC; never launched or touched. The route only reads Halo's files on disk.
Built by
Claude Code (Opus 5.5)
Date
2026-10-03
8 gotchas recorded
  • Gradle fails resolving Loom 1.18.
  • System.Drawing.Common ... manifest definition does not match
  • Failed to create Python type for Reclaimer.Drawing.DdsImage (PresentationCore missing).
  • 'ICacheFile' object has no attribute 'CreateReader'.
  • Models 3048x too big.
  • Converted characters aim with forearms pointing at the sky.
  • Holes in characters with Minecraft cutout rendering.
  • Valhalla turned into a lake.
Read the full field note on GitHub →
workingMod-loader APISource

Left 4 Dead

Left 4 Dead's common infected (19 looks) and Tank as animated Minecraft mobs

A Fabric mod that adds Left 4 Dead's common infected (13 male looks, 4 common female looks, a nurse and a rural woman) and the Tank to Minecraft Java 1.21.1, with the games' own meshes, textures, animation clips and sounds converted from the player's install into a private resource pack. All of it runs in the real game: the infected sprint at you, claw…

Versions
Left 4 Dead 1 (Steam app 500, MDL version 49 models), Minecraft Java 1.21.1 with Fabric Loader 0.19.5, Fabric API 0.116.17+1.21.1
Anti-cheat
none involved: single-player Minecraft; Left 4 Dead is never launched, hooked or patched, its files are only read from disk
Built by
Claude Code (Sonnet 5.5)
Date
2026-10-05
8 gotchas recorded
  • A mob's swing looks like it stutters and idles between hits.
  • The player's hits are mostly ignored by a mob in melee with them.
  • A walking mob flicks between walk and run poses.
  • The mob attacks with its back turned.
  • The "attack" animation is just running.
  • Missing hands.
  • The player dies in tests and the next commands do nothing.
  • The dead mob vanishes in a second with no fall.
Read the full field note on GitHub →
workingReimplementationJava (Minecraft)

Minecraft

Bloons TD 6 inside Minecraft: the guest's rules as a headless 2D sim, Minecraft as the view

A Forge 1.20.1 mod that plays a real game of Bloons TD 6 inside a Minecraft world: bloons follow the Monkey Meadow track built in blocks, the 8 base towers go to tier 5 on all three paths, the 100 rounds and BTD6's freeplay (to round 200) are reproduced, and players pop bloons with any Minecraft weapon. The guest's rules run as a pure-Java 2D simulation…

Versions
Minecraft Java 1.20.1 + Forge 47.2.0 (dev and benches; also runs on Forge 47.4.10 in the user's modded instance), Java 17, official mappings. Guest: Bloons TD 6 v56.3, Epic Games Store build, Unity 6000.0.58f2, IL2CPP, Addressables 2.9.1
Anti-cheat
none on the host side. BTD6 has online features (account, co-op, races, flagged-player checks): the route never launches, patches, hooks or injects into it. Only its asset files were read offline, read-only, from the user's own install
Built by
Claude Code (Opus 5.5)
Date
2026-10-04
8 gotchas recorded
  • Chunks appear empty from above right after building the map.
  • A movement-speed bonus zooms the view.
  • Writing the Forge TOML at runtime truncates it.
  • Hand edits to the TOML are often missed.
  • A changed default never reaches existing users.
  • A bucket of water on the protected path floods the map (14 of 16 sources flowed).
  • Vanilla fire on a mirror entity never goes out, and is the size of the hitbox.
  • Potions, knockback and golem hits move or change mirror entities.
Read the full field note on GitHub →
workingPassthrough (game in a game)Java (Minecraft)

Minecraft

Half-Life 2 guns in Minecraft (passthrough, HL2 Demo under Wine on macOS)

A live Half-Life 2 Demo (Steam, running under Wine on an arm64 Mac) renders and plays the sound of the real first-person weapon, while a Fabric mod for Minecraft Java 26.3 does the gameplay: hitscan, damage, grenades, gravity-gun punts. Minecraft input is forwarded to HL2's console through cfg files, and HL2's view, keyed down to just the weapon, is…

Versions
Minecraft Java 26.3 (demo account), Fabric Loader 0.19.5, Fabric API 0.161.0+26.3; Half-Life 2 Demo (Steam app 219) on the HL2 depot build 19307283, 32-bit hl2.exe with DXVK d3d9
Anti-cheat
none in single-player (VAC only applies to HL2 multiplayer; nothing online was touched)
Built by
Claude Code (Claude Opus 5.5)
Date
2026-10-05
8 gotchas recorded
  • Wine exits with 136 and prints nothing when started from a shell.
  • The capture helper grabbed the editor window.
  • A command-line ScreenCaptureKit tool asserts CGS_REQUIRE_INIT.
  • The recorder crashed with "NSWindow should only be instantiated on the main thread".
  • The recording was silent.
  • "No shot" looked like a paused simulation.
  • SCK's frame-rate count looked like 58 fps when HL2 drew ~20.
  • A map in the startup cfg was ignored.
Read the full field note on GitHub →
workingPassthrough (game in a game)Java (Minecraft)

Minecraft

Resident Evil 2's live picture composited into Minecraft with depth

Minecraft Java 26.3 is the visible game: Resident Evil 2's live rendered picture (colour **and** linear depth in metres) is drawn into Minecraft's view and depth-tested against Minecraft's own depth buffer, so Minecraft blocks occlude RE2's world and RE2's world shows through Minecraft's sky and gaps. RE2 keeps camera and input authority (Leon drives;…

Versions
Minecraft Java 26.3 + Fabric Loader 0.19.5 / Fabric API 0.161.0+26.3 (Loom 1.18.2, JDK 25); Resident Evil 2 (Steam app 883710, RE Engine, D3D12) + REFramework 1.5.9.1
Anti-cheat
none detected on re2.exe; both games single-player and offline only, never launched online
Built by
OpenCode (mimo-v2.6-flash)
Date
2026-10-06
8 gotchas recorded
  • Composite draws but the screen never changes.
  • Guest sky never wins: open-sky pixels keep Minecraft's sky.
  • Depth comparison looks inverted/garbage with the textbook GL formula.
  • Camera publishes fov=2.0 and near=2.0 for 27 minutes while the probe reads 74.8.
  • F8 does nothing although options.txt shows a binding.
  • Minecraft boots with default options and a NumberFormatException on key.keyboard.g.
  • Writer runs for 9 minutes, guest never calibrates, no reason is logged anywhere.
  • E_INVALIDARG creating what looks like a valid D3D12 readback texture.
Read the full field note on GitHub →
workingPassthrough (game in a game)Source

Portal 2

Portalcraft: real Minecraft inside Portal 2 (passthrough mod)

Real Minecraft Java 26.3 runs hidden next to Portal 2, follows Portal 2's camera, and is drawn into every Portal 2 frame with depth, so Minecraft blocks and mobs stand on Portal 2's floors, hide behind its walls and stay glued while you move. The Portal 2 player builds with Minecraft blocks, fights Minecraft mobs (their damage reaches Portal 2's health),…

Versions
Portal 2 (Steam, build 10090, D3D9, 32-bit) + ReShade 6.8.0 add-on build; Minecraft Java 26.3 + Fabric Loader 0.19.5 + Fabric API 0.161.0+26.3, JDK 25 (Temurin 25.0.4.1+1), Windows 11
Anti-cheat
VAC on online co-op only: Portal 2 is launched with -insecure (VAC off) and ReShade's d3d9.dll is placed in the game folder only for the session, then removed
Built by
Claude Code (Opus 5.5)
Date
2026-10-05
8 gotchas recorded
  • ReShade never loads.
  • Minecraft stutters / slides while you move.
  • Mob outlines cut off while strafing (always the trailing side).
  • Outlines cut at the screen edges while turning.
  • The portal gun fired with every Minecraft click.
  • "E opens the inventory" broke picking up cubes.
  • "moved wrongly" (Minecraft refused the stand-in's moves).
  • Achievements and stats reset every launch (dev runs).
Read the full field note on GitHub →
workingMod-loader APIUnity (Mono)

Risk of Rain 2

Arkham Knight Batman as a Risk of Rain 2 survivor: UE3 model and animations ported with umodel, Blender and a Unity AssetBundle

A new RoR2 survivor built on the HenryTutorial template (BepInEx + R2API) with a 15-skill Arkham-style kit (Freeflow combo meter, 4-hit lunge chain, Counter, Cape Stun, Fear Multi-Takedown, gadgets, glide). The real Batman model and 51 animations are extracted from the player's own Arkham Knight install with umodel, rebuilt headlessly in Blender and…

Versions
RoR2 1.4.1#912 (Unity 2021.3.33f1, Mono), Steam build 21587608; Batman: Arkham Knight Steam build 13250859 (UE3 863/32995); Windows 11
Anti-cheat
none (RoR2 co-op PvE has no anti-cheat; Arkham Knight was only read offline, never launched or modified)
Built by
Claude Code (Opus 5.5)
Date
2026-10-05
8 gotchas recorded
  • umodel download is a 9 KB HTML page.
  • Arkham packages load the wrong content.
  • A set will not export, or exports the wrong copy.
  • -lods gives only LOD0.
  • Animations explode or sink by about 1 m.
  • Twist and Spine2 rotations are wrong only in cape clips.
  • Cape flails through the body in every attack.
  • Strikes punch sideways or spin the character around.
Read the full field note on GitHub →
workingMod-loader APIUnity (Mono)

Risk of Rain 2

Helldiver survivor: custom skills, stratagems, Helldivers 2 models on the Commando rig, config, lab bridge and benchmark

A new survivor (clone of the Commando body) with two automatic weapons, two grenades, a dive and a jump pack, and five Helldivers 2 stratagems called in by typing arrow codes and throwing a sticky beacon. An optional Model folder replaces the Commando with a Helldiver converted from the player's own HD2 install (body skinned to Commando's bones, two…

Versions
1.4.1#912 (Unity 2021.3.33f1, Mono), Steam, Windows 11; separate lab copy of the install
Anti-cheat
none (co-op PvE, no anti-cheat); all testing in a separate lab copy of the game
Built by
Claude Code (Claude Opus 4.x, Sonnet and Opus 5.5 across sessions)
Date
2026-10-04
8 gotchas recorded
  • Commando flashes for one frame on the character select.
  • The cape lags behind the body.
  • The cape cost 20 FPS.
  • Stealth items cloak the body but not the gun or backpack
  • The fitted body's hands had the wrong chirality and needed 110-160° of wrist twist.
  • A subclassed vanilla state does not get vanilla tuning
  • Throwing the beacon also fires the gun.
  • The aim arc goes NaN when aiming straight down or at something in your face
Read the full field note on GitHub →
workingPassthrough (game in a game)

Watch Dogs

Watch Dogs 1: compiling and delivering the shader pack (shadersobj)

The shipped HLSL under `engine/shaders/` compiles to a single `shadersobj.dat` archive of ~39k permutations, and the engine loads it before anything else. This note is what we had to learn to rebuild all of them on Linux with an era-correct compiler and get the archive accepted in-game: the bytecode dialect the 2014 runtime actually accepts, and the…

Versions
Watch Dogs 1 retail (Steam/uPlay) + NexusTools 1.1.12/1.1.13
Anti-cheat
none on WD1; delivering files through NexusTools is first-class, no bypass involved
Built by
OpenCode (DeepSeek V4.1 Flash)
Date
2026-10-06
7 gotchas recorded
  • Symptom:
  • Symptom:
  • Symptom:
  • Symptom:
  • Symptom:
  • Symptom:
  • Symptom:
Read the full field note on GitHub →
in-progressPassthrough (game in a game)Unreal Engine

Black Myth: Wukong

Black Myth: Wukong, Unreal 5.0: injection works, ReShade render depth does not

Goal was a Minecraft × GTA V style passthrough: run Minecraft beside Black Myth: Wukong and composite its frame into Wukong's. **The load-bearing negative result: ReShade 6.8.0 hooks this game's D3D12 perfectly and even *detects* a depth-stencil, but the depth it reads is completely flat — no scene geometry.** So depth-correct compositing is not…

Versions
build 21393610, Steam app 2358720, UE5+Release-5.0, project 'b1'
Anti-cheat
none found (no EAC, no BattlEye, no ACE). Denuvo Anti-Tamper IS present and still active — but it did not block DLL injection, and nothing here bypasses it.
Built by
DeepSeek Harness (deepseek-flash)
Date
2026-10-01
8 gotchas recorded
  • um win ps crashes on a Chinese-locale Windows.
  • um win drive click takes DPI-virtualised coordinates, but um win shot returns physical pixels.
  • um win shot returns a stale frame once ReShade post-processing is active.
  • um kb new --root wants the knowledge/ directory, not the repo root.
  • ReShade 6.8.0 has no RESHADE_VERBOSE_LOG.
  • ReShade's Chinese UI translates Add-ons as 「插件」, not 「附加」.
  • DisplayDepth.fx is a configuration aid, not a depth viewer.
  • Do not trust a negative result from a chunked file scan without checking the loop covered the file.
Read the full field note on GitHub →
abandonedOtherNative C++

Naruto Shippuden: Ultimate Ninja Storm 4

Porting ASBR characters into Storm 4: both games' CPK payloads are encrypted

The plan was to port JoJo ASBR characters (combos, specials, HHA/GHA as ultimates), stages and audio into Naruto Storm 4's VS mode for 2 local players, starting with Jotaro + Star Platinum. It stopped at recon: both games' CPK file tables are readable, but every file payload is encrypted. Getting the keys would mean breaking a protection measure, which…

Versions
Steam build 5376895 (steam 349040); ASBR Steam build 13123765 (steam 1372110)
Anti-cheat
none in Storm 4; EasyAntiCheat in ASBR (ASBR was never launched, only its files read)
Built by
Claude Code (Opus 5.5)
Date
2026-10-04
3 gotchas recorded
  • The extracted .xfbin files are noise, though the file list parsed fine.
  • um scan says "Unknown native engine" for both.
  • ASBR file lists show some names twice
Read the full field note on GitHub →
in-progressReimplementation

Test Drive Unlimited

OpenTDU — decompilation-based source port of Test Drive Unlimited (MC 1.66A)

Versions
MC 1.66A
Anti-cheat
none relevant to this offline source-port work
Built by
OpenCode (DeepSeek V4.1 Flash)
Date
2026-10-05
8 gotchas recorded
  • Black screen / missing shaders on first run
  • Stale assets used instead of fresh ones
  • Garbled pointers reading asset structs on 64-bit
  • Flash UI crashes / aliased ActionScript pointers
  • No backend fallback
  • No regression net
  • -skip_glsl confusion
  • opentdu_savedecryptor writes to a hardcoded path
Read the full field note on GitHub →
in-progressPassthrough (game in a game)

Test Drive Unlimited 2

Playing Test Drive Unlimited 2 online with Project Paradise 2 (server, NAT, migration, driver regressions)

TDU2's official servers are gone; **Project Paradise 2** (project-paradise2.de) is the community revival. The server does **matchmaking only** — gameplay is peer-to-peer — so "I can see my friend on the map but not in the game" is a NAT/port problem, not a server fault. Separately, **AMD drivers released after February 2025 break the game** (rendering…

Versions
retail; community server current as of 2026-03
Anti-cheat
Community-run. Mods allowed with conditions (no harm to others, nothing competitive/leaderboard, no server crashes). No anti-cheat bypass documented.
Built by
OpenCode (DeepSeek V4.1 Flash)
Date
2026-10-05
8 gotchas recorded
  • See a friend on the map but not in the game.
  • AMD GPU: rendering issues, driver timeouts, system freezes.
  • NVIDIA GTX 1650/1660 and all RTX: map crashes/freezes.
  • "TDU2 has to be launched by Steam".
  • New steering wheel not recognised.
  • Tabbing out crashes the game.
  • Refresh rate above 60 Hz not applying.
  • Don't combine multiple car packs.
Read the full field note on GitHub →

Frequently asked questions

Do I need to own both games for a mashup?

Yes. Mashups read assets and code from your own installs of both games, and the result can't ship either game's files. Share code, patches or converters instead.

How long does a mashup take?

A content port (one weapon or creature) can work in a session. A passthrough mod like Minecraft inside GTA V is a multi-session project with a lot of verification.

Can I share a mashup mod?

Share your code and a “bring your own game files” installer. Never redistribute either game's assets. Publishers have taken down fan projects even without assets, so keep it non-commercial and read both publishers' policies.