mirror of
https://github.com/vladtrc/iw4L
synced 2026-10-25 18:05:19 -04:00
8798519c32
The macOS surface workaround ran before Bevy 0.20 applied the window extraction commands, so the first pipelined frame still created the Metal surface on the render thread and panicked. Applying them first lets pipelining run, and a frame latency of two stops the render thread waiting on the display before every frame; with a latency of one pipelining gains nothing. Apple M4 Pro, mp_rust, 8 bots, bench recorder, 3456x2168 fullscreen: uncapped 95 -> 238 fps (frame p95 12.9 -> 7.0 ms); vsync on 71 fps alternating between 60 and 120 -> steady 120 (p95 20.5 -> 8.7 ms). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
49 lines
2.1 KiB
Markdown
49 lines
2.1 KiB
Markdown
# Build dependencies
|
|
|
|
Rust stable via rustup (`rust-toolchain.toml` pins it), plus a C toolchain
|
|
and the Bevy system libs. IW4L enables both `x11` and `wayland`
|
|
(`Cargo.toml`), so the Wayland headers stay required. Gamepad input and
|
|
rumble (`bevy_gilrs`) link libudev, so the udev headers (`systemd-devel` /
|
|
`libudev-dev`) are required too.
|
|
|
|
```bash
|
|
# Fedora
|
|
sudo dnf install gcc-c++ pkgconf-pkg-config libX11-devel alsa-lib-devel systemd-devel wayland-devel libxkbcommon-devel
|
|
|
|
# Debian / Ubuntu
|
|
sudo apt install g++ pkg-config libx11-dev libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev
|
|
|
|
# Arch / Manjaro
|
|
sudo pacman -S gcc pkgconf libx11 alsa-lib systemd wayland libxkbcommon libxcursor libxrandr libxi
|
|
```
|
|
|
|
Upstream list (other distros, GPU Vulkan drivers): Bevy
|
|
[`linux_dependencies.md`](https://github.com/bevyengine/bevy/blob/main/docs/linux_dependencies.md).
|
|
|
|
What is **not** needed for a native Linux build: `clang` / `llvm` / `lld` /
|
|
`glibc-static` — plain `gcc-c++` links it. `llvm` (the `llvm-lib` tool) is
|
|
only required for the Windows cross build:
|
|
|
|
```bash
|
|
sudo dnf install llvm # Fedora: provides llvm-lib
|
|
make setup-windows # rustup target + cargo-xwin, once
|
|
```
|
|
|
|
macOS needs only the Xcode command line tools (`xcode-select --install`)
|
|
and rustup: winit, wgpu (Metal), CoreAudio and gilrs link system frameworks,
|
|
and the `x11` / `wayland` features compile to nothing. Menu and
|
|
`make map mp_boneyard` run on Apple silicon (M2 Max, M4 Pro, Metal). Rendering
|
|
is pipelined with a frame latency of 2 there; `IW4L_PIPELINED_RENDERING=0` and
|
|
`IW4L_FRAME_LATENCY=1` restore the serialised arm.
|
|
Game data: the Windows depot of a Steam copy, `steamcmd
|
|
+@sSteamCmdForcePlatformType windows +force_install_dir ~/Games/MW2 +login
|
|
<user> +app_update 10190 +quit`, then `IW4L_GAMES=~/Games`.
|
|
|
|
Then follow `README.md` (Build and run): copy `.env.example`, set
|
|
`IW4L_GAMES`, `make map mp_boneyard`. Portable Windows is
|
|
[`WINDOWS.md`](WINDOWS.md).
|
|
|
|
Match metadata uses the Git commit count as its numeric build number. Release
|
|
builders can set `IW4L_BUILD_NUMBER`; source archives need this variable. The
|
|
package version remains the textual build version.
|