openblack/openblack

GitHub: openblack/openblack

openblack 是经典游戏《Black & White》(2001)的开源引擎重制项目,使用现代 C++ 与渲染技术让玩家在现代平台上重温原作。

Stars: 1529 | Forks: 93

# openblack [![VCPKG CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/21/21b4c9015ce4ad5a6e493bb95dec475ed03607104ba0d0d957a77132449b1c51.svg)](https://github.com/openblack/openblack/actions/workflows/ci-vcpkg.yml?query=branch%3Amaster+event%3Apush) [![Packaging CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/f4/f433d5e1b961a79e595062c0e0fdb8b10a4d7fda1f779727bdbbb9e8205b5865.svg)](https://github.com/openblack/openblack/actions/workflows/packaging.yml?query=branch%3Amaster+event%3Apush) [![GitHub Stars](https://img.shields.io/github/stars/openblack/openblack?logo=github)](https://github.com/openblack/openblack/stargazers) [![Discord chat](https://img.shields.io/discord/608729286513262622?logo=discord&logoColor=white)](https://discord.gg/5QTexBU) [![License](https://img.shields.io/github/license/openblack/openblack)](LICENSE.md) openblack 是一个 [Black & White (2001)](https://en.wikipedia.org/wiki/Black_&_White_(video_game)) 的开源重制项目,使用现代 C++ 和现代渲染引擎编写。 你仍然需要拥有原版游戏资源才能使用它。有关如何提取资源的说明,请参阅下文。 # 预编译二进制文件 为了让你无需自行编译即可使用 openblack 的最新构建版本,我们通过我们的测试服务提供了预编译的二进制文件。 [![Linux (amd64) Build](https://img.shields.io/badge/Build-Linux%20(amd64)-333333)](https://nightly.link/openblack/openblack/workflows/ci-vcpkg/master/openblack-ubuntu-24.04-master.zip) [![OSX (amd64) Build](https://img.shields.io/badge/Build-OSX%20(amd64)-eeeeee)](https://nightly.link/openblack/openblack/workflows/ci-vcpkg/master/openblack-macos-13-master.zip) [![Windows (amd64) Build](https://img.shields.io/badge/Build-Windows%20(amd64)-0078d4)](https://nightly.link/openblack/openblack/workflows/ci-vcpkg/master/openblack-windows-latest-master.zip) [![Arch Linux](https://img.shields.io/badge/Package-Arch%20Linux-1793d0)](https://nightly.link/openblack/openblack/workflows/packaging/master/openblack-arch-linux-pkg-master.zip) ## 实验性 以下内容被标记为实验性。它们仅包含最基本的设置,例如编译和渲染系统。 请不要期望在毫无费力和自行打补丁的情况下就能顺利启动它们。 [![Windows (x86) Build](https://img.shields.io/badge/Build-Windows%20(x86)-0078d4)](https://nightly.link/openblack/openblack/workflows/ci-cross-compile/master/openblack-x86-windows-master.zip) [![Windows (arm64) Build](https://img.shields.io/badge/Build-Windows%20(arm64)-0078d4)](https://nightly.link/openblack/openblack/workflows/ci-cross-compile/master/openblack-arm64-windows-master.zip) [![Android](https://img.shields.io/badge/Package-Android-3ddc84)](https://nightly.link/openblack/openblack/workflows/ci-cross-compile/master/openblack-android-apk-master.zip) [![iOS](https://img.shields.io/badge/Package-iOS-eeeeee)](https://nightly.link/openblack/openblack/workflows/ci-cross-compile/master/openblack-ios-arm64-vcpkg-master.zip) [![Linux (x86) Build](https://img.shields.io/badge/Build-Linux%20(x86)-333333)](https://nightly.link/openblack/openblack/workflows/ci-cross-compile/master/openblack-x86-linux-master.zip) [![Linux (arm64) Build](https://img.shields.io/badge/Build-Linux%20(arm64)-333333)](https://nightly.link/openblack/openblack/workflows/ci-cross-compile/master/openblack-arm64-linux-master.zip) [![Flatpak](https://img.shields.io/badge/Package-Flatpak-79ADE3)](https://nightly.link/openblack/openblack/workflows/packaging/master/openblack-master.flatpak.zip) [![AppImage](https://img.shields.io/badge/Package-AppImage-00BBFF)](https://nightly.link/openblack/openblack/workflows/packaging/master/openblack-master.AppImage.zip) [![Snap](https://img.shields.io/badge/Package-Snap-E95420)](https://nightly.link/openblack/openblack/workflows/packaging/master/openblack-master.snap.zip) # 编译 使用以下命令克隆代码:`git clone --recursive https://github.com/openblack/openblack.git` 如果你忘记添加 `--recursive`,你必须在 `openblack/` 目录下额外运行 `git submodule update --init`。 ## 使用 vcpkg 进行配置(推荐新用户使用) 获取所有必需依赖项的最简单方法是通过 [vcpkg](https://github.com/Microsoft/vcpkg),它包含了一个 [清单文件](https://github.com/microsoft/vcpkg/blob/master/docs/users/manifests.md)。 在任何平台上最简单的入门方法是让 CMake 和 vcpkg 为你处理所有依赖项和配置。为此,你需要选择 `"ninja-multi-vcpkg" - Ninja Multi-Config (vcpkg)` 预设。对于高级用户,还提供了其他可用的预设。 ### Visual Studio Code * 安装 [Visual Studio Code](https://code.visualstudio.com/Download) * 安装 [C++ Extension](vscode:extension/ms-vscode.cpptools) * 在 Linux 上可能不需要此扩展 * 根据你的平台安装相应的编译器 * Linux 上使用 GNU 或 Clang 编译器 * Windows 上使用 Visual Studio 的 MSVC(参见 Visual Studio) * Mac 上使用 Clang 编译器 * 安装 [CMake Tools Extension](vscode:extension/ms-vscode.cmake-tools) * 安装 [CMake 3.20+ 版本](https://cmake.org/download/) * 你只需[在 Visual Studio Code 中直接打开 `openblack` 文件夹并选择一个预设](https://devblogs.microsoft.com/cppblog/cmake-presets-integration-in-visual-studio-and-visual-studio-code/)。 ### Visual Studio 2022 * 安装 [Visual Studio](https://visualstudio.microsoft.com/downloads/) * 为你的版本选择合适的 MSVC C++ 组件 * 为你的版本选择合适的 Windows SDK 组件 * 选择适用于 Windows 的 C++ CMake 工具组件 * 你只需[在 Visual Studio 中直接打开 `openblack` 文件夹并选择一个预设](https://devblogs.microsoft.com/cppblog/cmake-presets-integration-in-visual-studio-and-visual-studio-code/)。 ### Clion * 安装 [Clion](https://www.jetbrains.com/clion/download/) * 你只需[在 CLion 中直接打开 `openblack` 文件夹并选择一个预设](https://www.jetbrains.com/help/clion/cmake-presets.html)。 ### XCode * 安装 [XCode](https://apps.apple.com/ca/app/xcode) * 使用 [homebrew](https://brew.sh/) 安装 homebrew 依赖项:`brew install cmake ninja pkg-config` * 安装 cmake 后运行 `sudo xcode-select --reset` * 你需要在 GUI 中或使用命令行参数 `--preset xcode-vcpkg` 通过 cmake 预设 `xcode-vcpkg` 进行配置 ### Android Studio * 安装 [Android Studio](https://developer.android.com/studio) * 安装最新的 SDK 和至少为 23 的 NDK * 从 `android` 目录中打开 openblack * 在项目设置中配置 SDK 和 NDK * 执行 gradle 配置,这将运行 cmake 配置并编译 vcpkg 依赖项 * 为虚拟设备或连接的设备构建项目 * 目前需要用户使用 adb 将游戏资源上传到 `/data/local/tmp/bw` 并执行 `chmod -R a+wrx /data/local/tmp/bw` ### Web Assembly * 获取 [emsdk](https://github.com/emscripten-core/emsdk) * 将 emsdk 的目录添加为 `EMSDK` 环境变量。 * 运行 `emsdk install latest` * 运行 `emsdk activate latest` * 构建 `emscripten-vcpkg` 预设 ### 命令行 * 你常用的编译工具链。 * Ubuntu / Debian:`# apt install build-essential cmake ninja-build` * Arch Linux / Manjaro:`# pacman -S base-devel cmake ninja` * 你可以使用 `cmake --preset` 生成 cmake 构建预设,并使用 `cmake --list-presets` 列出预设 ## 使用系统依赖进行配置(推荐打包者使用) 如果你不想使用 vcpkg;CMake 将使用系统库或手动指定的包目录。 只要它们提供 [合适的配置文件](https://cmake.org/cmake/help/latest/guide/using-dependencies/index.html#libraries-providing-config-file-packages),CMake 就能找到所需的库。 ### Arch Linux 从 AUR 安装 [openblack-git](https://aur.archlinux.org/packages/openblack-git/),它可以直接为所有 Arch Linux 派生发行版(如 Manjaro)进行编译和安装。这将需要使用 pacman 来安装所有必需的依赖项。 要使用的前缀是 `"linux-system-deps" - Linux (System Deps)` # 从原版游戏中提取资源文件 如前所述,运行 openblack 需要原版游戏资源。由于这些数据受版权保护,**我们不会提供它们**,所以请不要索要。这里有一份从原版游戏中提取它们的指南。 ## 前置条件 你需要以下内容: - 原版安装程序(通常在 CD 中) - [官方补丁 1.10](https://www.bwgame.net/downloads/v1-1-patch.129/) - [官方补丁 1.2](https://www.bwgame.net/downloads/v1-2-patch.130/) - 非必需(但不会影响提取):[非官方补丁 1.42](https://www.bwgame.net/downloads/black-white-unofficial-patch-v1-42.1418/) **不要安装 1.3,它是一个用于增加 P5 Power Glove 支持的补丁,通常不稳定** ## 安装 ### 在 Windows 上 1. 从安装程序安装游戏,记住安装目录 (`C:\\Program Files (x86)\\Lionhead Studios\\Black & White\\` 是默认路径) 2. 安装官方补丁 1.10(在同一目录下) 3. 安装官方补丁 1.2(在同一目录下) ### 在 Linux 和 macOS 上 如果你在 Linux 或 macOS 上运行,你可以使用 Wine 安装游戏 ([WineHQ 上的应用页面](https://appdb.winehq.org/objectManager.php?sClass=application&iId=156))。 1. 安装 `wine` 2. 从包含安装程序的目录中运行 `wine Setup.exe`,不要 更改安装路径 3. 从包含第一个补丁的目录中运行 `wine Black_White_Patch_v1.100.exe` (如果文件名不完全一致,请相应调整命令) 4. 从包含第二个补丁的目录中运行 `wine black_white_patch_v1_20.exe` (同样需要调整) 5. 如果你想安装非官方补丁,它需要 .NET 2.0, 可以通过 `winetricks dotnet20sp2` 安装(你应该先安装 `winetricks`) 所有文件都应安装到以下目录: `~/.wine/drive_c/Program Files (x86)/Lionhead Studios Ltd/Black & White` ## 获取资源 你感兴趣的文件夹是安装目录中的 `Audio`、`Data` 和 `Scripts` 文件夹。你可以直接从那里使用它们,或者将它们复制到你选择的位置。 ### 原地使用 如果你想从那里使用它们,请记住在安装步骤中选择的安装目录,除非你更改了它,否则它应该是: - 或者是 `C:\\Program Files (x86)\\Lionhead Studios\\Black & White\\` - 或者是 `~/.wine/drive_c/Program Files (x86)/Lionhead Studios Ltd/Black & White` 这就是你将提供给 openblack 的路径(使用 `-g` 标志)。 如果你更愿意复制数据(例如,如果你想卸载原版游戏),只需将 `Data` 和 `Scripts` 文件夹复制到所需的新位置,并将此位置的路径提供给 openblack(使用 `-g` 标志)。 # License openblack 作为开源软件在 [GPL v3](https://opensource.org/licenses/gpl-3.0.html) 许可证下发布,请参阅项目根目录中的 [license](./license) 文件以获取完整的许可文本。
标签:Bash脚本, C++, OpenGL, Vulkan, 开源重制, 数据擦除, 游戏引擎