blitz3d-decomp
Skill9.3k starsChanged 32 days agoMITView on GitHub
Decompile a Blitz3D game to readable Blitz source with B3DDecomp and port what it does to another engine. Covers SCP - Containment Breach-era and other .bb games, B3DDecomp, Blitz3D runtime behaviour (fixed tick, Animate, CurveValue, Euler angles, quaternions, Rnd), animated .b3d models (viewmodels with bones and keyframes) into Roblox, and where to stop (builds protected against decompiling, games and assets the user has no rights to). Use when a Blitz3D game's code or animated models are needed.
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 13
Keep every disassembly and decompile outside any repo (convention: ~/<game>-decomp/), and never publish them.
- Distinctive: line 17
Read the source when there is one: SCP: Containment Breach (Regalis11/scpcb) and its Ultimate Edition Reborn fork (Jabka666/scpcb-ue-my) …
- Distinctive: line 32
If one function aborts the whole run, apply references/b3ddecomp-skip-failures.patch (git apply.
- Distinctive: line 46
When it still aborts, the exception names the construct.
- Distinctive: line 70
Read references/blitz-runtime.md before writing port code: Blitz3D's clock, Animate, CurveValue, Euler angles, Rnd and entity calls behave …
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Blitz3D decompile and port
Blitz3D games ship as one exe: the runtime in .text and the compiled game in a resource module that
the runtime links at load. Ghidra on the exe shows only the runtime. The route that works:
B3DDecomp disassembles the module and decompiles it to Blitz source. Then the source is the spec for the
port, and the original game stays the oracle.
Keep every disassembly and decompile outside any repo (convention: ~/<game>-decomp/), and never
publish them; the scripts here are fine to keep. Leave proprietary DLLs that forbid decompiling alone: their
export names in the exe are enough. Journal in the mod's MODLOG.md.
Read the source when there is one: SCP: Containment Breach (Regalis11/scpcb) and its Ultimate Edition Reborn fork (Jabka666/scpcb-ue-my) are open source under CC BY-SA 3.0.
What a port may use. A port that re-expresses a game's logic, or converts its models, keyframes, textures or sounds, redistributes that game once it is published or uploaded (to Roblox too). Port only what the user has the rights to: their own game, or an openly licensed one on its terms (SCP: Containment Breach: credit it and keep the port under CC BY-SA 3.0, and check each asset's credits, since fan games mix licences). Anything else stays a private study: nothing from it is uploaded or published.
1. Tools
- B3DDecomp (juanjp600/B3DDecomp, C#, GPL-3): clone outside the repo, then
dotnet build Blitz3DDecomp.sln -c Release. It needs a .NET 8 SDK; a user-local one installs without admin (dotnet-install.ps1 -Channel 8.0 -InstallDir <dir>). Run withDOTNET_ROLL_FORWARD=Majorandbin/Release/net8.0onPATH: the decompiler startsBlitz3DDisasmby name. - If one function aborts the whole run, apply
references/b3ddecomp-skip-failures.patch (
git apply; made on commit 2b3148b): the decompiler then skips a function it can't finish, with astep5 failedline, instead of stopping.
Done when Blitz3DDecomp.exe and Blitz3DDisasm.exe build.
2. Disassemble and decompile
Blitz3DDecomp.exe <copy of game.exe> writes <game>_disasm/ (Code/ per function, Type/, Strings.txt,
BuiltIn/, Libs/, BuiltInSymbols.txt), then decompiles it to <game>_decomp/. Games built from SCP:
Containment Breach's code need the game's fmod.decls as a second argument (B3DDecomp's README: the shipped
decls drop a parameter from FSOUND_Stream_Open).
When it still aborts, the exception names the construct. Never make a type setter silently ignore writes to get past one: the type propagation then loops forever with no output.
Protected builds: stop. Some builds are protected against this step: a modified compiler and runtime
hash every function, type and builtin name (B3DDecomp stops with Unrecognized function:
@_builtIn_f<garbled>; SCP: Containment Breach 2's client is built this way), or the module is encrypted.
Those are protections the developer added against decompiling. Don't reverse them: tell the user and stop
(skills/mod-any-game/references/safety.md). Current B3DDecomp undoes one of them by itself, without saying
so: an XOR on a .b3dmod section. List the exe's sections first (objdump -h, or any PE viewer) and stop if
it has one.
Done when <game>_decomp/ holds Main.bb, Functions/, Types/ and Decls/ and the run prints
at most a handful of step5 failed lines.
3. Find the system
- Strings first: an asset path or sound the system loads (
grep -l StringConstant_<n> Code/*). - Data-driven templates: the init function stores constants into a template per item. If the game has an addon/JSON loader, it names every field.
Done when every number the port will use is traced to the line that sets it and the line that reads it.
4. Port
Read references/blitz-runtime.md before writing port code: Blitz3D's clock,
Animate, CurveValue, Euler angles, Rnd and entity calls behave in ways a straight transcription gets wrong.
For animated .b3d models (viewmodels, rigs, keyframes) into Roblox, follow
references/b3d-to-roblox.md; its scripts are in scripts/roblox/.
Port step for step: same order, same constants, same tick. Mark every deviation in a comment with the reason. The rights rule above covers the code as much as the models.
5. Verify against the oracle
Measure the port against the decompiled numbers in the engine, not by eye: rates (shots per second at the fixed tick), durations (frames / speed / ticks per second), aim (the sight's dot on the screen centre), ammo on the server. Record each check and its result in the journal.
Done when every ported behaviour has a measured number next to the decompiled one.
Trending
More talk lately.about the whole repository
Who's talking about rehan-remade/universal-modder
- A Hacker News story“Universal Modder: Let Any AI Coding Agent Mod Almost Any PC Game”Hacker News · Oct 1, 2026 · 4 points
- @prosperflowio.bsky.social“Point your AI agent at almost any PC game you own and watch it reverse engineer, mod, test and film the …”Bluesky · Oct 30, 2026 · 2 likes
- @agentpalisade.bsky.social“universal-modder packages skills, a CLI and the fal MCP server so an agent can recon, reverse-engineer and …”Bluesky · Oct 25, 2026 · 1 likes
- @vicky-grok.bsky.social“🔗 github.com/rehan-remad... Which game would you mod first? #AI #Gaming #OpenSource #AIAgents”Bluesky · Oct 19, 2026 · 1 likes
- sudosubin/agents.nix“claude-code-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-27 → 0-unstable-2026-10-30”GitHub · Oct 30, 2026
The biggest 5 of 60 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 60
Talked about on GitHub, the web, Bluesky and Hacker News (60 times).
On GitHub · 50
- Oct 30, 2026claude-code-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-27 → 0-unstable-2026-10-30 — sudosubin/agents.nix0 reactions
- Oct 30, 2026agent-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-27 → 0-unstable-2026-10-30 — sudosubin/agents.nix0 reactions
- Oct 30, 2026agent-skills.github.rehan-remade.universal-modder: 0-unstable-2026-10-27 → 0-unstable-2026-10-30 — sudosubin/agents.nix0 reactions
- Oct 30, 2026claude-code-marketplaces.github.rehan-remade.universal-modder: 0-unstable-2026-10-27 → 0-unstable-2026-10-30 — sudosubin/agents.nix0 reactions
- Oct 30, 2026codex-marketplaces.github.rehan-remade.universal-modder: 0-unstable-2026-10-27 → 0-unstable-2026-10-30 — sudosubin/agents.nix0 reactions
45 more on GitHub
- Oct 30, 2026codex-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-27 → 0-unstable-2026-10-30 — sudosubin/agents.nix0 reactions
- Oct 28, 2026claude-code-marketplaces.github.rehan-remade.universal-modder: init at 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 28, 2026codex-marketplaces.github.rehan-remade.universal-modder: 0-unstable-2026-10-21 → 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 28, 2026codex-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-21 → 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 28, 2026agent-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-21 → 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 28, 2026claude-code-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-21 → 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 27, 2026agent-skills.github.rehan-remade.universal-modder: 0-unstable-2026-10-21 → 0-unstable-2026-10-27 — sudosubin/agents.nix0 reactions
- Oct 24, 2026rehan-remade 'universal-modder' — Claude Code로 PC 게임 모딩하는 스킬·도구 세트, 8,814스타 (10/24, GitHub) — roomedia/ax-trend0 reactions
- Oct 21, 2026codex-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-18 → 0-unstable-2026-10-21 — sudosubin/agents.nix0 reactions
- Oct 21, 2026agent-plugins.github.rehan-remade.universal-modder: 6b4090d → c1dff21 — sudosubin/agents.nix0 reactions
- Oct 21, 2026claude-code-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-18 → 0-unstable-2026-10-21 — sudosubin/agents.nix0 reactions
- Oct 21, 2026agent-skills.github.rehan-remade.universal-modder: 0-unstable-2026-10-18 → 0-unstable-2026-10-21 — sudosubin/agents.nix0 reactions
- Oct 21, 2026codex-marketplaces.github.rehan-remade.universal-modder: 0-unstable-2026-10-18 → 0-unstable-2026-10-21 — sudosubin/agents.nix0 reactions
- Oct 21, 2026agent-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-18 → 0-unstable-2026-10-21 — sudosubin/agents.nix0 reactions
- Oct 19, 2026Audit candidate: rehan-remade/universal-modder — MarkQWu/agents-in-the-wild0 reactions
- Oct 19, 2026vendor-radar: candidates 2026-10-19 — ultrametricai/ultrametric0 reactions · 1 comment
- Oct 19, 2026Audit candidate: rehan-remade/universal-modder — xiaolai/nlpm0 reactions
- Oct 18, 2026Review case lead: Universal Modder: AI-assisted game mods — reacher-z/Awesome-REA0 reactions
- Oct 18, 2026vendor-radar: candidates 2026-10-18 — ultrametricai/ultrametric0 reactions · 1 comment
- Oct 18, 2026agent-plugins.github.rehan-remade.universal-modder: 6948d35 → 6a8865a — sudosubin/agents.nix0 reactions
- Oct 18, 2026claude-code-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-17 → 0-unstable-2026-10-18 — sudosubin/agents.nix0 reactions
- Oct 18, 2026agent-skills.github.rehan-remade.universal-modder: 0-unstable-2026-10-17 → 0-unstable-2026-10-18 — sudosubin/agents.nix0 reactions
- Oct 18, 2026codex-marketplaces.github.rehan-remade.universal-modder: 0-unstable-2026-10-17 → 0-unstable-2026-10-18 — sudosubin/agents.nix0 reactions
- Oct 18, 2026codex-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-17 → 0-unstable-2026-10-18 — sudosubin/agents.nix0 reactions
- Oct 18, 2026agent-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-17 → 0-unstable-2026-10-18 — sudosubin/agents.nix0 reactions
- Oct 18, 2026claude-code-plugins.github.rehan-remade.universal-modder: b8675c1 → 232a765 — sudosubin/agents.nix0 reactions
- Oct 17, 2026agent-skills.github.rehan-remade.universal-modder: b8675c1 → 232a765 — sudosubin/agents.nix0 reactions
- Oct 17, 2026vendor-radar: candidates 2026-10-17 — ultrametricai/ultrametric0 reactions · 1 comment
- Oct 17, 2026codex-marketplaces.github.rehan-remade.universal-modder: 0-unstable-2026-10-14 → 0-unstable-2026-10-17 — sudosubin/agents.nix0 reactions
- Oct 17, 2026codex-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-14 → 0-unstable-2026-10-17 — sudosubin/agents.nix0 reactions
- Oct 17, 2026agent-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-14 → 0-unstable-2026-10-17 — sudosubin/agents.nix0 reactions
- Oct 17, 2026claude-code-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-14 → 0-unstable-2026-10-17 — sudosubin/agents.nix0 reactions
- Oct 17, 2026agent-skills.github.rehan-remade.universal-modder: 0-unstable-2026-10-14 → 0-unstable-2026-10-17 — sudosubin/agents.nix0 reactions
- Oct 16, 2026vendor-radar: candidates 2026-10-16 — ultrametricai/ultrametric0 reactions · 1 comment
- Oct 16, 2026STAR Game Lab: reviewed multi-engine Agent Skills and legal recomp test harness — oncoursemail/Star-AI-Private0 reactions
- Oct 15, 2026vendor-radar: candidates 2026-10-15 — ultrametricai/ultrametric0 reactions · 1 comment
- Oct 15, 2026codex-plugins.github.rehan-remade.universal-modder: 201569a → 23902ef — sudosubin/agents.nix0 reactions
- Oct 14, 2026codex-marketplaces.github.rehan-remade.universal-modder: 201569a → 23902ef — sudosubin/agents.nix0 reactions
- Oct 14, 2026agent-plugins.github.rehan-remade.universal-modder: 3ff0052 → 23902ef — sudosubin/agents.nix0 reactions
- Oct 14, 2026agent-skills.github.rehan-remade.universal-modder: 0-unstable-2026-10-12 → 0-unstable-2026-10-14 — sudosubin/agents.nix0 reactions
- Oct 14, 2026claude-code-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-12 → 0-unstable-2026-10-14 — sudosubin/agents.nix0 reactions
- Oct 14, 2026codex-marketplaces.github.rehan-remade.universal-modder: 0-unstable-2026-10-12 → 0-unstable-2026-10-14 — sudosubin/agents.nix0 reactions
- Oct 14, 2026codex-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-12 → 0-unstable-2026-10-14 — sudosubin/agents.nix0 reactions
- Oct 14, 2026agent-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-12 → 0-unstable-2026-10-14 — sudosubin/agents.nix0 reactions
- Oct 14, 2026claude-code-plugins.github.rehan-remade.universal-modder: 0-unstable-2026-10-07 → 0-unstable-2026-10-12 — sudosubin/agents.nix0 reactions
On the web · 6
- Oct 6, 2026Universal Modder for Claude Code: Install, fal Costs, Limits | LaoZhang AI Blog — blog.laozhang.ai
- Oct 5, 2026Top New Dev Tools: Automate Workflows, Mod Games, and More — dev.to
- Oct 5, 2026Universal Modder Guide: Setup, Tests and Game Examples | OpenGame — opengame.app
- Oct 3, 2026Universal Modder: A Practical Guide to AI Game Modding — huggingface.co
- Oct 1, 2026Make Claude Code mod any PC game you own: a hands-on guide to universal-modder — AI Frontier Post — aifrontierpost.com
1 more on the web
On Bluesky · 3
- Oct 30, 2026Point your AI agent at almost any PC game you own and watch it reverse engineer, mod, test and film the result. 🔗… — @prosperflowio.bsky.social2 likes and reposts
- Oct 25, 2026universal-modder packages skills, a CLI and the fal MCP server so an agent can recon, reverse-engineer and mod a PC game, then leave a… — @agentpalisade.bsky.social1 likes and repost
- Oct 19, 2026🔗 github.com/rehan-remad... Which game would you mod first? #AI #Gaming #OpenSource #AIAgents — @vicky-grok.bsky.social1 likes and repost · 1 reply
On Hacker News · 1
- Oct 1, 2026Universal Modder: Let Any AI Coding Agent Mod Almost Any PC Game4 points
In this repository40 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- asset-pipelineSkill
- blitz3d-decompSkill
- fal-assetsSkill
- game-automationSkill
- game-reconSkill
- game-research-websearchSkill
- mashup-modsSkill
- mod-any-gameSkill
- port-a-modSkill
- publish-modSkill
- reverse-engineeringSkill
- share-field-notesSkill
- showcase-videoSkill
- asset-pipelineSkill
- fal-assetsSkill
- game-automationSkill
- game-reconSkill
- game-research-websearchSkill
- mashup-modsSkill
- mod-any-gameSkill
- port-a-modSkill
- publish-modSkill
- reverse-engineeringSkill
- share-field-notesSkill
- showcase-videoSkill
- asset-pipelineSkill
- blitz3d-decompSkill
- fal-assetsSkill
- game-automationSkill
- game-reconSkill
- game-research-websearchSkill
- mashup-modsSkill
- mod-any-gameSkill
- port-a-modSkill
- publish-modSkill
- reverse-engineeringSkill
- share-field-notesSkill
- showcase-videoSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

