ArkWeb README

The project's README from github.com/luki-1/ArkWeb. As one markdown file: README.md.

ArkWeb

https://www.youtube.com/watch?v=O6Mkm_NGCX8

Spider-Man's web swinging in Batman: Arkham Knight's Gotham.

Set it up with Claude (no technical knowledge needed)

You don't build or configure anything yourself: Claude does it on your PC and explains each step. You need both games on Steam, a controller, and a PC that can run both games at once.

  1. Download the Claude desktop app from claude.ai/download, install it and sign in. (The part of Claude that can work on your PC, Claude Code, comes with Claude's paid plans.)
  2. Make an empty folder for the mod, for example a folder called ArkWeb in your Downloads.
  3. In the Claude app, open the Code tab, start a new session and choose that folder.
  4. Copy this message, paste it into Claude and send it:
    Download https://github.com/luki-1/ArkWeb into this folder, then follow
    its AGENTS.md: set ArkWeb up for me and guide me through my first session.
    
  5. Claude asks before it does anything on your PC. Allow its requests, and do what it asks you to do when it asks. It will:
    • check that both games are installed and that Spider-Man is version 4.0630, the only version ArkWeb works with
    • install the free tools it needs to build the mod
    • build the mod, ask you to close both games, install it, and back up your Arkham Knight save
    • tell you which game settings to change
    • walk you through your first session: what to load, where to stand, when to start moving, and the controls

To play again later, open the Claude app, start a new session in the Code tab with the same ArkWeb folder, and say "Let's play ArkWeb". While you play, just tell Claude what's wrong, like "I'm stuck in a building", "Spider-Man looks dark" or "I can see Batman". To remove the mod, say "Uninstall ArkWeb".

Spider-Man stuck inside a building? Just tell your AI agent to teleport you 200 m into the air.

For the agent: write the line hero tp 0 200 0 to logs\sm_cmd.txt (meters relative to Spider-Man; the second number is up). The guest DLL runs it within half a second and logs teleport ... held to logs\sm_guest.log.

Other AI agents that can work on your PC (Codex, Cursor and the like) can follow the same guide.

What it is

ArkWeb runs Marvel's Spider-Man Remastered alongside Batman: Arkham Knight. You play Spider-Man's own movement (swinging, wall running, wall crawling, point launches) with a controller while looking at Arkham Knight. Gotham's collision is streamed into Spider-Man's physics world, so he swings off and runs on Gotham's buildings. His own rendered frame is cut out and drawn into Arkham's view in Batman's place.

The architecture follows SkyCraft: a hidden guest game drives the moveset, and the host game shows it.

Status: experimental. It works end to end but is a research project with rough edges. See the known issues below.

How it works

Part What it does
src/sm_guest/ → winmm.dll in Spider-Man Publishes the hero and camera, plays a virtual controller, fakes window focus, and builds Gotham's collision (Havok compressed meshes) about 2 km above New York so New York's own ledges are out of reach. It also patches the hero's transition manager for zip-to-point and perching, and captures Spider-Man's frame (D3D12) for the host.
src/ak_host/ → dinput8.dll in Arkham Knight Drives Batman as a hidden puppet at Spider-Man's position, mimics Spider-Man's camera, and draws the captured frame (D3D11). It also scans Gotham with the game's own traces and exports its PhysX statics and grapple points.
protocol/, src/common/ Shared-memory link (Local\ArkWeb_v1): seqlock state slots, rings and coordinate conversion (UE3 Z-up cm ↔ Spider-Man Y-up m)
tools/gotham_stream.py The streamer. It follows the hero, asks Arkham for tile scans (50 m tiles) and PhysX exports, builds collision tiles and swing hints, and sends them to Spider-Man.
tools/ (others) Reverse-engineering helpers (PE, RTTI, strings, disassembly, xrefs), offline fakes of either game, debugging viewers

Zip to point uses Arkham's grapple points as targets (L2 + R2, with a marker drawn in Arkham's view). With nothing pressed, Spider-Man perches on the point. A jumps or launches off; B drops.

Combat

When Arkham says Batman is fighting (its own IsInCombat check), the mod hands the fight to Arkham Knight automatically, and hands it back two seconds after the fight ends:

Spider-Man's joint hierarchy isn't stored anywhere the mod could find, so it was worked out from recorded motion (tools/sm_pose_sampler.py, tools/sm_skel_probe.py, tools/ak_skel_probe.py). tools/retarget_v2.py is the same pose transfer in Python, for checking it offline.

Requirements

Build and install

  1. Edit the game paths in install.bat and uninstall.bat.
  2. Run build.bat. It builds both DLLs and the link test into bin\, at low priority on one core.
  3. Close both games, then run install.bat. uninstall.bat removes the DLLs again.

arkweb.ini next to either DLL can override [ArkWeb] LogDir= and a few switches (see PHASE1.md). Logs go to logs\.

Pro Tip: Just tell your AI agent to do it for you

For the agent: AGENTS.md walks you through checking the setup, building, installing, and guiding the player.

Playing

  1. Start both games and load into the open world in each. Keep Arkham Knight in front.
  2. Stand still with Spider-Man, then start the streamer: cd tools and python gotham_stream.py. It waits for both games, builds the area around you and lifts Spider-Man onto Gotham.
  3. Play with the controller. If you restart the streamer while still in game, use --resume.

Your Arkham Knight save follows Batman. Arkham autosaves while Batman is the puppet, so don't leave Spider-Man under the map. The host refuses to move Batman far below the streets, and tp x y z (feet, UU) in logs\ak_cmd.txt moves Batman back to a safe spot.

Live commands

Write one command per line to logs\sm_cmd.txt (Spider-Man) or logs\ak_cmd.txt (Arkham Knight). Results go to logs\sm_guest.log and logs\ak_host.log.

Game Examples
Spider-Man hero tp 0 200 0, zip status, zip perch on|off, gotham stream status, gotham surface <hex>, cap status
Arkham Knight tp x y z, batman hide|show|auto, overlay on|off, overlay gamma <g>, shot, cam mimic on|off, px info

Known issues

Repository layout

Path Contents
src/, protocol/ The two DLLs and the shared link
tools/ The streamer and reverse-engineering scripts (tools/README.md)
tests/ Offline link test
recon/PHASE0*.md, PHASE1.md, PHASE2.md Findings and phase notes, with addresses
recon_dll/ The passive recon probes used at the start

Not included: logs/, build output, and the raw dumps of the game executables (strings, RTTI, the UE3 SDK, disassembly). The scripts in tools/ regenerate those from your own copies of the games.

Disclaimer

An unofficial fan project, not affiliated with Insomniac Games, Nixxes, Sony Interactive Entertainment, Rocksteady Studios or Warner Bros. Games. It contains no game files; you need your own copies of both games.

ArkWeb (luki-1/ArkWeb)

Searching Database…

168 ·GitHub
这是什么?ArkWeb 是一个实验性的 Windows mod,让你用手柄使出《漫威蜘蛛侠 重制版》自身的移动方式(荡网、跑墙、爬墙、定点弹射),同时看到的却是《蝙蝠侠:阿卡姆骑士》的哥谭市——哥谭的碰撞体会流式送入蜘蛛侠的物理世界。
这是个独立游戏,还是现有游戏的 mod?它是一个 DLL 注入 mod,同时运行两款已有的 Steam 游戏:蜘蛛侠里隐藏的 guest DLL 驱动主角的移动和物理,阿卡姆骑士里的 host DLL 渲染捕获的画面并暗中操纵蝙蝠侠,两者通过共享内存连接。
怎么让它跑起来?你可以让 Claude Code 在一个空项目文件夹里自动完成配置(它会检查安装情况、构建、安装 mod 并引导你的第一次会话),也可以手动操作:修改 install.bat/uninstall.bat 里的游戏路径,运行 build.bat 构建 DLL,再运行 install.bat。
除了两款游戏和手柄,还需要什么?一台能同时运行两款游戏的电脑、带 Windows 10 SDK 的 Visual Studio 2019 Build Tools(x64 C++),以及装有 numpy、scipy、numba、pefile 和 capstone 的 Python 3.12(碰撞流工具需要)。
碰撞流总是能完美工作吗?不能,这是一个有粗糙之处的实验性研究项目:阿卡姆的建筑碰撞体常常是空心的,所以细尖塔和狭窄建筑仍可能被荡穿;快速荡进未加载的城区会出现暂时的空隙;战斗姿态迁移只对录制时所用的那套战衣骨架有效。
它对任意版本的《漫威蜘蛛侠 重制版》都有效吗?不能,它只 hook Steam 上的 Marvel's Spider-Man Remastered v4.0630,因为所有地址都绑定在那个特定构建上;其他构建会拒绝注入。
蝙蝠侠开始战斗时,战斗是怎么运作的?当阿卡姆检测到蝙蝠侠在战斗时,会自动接管,使用它自己的 freeflow 战斗和镜头,同时蜘蛛侠被钉在蝙蝠侠的位置上,并逐帧重摆姿态以匹配他的骨架;战斗结束后两秒,控制权交还给蜘蛛侠。
怎么弹射到抓钩点?Zip-to-point 功能用 L2+R2 瞄准阿卡姆自带的抓钩点,并在阿卡姆画面中显示一个标记;不按任何键时蜘蛛侠蹲在点上,A 键弹射起飞,B 键让他落下。
ArkWeb 的双游戏架构灵感来自哪里?「隐藏的 guest 驱动招式、宿主游戏负责呈现」的架构沿用了 SkyCraft mod 项目的方法。
卡住了可以把蜘蛛侠传送走吗?可以,往 logs\smcmd.txt 写入一行类似 'hero tp 0 200 0' 的命令,半秒内就会把他传送过去,他卡进建筑里时很好用。
Creator
luki-1
Size
0.3 MB
Stars
168
Updated
CommitOct 03
Age
16d
Commits · 90 Days