mirror of
https://github.com/vladtrc/iw4L
synced 2026-10-26 02:11:39 -04:00
Document the prebuilt Windows release and ship it without a descriptor
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -17,8 +17,19 @@ Explore maps, fight bots, and record and replay demos. Gameplay remains incomple
|
||||
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.
|
||||
APIs, configuration, caches and the wire protocol change between commits;
|
||||
multiplayer peers must run the same build.
|
||||
|
||||
## Windows: prebuilt release
|
||||
|
||||
1. Download `iw4l-windows.zip` from [Releases](../../releases) and extract it into an
|
||||
empty writable folder. The archive password is `contextrot`.
|
||||
2. Next to `iw4l.exe`, add a Windows shortcut to your MW2 installation folder.
|
||||
3. Launch `iw4l.exe`.
|
||||
|
||||
For online play, put the `.iw4l-server` file you received from a server operator next
|
||||
to `iw4l.exe`. With it the game finds that master and updates itself on launch. Details:
|
||||
[Windows guide](docs/WINDOWS.md).
|
||||
|
||||
## Build and run
|
||||
|
||||
@@ -26,7 +37,7 @@ Install Rust through rustup and GNU Make. [Build dependencies](docs/BUILD.md) co
|
||||
Linux's C/C++ toolchain and system libraries, and macOS's Xcode command line tools.
|
||||
[Windows instructions](docs/WINDOWS.md) cover building and arranging a portable folder.
|
||||
|
||||
You need your own installed MW2 Multiplayer data, including `common_mp.ff`. IW4L
|
||||
You need your own installed MW2 Multiplayer data. 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](docs/RUN.md).
|
||||
|
||||
+1
-1
@@ -79,7 +79,7 @@ make map mp_boneyard IW4L_MASTER_HOST_NAME='Friday match' IW4L_MASTER_MAX_PLAYER
|
||||
```
|
||||
|
||||
Other players open `make menu` and select the room. Master networking needs
|
||||
MW2 multiplayer data (`common_mp.ff`); it is disabled during demo replay.
|
||||
MW2 multiplayer data; it is disabled during demo replay.
|
||||
|
||||
When a setting appears in more than one place:
|
||||
|
||||
|
||||
+6
-3
@@ -1,6 +1,9 @@
|
||||
# Portable Windows folder
|
||||
|
||||
`make launcher windows` creates `dist/windows/iw4l-windows-{dev,prod}.zip`.
|
||||
Players download `iw4l-windows.zip` from the GitHub release; it holds the executable
|
||||
and licences. A server operator hands out the `.iw4l-server` descriptor separately.
|
||||
`make release prod|dev` also writes `iw4l-windows-{dev,prod}.zip` with the descriptor
|
||||
included, and `make launcher windows` writes the same pair under `dist/windows/`.
|
||||
The archive password is `contextrot`. Extract into a dedicated writable folder:
|
||||
|
||||
```text
|
||||
@@ -15,8 +18,8 @@ IW4L/
|
||||
```
|
||||
|
||||
Add ordinary Windows shortcuts to installed title folders or executables.
|
||||
MW2 multiplayer data (`zone/**/common_mp.ff`) is required for the menu;
|
||||
BO1 and MW3 are optional. The runtime reads those installations.
|
||||
MW2 multiplayer data is required for the menu; BO1 and MW3 are optional.
|
||||
The runtime reads those installations.
|
||||
|
||||
Launch `iw4l.exe`. Before starting the game or contacting QUIC, it checks its
|
||||
community's HTTPS manifest. An unchanged executable starts normally. An update
|
||||
|
||||
@@ -399,7 +399,10 @@ pub fn prepare(root: &Path, env: &Env, channel: Channel, profile: &str) -> Res<P
|
||||
player_archive(
|
||||
&dest.join("client"),
|
||||
&dest.join(format!("iw4l-windows-{channel}.zip")),
|
||||
true,
|
||||
)?;
|
||||
// The GitHub download: the descriptor names the master, which stays private.
|
||||
player_archive(&dest.join("client"), &dest.join("iw4l-windows.zip"), false)?;
|
||||
println!("release.done path=dist/releases/{channel}/{release_id}");
|
||||
Ok(dest)
|
||||
}
|
||||
@@ -439,14 +442,17 @@ pub fn bundles(root: &Path, env: &Env, profile: &str) -> Res<()> {
|
||||
&community(channel, &host, &ca_cert)?,
|
||||
)?;
|
||||
let archive = out.join(format!("iw4l-windows-{channel}.zip"));
|
||||
player_archive(&stage, &archive)?;
|
||||
player_archive(&stage, &archive, true)?;
|
||||
println!("[windows] {channel} archive: {}", archive.display());
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn player_archive(stage: &Path, archive: &Path) -> Res<()> {
|
||||
let mut names = vec!["iw4l.exe", "community.iw4l-server"];
|
||||
fn player_archive(stage: &Path, archive: &Path, descriptor: bool) -> Res<()> {
|
||||
let mut names = vec!["iw4l.exe"];
|
||||
if descriptor {
|
||||
names.push("community.iw4l-server");
|
||||
}
|
||||
names.extend(LEGAL_FILES.iter().map(|(_, to)| *to));
|
||||
let files = names
|
||||
.into_iter()
|
||||
|
||||
Reference in New Issue
Block a user