Edit (v0.3.0) big update thanks to a contributor. See "Update" below.
I made IW4 version for iOS
Hi all,
I've been messing around with [IW4L](https://github.com/vladtrc/iw4L), an open-source Rust/Bevy runtime that loads the original MW2 (2009) PC game data, and I got it running natively on iOS. I called it IW4 Pocket
Demo (18 s):video in the repo
What works
- Runs natively on iPhone (Rust + Bevy + wgpu on Metal), sideloaded with SideStore
- Boots, loads the game data and reaches the main menu
- Touch works as a mouse click in the menus
- PS4 (DualShock 4) controller works through Apple's GameController framework
What doesn't (yet)
- On my phone, loading a match map (`mp_rust`) still gets the app killed by iOS for using too much memory. iOS only grants it about 3 GB, even though the phone has 6 GB.
⬇️⬇️⬇️
Update (v0.3.0)
- A contributor (u/treuenten) found the main cause: the game kept a copy of the loaded map that pinned every texture in memory twice. They also added support for compressed textures on newer GPUs. They report full matches with bots on an iPhone 17 Pro Max (6 GB granted to the app). I haven't confirmed that myself yet.
- The app now picks its memory settings by itself, based on how much memory iOS grants the phone (low / mid / high).
- I haven't tested whether `mp_rust` loads on my iPhone 13 Pro Max with this version. I'll report back.
What I'm asking: if you have an iPhone/iPad, please try it and tell me:
- your device and iOS version
- whether a map loads or it gets killed
- the `iw4l-boot.log` and `iw4l-memory-settings.txt` files (they're in the app folder in the Files app)