neptune af8ee254c1 Add Black Ops II weapons, native T6 shaders and Game Folders
T6 (Black Ops II) weapons load from the BO2 install beside MW2 and play
with their own models, materials, animations, sounds and icons, standing
in for an MW2 weapon row for gameplay.

- fastfile_t6: T6 zone walking and weapon views; IPak/SAB image and sound
  sources in asset_transport.
- dxbc_sm5: DX11 shader bytecode lowered to WGSL, so T6 materials draw
  with their own technique sets (t6_techset, dxbc_abi).
- Materials: borrowed draw states come from the stand-in's opaque body,
  never a lens; colour-map alpha (the camo mask) reads as one on opaque
  surfaces; specular and probe reflection scaled for IW4 lighting; maps
  named by another kind's samplers fall back to the same-role map.
- Dual wield (`X_dw` + `X_lh`) through the shared secondary-gun viewmodel,
  and the `dw` attachment from T6's attachment table.
- Melee: guns without their own melee clip (and pistols, whose clip is the
  tactical knife's) borrow knife_mp's knife and swings; the hip ADS layer
  returns after a melee.
- T6 clip names match case-insensitively.
- Game Folders option for BO1/MW3/BO2 installs, multi-game lookup fixes,
  clean exit, crosshairs, save/load/loadspawn console commands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 15:56:23 -04:00
2026-09-13 13:52:33 +03:00
2026-09-13 13:52:33 +03:00
2026-09-13 13:52:33 +03:00
2026-09-13 13:52:33 +03:00
2026-09-13 13:52:33 +03:00
2026-09-13 13:52:33 +03:00
2026-09-13 13:52:33 +03:00
2026-09-13 13:52:33 +03:00
2026-09-13 13:52:33 +03:00

IW4L

IW4L is an open-source runtime for Call of Duty: Modern Warfare 2 (2009), written in Rust with Bevy. Point it at a copy of MW2 you already own and it loads that installation's maps, models, textures and weapons into its own engine. You can try implemented movement and combat on multiplayer maps, then inspect or change how those systems work.

Bomb planting in IW4L Tanker explosion in IW4L

What you can try

Explore maps, fight bots, and record and replay demos. Gameplay remains incomplete; expect missing behavior, bugs and desyncs. The asset readers also cover MW3 and Black Ops.

Build from source. APIs, configuration, caches and the wire protocol change between commits; multiplayer peers must run the same commit.

Build and run

Install Rust through rustup and GNU Make. Build dependencies cover Linux's C/C++ toolchain and system libraries, and macOS's Xcode command line tools. Windows instructions cover building and arranging a portable folder.

You need your own installed MW2 Multiplayer data, including common_mp.ff. IW4L distributes no game assets and reads installations without patching or replacing their files. Caches, demos and logs go under iw4l-artifacts/; Linux settings use a separate configuration directory described in the run guide.

From the repository root:

cp .env.example .env
# Edit .env: set IW4L_GAMES to the folder containing your game installations.
make map mp_boneyard CMDS='wait world; spawn 0; force_match_start; bot add 3'

This builds the optimized play profile and starts a local match with three bots. force_match_start skips the warmup that otherwise freezes movement.

Inside the engine

Area Implementation
Assets Native FastFile readers convert game data into a shared intermediate representation.
Shaders Retail Direct3D 9 Shader Model 3 bytecode is translated to WGSL.
Rendering World geometry, models and effects feed one sorted draw-surface list.
Simulation Server authority, client prediction and replay share one simulation step over explicit Bevy ECS state.
Networking Custom UDP traffic; a QUIC master provides browsing and relaying. The host simulates the match.

Where to go next

This whole project is written by an LLM.

Acknowledgements and license

OpenAssetTools and its iw4x-x64 fork informed asset layouts; IW4x informed asset and protocol behavior; KisakCOD informed engine structure. Ghidra was used to inspect the original binaries.

IW4L's source is licensed under Apache 2.0. Preserve required attribution and bundled font license texts when redistributing; see NOTICE. Original game assets and trademarks belong to their owners. IW4L is unaffiliated with them.

S
Description
No description provided
Readme Apache-2.0 21 MiB
Languages
Rust 99.3%
Common Lisp 0.5%
Makefile 0.1%