How ArkWeb put Spider-Man into Batman: Arkham Knight with Claude
How the ArkWeb mod runs Spider-Man Remastered as a hidden guest inside Arkham Knight, what its reverse engineering tools do, and what the sources say about Claude's role.
ArkWeb runs Marvel's Spider-Man Remastered as a hidden guest while Batman: Arkham Knight stays the visible host. The two games share state through shared memory, a Python streamer feeds Gotham's collision into Spider-Man's physics, and his frame is drawn where Batman would be. The project's commits are co-authored by Claude Opus 5.5.
What ArkWeb is
ArkWeb is an experimental, single-player research mod by luki-1. You play Spider-Man's web swinging, wall running and point launches inside Arkham Knight's Gotham. Dexerto covered it on 3 October 2026 as a mod that runs both games at once, and a ResetEra thread opened a day earlier. Our listing is Reverse engineered two games to swing Spider-Man through Arkham Knight, with Claude.
A note on scope. The README documents the architecture, the tools and the known issues in depth. It does not describe how Claude was used during development, and the Dexerto article does not mention AI at all. The AI link on record is that the commits are co-authored by Claude Opus 5.5 (per the project record on this site), and that the README is built so a user installs and plays the mod through an AI agent. This guide keeps those two things apart.
The setup
- Two games, one PC. Steam copies of both, with Spider-Man at build 4.0630 only, and a controller. The code contains no game files.
- Windows build tools. Python 3.12, Visual Studio 2019 Build Tools (x64 C++), the Windows 10 SDK, and Python packages including numpy, scipy, numba, pefile and capstone.
- An agent for installing. The README's main path is the Claude desktop app's Code tab, where you paste a message asking Claude Code to follow
AGENTS.md. It checks both games, installs build tools, builds and installs the mod and backs up your Arkham Knight save. The README says other agents such as Codex and Cursor can follow the same guide. - A pattern borrowed from SkyCraft. The README says ArkWeb follows the architecture of SkyCraft: a hidden guest game drives the moveset and the host game displays it.
The sources name no MCP server or disassembler wired to the agent. The reverse engineering tooling is a set of Python scripts in the repository, covered below.
How it works, step by step
- Spider-Man is the guest. A proxy DLL (
winmm.dll) on the Spider-Man side publishes hero and camera state, accepts virtual controller input and captures his rendered frame. - Arkham Knight is the host. A proxy DLL (
dinput8.dll) drives Batman as a hidden puppet at Spider-Man's position, mirrors his camera and draws the captured frame in Batman's place. - Shared memory joins them. The two DLLs exchange state in a shared block with sequence-locked slots. Coordinates are converted between Arkham's Unreal Engine 3 units (Z up, centimeters) and Spider-Man's (Y up, meters).
- A streamer builds the city.
gotham_stream.pyfollows the hero, asks Arkham for 50 m tile scans, builds Havok collision tiles and swing hints from Gotham's geometry and grapple points, and sends them to Spider-Man. Per Dexerto, the buildings sit about 2 km above New York in his physics world. - Zips use Arkham's grapple points. Holding L2 and R2 zips to a point, and releasing both perches on it.
- Combat is handed to Arkham. When Arkham's own combat check says a fight started, Spider-Man is pinned to Batman's position and copies his pose each frame. Control returns two seconds after the fight ends.
The reverse engineering tools
The tools folder is where the reverse engineering lives. Its README lists helpers that do the following:
- Export PE structure, MSVC runtime type information and strings from an executable.
- Read the Unreal Engine 3 native function table and map entries to function addresses.
- Find functions that reference strings matching a pattern, list the direct callers of a function, and disassemble functions with hints for strings, vtables and native names.
- Sample Spider-Man's motion and probe both skeletons. His joint hierarchy was not stored anywhere the mod could find, so it was worked out from recorded motion, then retargeted onto Batman's skeleton for fights.
- Provide offline stand-ins for either game and debugging viewers.
A recon_dll folder holds the passive probes used at the start, and phase notes (PHASE0, PHASE1, PHASE2) record findings with addresses. The tools README says what each script does, not how the author used it. Treat the scripts as a template for the layers a project like this needs, not as a record of a session.
What went wrong
The README's known issues double as a list of where the approach strains:
- Arkham's building collision is often hollow, so thin spires and narrow buildings can be swung through.
- Fast swings into districts Arkham has not loaded leave gaps for a few seconds until the tile is rescanned.
- A zip with a blocked path is cut short and Spider-Man drops, because there is no line-of-sight check.
- Spider-Man can look dark, since his lighting follows New York's time of day.
- Combat copies no hand or wrist movement, the camera cuts at fight boundaries, and the pose transfer only works with the suit it was recorded with.
- Arkham autosaves while Batman is the puppet, so the README says to back up saves, and the host refuses to move Batman far below the streets.
Reaction was mixed. ResetEra posters pointed out that Spider-Man draws in front of geometry and subtitles, some called it an overlay rather than a true merge of two games, and several objected to AI-driven modding in general. Moderators moved the discussion to the site's AI thread. That is community opinion, not a technical finding.
Results
- It works end to end, and the author calls it a research project with rough edges.
- The README shows 167 stars and 16 forks at capture. Our record marks it as source available, with repro steps and independently verified.
- The agent's text command files are read within half a second, according to the README.
- It is for offline play only, and it ships no game files.
What you can reuse
- Split the problem into host and guest. Letting one game keep its own physics and rendering avoided rewriting either engine.
- Write a thin shared protocol. Shared memory, versioned slots and explicit unit conversion keep two codebases from drifting apart.
- Build small scripts for each question. Strings, callers, disassembly and type information as separate scripts give an agent concrete tools to call and results to log.
- Recover what is not stored by recording it. Skeleton data was inferred from sampled motion rather than found.
- Keep an agent-readable install guide.
AGENTS.mdandCLAUDE.mdin the repository let a user say "Let's play ArkWeb" and get a working setup. - Write your known issues down early. They make the next fix obvious.
Related reading: the game decompilation topic, Claude reverse engineering projects, the models page, and Where AI goes wrong in reverse engineering.
