FWGS/xash3d-fwgs
GitHub: FWGS/xash3d-fwgs
Xash3D FWGS 是一个跨平台的开源游戏引擎,兼容并扩展 Half-Life 引擎,让玩家和开发者能在现代设备和操作系统上运行及开发经典游戏和 Mod。
Stars: 2379 | Forks: 384
# Xash3D FWGS 引擎
[](https://github.com/FWGS/xash3d-fwgs/actions/workflows/c-cpp.yml) [](https://cirrus-ci.com/github/FWGS/xash3d-fwgs) \
[](http://xash.su/discord/) [](https://t.me/flyingwithgauss) \
[](https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous)
Xash3D ([发音](https://ipa-reader.com/?text=ks%C9%91%CA%82) `[ksɑʂ]`) FWGS 是一个游戏引擎,旨在提供与 Half-Life 引擎的兼容性并对其进行扩展,同时为游戏开发者提供熟知的工作流。
Xash3D FWGS 是由 Unkle Mike 开发的原始 [Xash3D 引擎](https://www.moddb.com/engines/xash3d-engine) 的深度修改分支。
## 分支特性
* 支持 Steam 版 Half-Life (HLSDK 2.5)。
* 跨平台和现代编译器支持:支持 Windows、Linux、BSD 和 Android,适用于 x86 和 ARM 架构,以及[更多平台](Documentation/ports.md)。
* 更好的多人游戏体验:多个主服务器、无头专用服务器、语音聊天、[GoldSrc 协议支持](Documentation/goldsrc-protocol-support.md)以及 IPv6 支持。
* 支持多种渲染器:OpenGL、GLESv1、GLESv2 和软件渲染。
* 高级虚拟文件系统:支持 `.pk3` 和 `.pk3dir`,兼容 GoldSrc FS 模块,跨平台的快速大小写不敏感模拟。
* Mobility API:在移动设备上提供更好的游戏集成(振动、触摸控制)。
* 不同的输入方式:除鼠标和键盘外,还支持触摸和手柄。
* TrueType 字体渲染,作为 mainui_cpp 的一部分。
* 外部 VGUI 支持模块。
* 支持 PNG 和 KTX2 图像格式。
* 支持 Ogg Vorbis (`.ogg`) 和 Ogg Opus (`.opus`) 音频格式。
* [一系列小改进](Documentation/),且不破坏兼容性。
## 安装与运行
0. 获取 Xash3D FWGS 二进制文件:你可以使用[测试](https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous)构建版本,也可以从源代码编译引擎。
1. 将引擎二进制文件复制到某个目录。
2. 将 [Half-Life](https://store.steampowered.com/app/70/HalfLife/) 中的 `valve` 目录复制到包含引擎二进制文件的目录中。
如果你的 CPU 不是 x86 兼容的,或者你运行的是 64 位版本的引擎,你可能需要编译 [Half-Life SDK](https://github.com/FWGS/hlsdk-portable)。
此仓库包含我们的 HLSDK 分支以及恢复的 Half-Life 资料片和一些 Mod 的源代码。
你仍然需要复制 `valve` 目录,因为所有游戏资源都位于该目录中。
3. 运行主可执行文件(`xash3d.exe` 或 AppImage)。
如需更多信息,请使用 `-help` 命令行参数运行 Xash3D。
### Android
0. 安装 APK 文件。
1. 将 `valve` 目录复制到内部存储中名为 `xash` 的文件夹中。
2. 在应用内运行游戏。
## 问题反馈
* 接受英语和俄语的问题反馈。
* 只有在你运行合法获取的产品(例如 Steam 上的 Half-Life)时,才会接受反馈。
## 构建说明
我们使用 Waf 构建系统。如果你有一些与 Waf 相关的问题,我建议你阅读 [Waf Book](https://waf.io/book/)。
**注意:切勿使用 GitHub 的 ZIP 压缩包。GitHub 不包含我们使用的外部依赖项!**
### 前置条件
如果你的 CPU 是 x86 兼容的,并且你使用的是 Windows 或 Linux,我们默认构建 32 位代码。这是为了保持与 Steam 版 Half-Life 及基于其引擎的游戏的兼容性。
即使 Xash3D FWGS 支持目标为 64 位,你也无法在不从源代码重新编译的情况下加载游戏!
如果你的 CPU 不是 x86 兼容的,或者你决定构建 64 位版本的引擎,你可能需要编译 [Half-Life SDK](https://github.com/FWGS/hlsdk-portable)。
此仓库包含我们的 HLSDK 分支以及恢复的 Half-Life 资料片和一些 Mod 的源代码。
#### Windows (Visual Studio)
* 安装 Visual Studio。
* 安装最新版的 [Python](https://python.org) **或者** 如果你安装了 Chocolatey,运行 `cinst python.install`。
* 安装最新版的 [Git](https://git-scm.com/download/win) **或者** 如果你安装了 Chocolatey,运行 `cinst git.install`。
* 下载 [SDL2](https://libsdl.org/download-2.0.php) 的 Visual Studio 开发包。
* 克隆此仓库:`git clone --recursive https://github.com/FWGS/xash3d-fwgs`。
* 确保你至少有 12GB 的可用空间来存储所有构建时依赖项:Visual Studio 约 10GB,Git 约 300MB,Python 和其他约 100MB。
#### GNU/Linux
##### Debian/Ubuntu
* 仅适用于 64 位 x86 操作系统上的 32 位引擎:
* 在你的系统上启用 i386:`$ sudo dpkg --add-architecture i386`。
* 安装 `aptitude` ([为什么?](https://github.com/FWGS/xash3d-fwgs/issues/1828#issuecomment-2415131759)):`$ sudo apt update && sudo apt upgrade && sudo apt install aptitude`
* 安装开发工具:`$ sudo aptitude --without-recommends install git build-essential gcc-multilib g++-multilib libsdl2-dev:i386 libfreetype-dev:i386 libopus-dev:i386 libbz2-dev:i386 libvorbis-dev:i386 libopusfile-dev:i386 libogg-dev:i386`。
* 设置 PKG_CONFIG_PATH 环境变量以指向 32 位库:`$ export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig`。
* 对于 64 位 x86 系统上的 64 位引擎和其他非 x86 系统:
* 安装开发工具:`$ sudo apt install git build-essential python libsdl2-dev libfreetype6-dev libopus-dev libbz2-dev libvorbis-dev libopusfile-dev libogg-dev`。
* 克隆此仓库:`$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`。
##### RedHat/Fedora
* 仅适用于 64 位 x86 操作系统上的 32 位引擎:
* 安装开发工具:`$ sudo dnf install git gcc gcc-c++ glibc-devel.i686 SDL3-devel.i686 sdl2-compat-devel.i686 opus-devel.i686 freetype-devel.i686 bzip2-devel.i686 libvorbis-devel.i686 opusfile-devel.i686 libogg-devel.i686`。
* 设置 PKG_CONFIG_PATH 环境变量以指向 32 位库:`$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig`。
* 对于 64 位 x86 系统上的 64 位引擎和其他非 x86 系统:
* 安装开发工具:`$ sudo dnf install git gcc gcc-c++ SDL3-devel sdl2-compat-devel opus-devel freetype-devel bzip2-devel libvorbis-devel opusfile-devel libogg-devel`。
* 克隆此仓库:`$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`。
#### Android (Windows/Linux/macOS)
* 安装 [Android Studio](https://developer.android.com/studio)(或命令行工具)。
* 安装 [Python](https://python.org)(至少 2.7,最新版更好)。
* 安装 [Git](https://git-scm.com/download/win)。
* 安装 [Ninja](https://ninja-build.org/)。
* 安装 [CMake](https://cmake.org/)(用于某些依赖项)。
* 克隆此仓库:`$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`。
#### iOS/iPadOS
* 从 App Store 安装 Xcode。
* 安装 [Homebrew 包管理器](https://brew.sh)。
* 通过运行以下命令安装构建依赖项:`brew install python`。
* 克隆 SDL2 仓库 `$ git clone --recursive https://github.com/libsdl-org/SDL.git -b SDL2` 并通过导航到 SDL/Xcode/SDL 打开 Xcode 项目来编译 iOS framework。
* 克隆此仓库:`$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`。
### 构建
#### Windows (Visual Studio)
0. 打开命令行。
1. 导航到 `xash3d-fwgs` 目录。
2. (可选)查看可用的构建选项:`waf --help`。
3. 配置构建:`waf configure --sdl2=c:/path/to/SDL2`。
4. 编译:`waf build`。
5. 安装:`waf install --destdir=c:/path/to/any/output/directory`。
#### Linux
如果在 amd64 上编译 32 位,请确保上一步中的 `PKG_CONFIG_PATH` 设置正确,然后再运行 configure。
0. (可选)查看可用的构建选项:`./waf --help`。
1. 配置构建:`./waf configure`(如果在 64 位 x86 处理器上编译 64 位引擎,你需要传递 `-8` 参数)。
2. 编译:`./waf build`。
3. 安装:`./waf install --destdir=/path/to/any/output/directory`。
#### Android (Windows/Linux/macOS)
要进行构建,你需要将 `SDL2` 分支的 [SDL](https://github.com/libsdl-org/SDL) 和 `mobile-hacks` 分支的 [HLSDK-portable](https://github.com/FWGS/hlsdk-portable) 仓库克隆到 3rdparty 文件夹中,之后你应该能够从 `android` 目录在 Android Studio 中打开项目,或者手动调用 Gradle 来构建 APK。
#### iOS/iPadOS (仅限 MacOS)
0. (可选)查看可用的构建选项:`./waf --help`。
1. 配置构建:`./waf configure --ios --enable-bundled-deps --sdl2 (path/to/SDL2.framework)`,如果你想为模拟器构建,请设置 `--ios-simulator` 而不是 `--ios`。
2. 编译 `./waf build`。
3. 导航到 `build` 并将你编译好的 SDL2.framework 复制到那里,然后将你的客户端 dylibs 添加到 `build/ios/cl_dlls`,并将任何其他 dylibs 添加到 `build/ios/dlls`(你也可以运行 `scripts/ios/buildhlsdk.sh` 来自动创建一个包含 hlsdk dylibs 的 ipa)
4. 运行 `scripts/ios/createipa.sh` 以创建一个可安装的 ipa
[](https://github.com/FWGS/xash3d-fwgs/actions/workflows/c-cpp.yml) [](https://cirrus-ci.com/github/FWGS/xash3d-fwgs) \
[](http://xash.su/discord/) [](https://t.me/flyingwithgauss) \
[](https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous)
Xash3D ([发音](https://ipa-reader.com/?text=ks%C9%91%CA%82) `[ksɑʂ]`) FWGS 是一个游戏引擎,旨在提供与 Half-Life 引擎的兼容性并对其进行扩展,同时为游戏开发者提供熟知的工作流。
Xash3D FWGS 是由 Unkle Mike 开发的原始 [Xash3D 引擎](https://www.moddb.com/engines/xash3d-engine) 的深度修改分支。
## 分支特性
* 支持 Steam 版 Half-Life (HLSDK 2.5)。
* 跨平台和现代编译器支持:支持 Windows、Linux、BSD 和 Android,适用于 x86 和 ARM 架构,以及[更多平台](Documentation/ports.md)。
* 更好的多人游戏体验:多个主服务器、无头专用服务器、语音聊天、[GoldSrc 协议支持](Documentation/goldsrc-protocol-support.md)以及 IPv6 支持。
* 支持多种渲染器:OpenGL、GLESv1、GLESv2 和软件渲染。
* 高级虚拟文件系统:支持 `.pk3` 和 `.pk3dir`,兼容 GoldSrc FS 模块,跨平台的快速大小写不敏感模拟。
* Mobility API:在移动设备上提供更好的游戏集成(振动、触摸控制)。
* 不同的输入方式:除鼠标和键盘外,还支持触摸和手柄。
* TrueType 字体渲染,作为 mainui_cpp 的一部分。
* 外部 VGUI 支持模块。
* 支持 PNG 和 KTX2 图像格式。
* 支持 Ogg Vorbis (`.ogg`) 和 Ogg Opus (`.opus`) 音频格式。
* [一系列小改进](Documentation/),且不破坏兼容性。
## 安装与运行
0. 获取 Xash3D FWGS 二进制文件:你可以使用[测试](https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous)构建版本,也可以从源代码编译引擎。
1. 将引擎二进制文件复制到某个目录。
2. 将 [Half-Life](https://store.steampowered.com/app/70/HalfLife/) 中的 `valve` 目录复制到包含引擎二进制文件的目录中。
如果你的 CPU 不是 x86 兼容的,或者你运行的是 64 位版本的引擎,你可能需要编译 [Half-Life SDK](https://github.com/FWGS/hlsdk-portable)。
此仓库包含我们的 HLSDK 分支以及恢复的 Half-Life 资料片和一些 Mod 的源代码。
你仍然需要复制 `valve` 目录,因为所有游戏资源都位于该目录中。
3. 运行主可执行文件(`xash3d.exe` 或 AppImage)。
如需更多信息,请使用 `-help` 命令行参数运行 Xash3D。
### Android
0. 安装 APK 文件。
1. 将 `valve` 目录复制到内部存储中名为 `xash` 的文件夹中。
2. 在应用内运行游戏。
## 问题反馈
* 接受英语和俄语的问题反馈。
* 只有在你运行合法获取的产品(例如 Steam 上的 Half-Life)时,才会接受反馈。
## 构建说明
我们使用 Waf 构建系统。如果你有一些与 Waf 相关的问题,我建议你阅读 [Waf Book](https://waf.io/book/)。
**注意:切勿使用 GitHub 的 ZIP 压缩包。GitHub 不包含我们使用的外部依赖项!**
### 前置条件
如果你的 CPU 是 x86 兼容的,并且你使用的是 Windows 或 Linux,我们默认构建 32 位代码。这是为了保持与 Steam 版 Half-Life 及基于其引擎的游戏的兼容性。
即使 Xash3D FWGS 支持目标为 64 位,你也无法在不从源代码重新编译的情况下加载游戏!
如果你的 CPU 不是 x86 兼容的,或者你决定构建 64 位版本的引擎,你可能需要编译 [Half-Life SDK](https://github.com/FWGS/hlsdk-portable)。
此仓库包含我们的 HLSDK 分支以及恢复的 Half-Life 资料片和一些 Mod 的源代码。
#### Windows (Visual Studio)
* 安装 Visual Studio。
* 安装最新版的 [Python](https://python.org) **或者** 如果你安装了 Chocolatey,运行 `cinst python.install`。
* 安装最新版的 [Git](https://git-scm.com/download/win) **或者** 如果你安装了 Chocolatey,运行 `cinst git.install`。
* 下载 [SDL2](https://libsdl.org/download-2.0.php) 的 Visual Studio 开发包。
* 克隆此仓库:`git clone --recursive https://github.com/FWGS/xash3d-fwgs`。
* 确保你至少有 12GB 的可用空间来存储所有构建时依赖项:Visual Studio 约 10GB,Git 约 300MB,Python 和其他约 100MB。
#### GNU/Linux
##### Debian/Ubuntu
* 仅适用于 64 位 x86 操作系统上的 32 位引擎:
* 在你的系统上启用 i386:`$ sudo dpkg --add-architecture i386`。
* 安装 `aptitude` ([为什么?](https://github.com/FWGS/xash3d-fwgs/issues/1828#issuecomment-2415131759)):`$ sudo apt update && sudo apt upgrade && sudo apt install aptitude`
* 安装开发工具:`$ sudo aptitude --without-recommends install git build-essential gcc-multilib g++-multilib libsdl2-dev:i386 libfreetype-dev:i386 libopus-dev:i386 libbz2-dev:i386 libvorbis-dev:i386 libopusfile-dev:i386 libogg-dev:i386`。
* 设置 PKG_CONFIG_PATH 环境变量以指向 32 位库:`$ export PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig`。
* 对于 64 位 x86 系统上的 64 位引擎和其他非 x86 系统:
* 安装开发工具:`$ sudo apt install git build-essential python libsdl2-dev libfreetype6-dev libopus-dev libbz2-dev libvorbis-dev libopusfile-dev libogg-dev`。
* 克隆此仓库:`$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`。
##### RedHat/Fedora
* 仅适用于 64 位 x86 操作系统上的 32 位引擎:
* 安装开发工具:`$ sudo dnf install git gcc gcc-c++ glibc-devel.i686 SDL3-devel.i686 sdl2-compat-devel.i686 opus-devel.i686 freetype-devel.i686 bzip2-devel.i686 libvorbis-devel.i686 opusfile-devel.i686 libogg-devel.i686`。
* 设置 PKG_CONFIG_PATH 环境变量以指向 32 位库:`$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig`。
* 对于 64 位 x86 系统上的 64 位引擎和其他非 x86 系统:
* 安装开发工具:`$ sudo dnf install git gcc gcc-c++ SDL3-devel sdl2-compat-devel opus-devel freetype-devel bzip2-devel libvorbis-devel opusfile-devel libogg-devel`。
* 克隆此仓库:`$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`。
#### Android (Windows/Linux/macOS)
* 安装 [Android Studio](https://developer.android.com/studio)(或命令行工具)。
* 安装 [Python](https://python.org)(至少 2.7,最新版更好)。
* 安装 [Git](https://git-scm.com/download/win)。
* 安装 [Ninja](https://ninja-build.org/)。
* 安装 [CMake](https://cmake.org/)(用于某些依赖项)。
* 克隆此仓库:`$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`。
#### iOS/iPadOS
* 从 App Store 安装 Xcode。
* 安装 [Homebrew 包管理器](https://brew.sh)。
* 通过运行以下命令安装构建依赖项:`brew install python`。
* 克隆 SDL2 仓库 `$ git clone --recursive https://github.com/libsdl-org/SDL.git -b SDL2` 并通过导航到 SDL/Xcode/SDL 打开 Xcode 项目来编译 iOS framework。
* 克隆此仓库:`$ git clone --recursive https://github.com/FWGS/xash3d-fwgs`。
### 构建
#### Windows (Visual Studio)
0. 打开命令行。
1. 导航到 `xash3d-fwgs` 目录。
2. (可选)查看可用的构建选项:`waf --help`。
3. 配置构建:`waf configure --sdl2=c:/path/to/SDL2`。
4. 编译:`waf build`。
5. 安装:`waf install --destdir=c:/path/to/any/output/directory`。
#### Linux
如果在 amd64 上编译 32 位,请确保上一步中的 `PKG_CONFIG_PATH` 设置正确,然后再运行 configure。
0. (可选)查看可用的构建选项:`./waf --help`。
1. 配置构建:`./waf configure`(如果在 64 位 x86 处理器上编译 64 位引擎,你需要传递 `-8` 参数)。
2. 编译:`./waf build`。
3. 安装:`./waf install --destdir=/path/to/any/output/directory`。
#### Android (Windows/Linux/macOS)
要进行构建,你需要将 `SDL2` 分支的 [SDL](https://github.com/libsdl-org/SDL) 和 `mobile-hacks` 分支的 [HLSDK-portable](https://github.com/FWGS/hlsdk-portable) 仓库克隆到 3rdparty 文件夹中,之后你应该能够从 `android` 目录在 Android Studio 中打开项目,或者手动调用 Gradle 来构建 APK。
#### iOS/iPadOS (仅限 MacOS)
0. (可选)查看可用的构建选项:`./waf --help`。
1. 配置构建:`./waf configure --ios --enable-bundled-deps --sdl2 (path/to/SDL2.framework)`,如果你想为模拟器构建,请设置 `--ios-simulator` 而不是 `--ios`。
2. 编译 `./waf build`。
3. 导航到 `build` 并将你编译好的 SDL2.framework 复制到那里,然后将你的客户端 dylibs 添加到 `build/ios/cl_dlls`,并将任何其他 dylibs 添加到 `build/ios/dlls`(你也可以运行 `scripts/ios/buildhlsdk.sh` 来自动创建一个包含 hlsdk dylibs 的 ipa)
4. 运行 `scripts/ios/createipa.sh` 以创建一个可安装的 ipa标签:3D渲染, Android游戏, Bash脚本, C/C++, FPS, FWGS, GoldSrc, Half-Life, Linux游戏, OpenGL, UML, Xash3D, 专用服务器, 事务性I/O, 云资产清单, 半条命, 多人游戏, 客户端加密, 客户端加密, 客户端加密, 开源, 模组支持, 游戏开发, 游戏引擎, 移植, 网络安全研究, 逆向工具, 逆向工程