Detanup01/gbe_fork
GitHub: Detanup01/gbe_fork
Goldberg Steam 模拟器的社区 Fork,用于在无 Steam 客户端环境下运行游戏并支持局域网联机。
Stars: 1795 | Forks: 224
## :large_orange_diamond: **这是一个 Fork**
Fork 自 https://gitlab.com/Mr_Goldberg/goldberg_emulator
### 欢迎提交 PR。
:red_circle:
**这个 Fork 不是接管,不是原项目的复活,也不是替代品。**
**这只是一个 Fork,不必太当真。**
**强烈建议你 Fork/Clone 它,并随意处置。**
:red_circle:
## **兼容性**
这个 Fork 与原仓库不兼容,很多东西都变了,甚至可能坏了。
如果有东西不工作,欢迎创建一个带有适当修复的 Pull Request,否则请忽略这个 Fork 并使用原模拟器。
# 如何使用模拟器
* **始终使用 `generate_interfaces` 工具生成接口文件。**
* **如果遇到问题,请尝试 `ColdClientLoader` 设置。**
你可以在这里找到辅助指南、脚本和工具:
**(这些指南、脚本和工具由其作者维护。)**
* **[gbe_fork_tools](https://github.com/Detanup01/gbe_fork_tools)**
* **[gen.emu.sharp](https://github.com/otavepto/gen.emu.sharp)**
* **[gse_fork_tools](https://github.com/alex47exe/gse_fork_tools)**
* **[Semuexec](https://gitlab.com/detiam/Semuexec)**
* **[Steam Emu Utility](https://github.com/turusudiro/SteamEmuUtility)**
* **[How to use Goldberg Emulator](https://rentry.co/goldberg_emulator)**
* **[GSE-Generator](https://github.com/brunolee-GIT/GSE-Generator)**
* **如果你创建了一个生成器工具,请创建一个 Feature PR**
你也可以在 [README.release.md](./post_build/README.release.md) 中找到说明
# **编译** ## 一次性设置 ### **克隆仓库** **递归**克隆仓库及其子模块 ``` git clone --recurse-submodules -j8 https://github.com/Detanup01/gbe_fork.git ``` 开关 `-j8` 是可选的,它允许 Git 最多获取 8 个子模块 建议不时检出子模块,以确保它们是最新的 ``` git submodule update --init --recursive --remote ``` ### 对于 Windows: * 你需要 Windows 10 或 8.1 + WDK * 使用 Visual Studio,安装 `Visual Studio 2022 Community`:https://visualstudio.microsoft.com/vs/community/ * 选择工作负载 `Desktop development with C++` * 在 `Individual componenets` 中滚动到底部并选择 `Windows XX SDK (XX.X...)` 的**最新**版本 例如 `Windows 11 SDK (10.0.22621.0)` * 使用 `MSYS2` **这目前是实验性的,由于 ABI 差异将无法工作**:https://www.msys2.org/
* Python 3.10 或更高版本:https://www.python.org/downloads/windows/
安装后,确保它能正常工作
python --version
* *(可选)* 安装一个 Git GUI,如 [GitHub Desktop](https://desktop.github.com/) 或 [Sourcetree](https://www.sourcetreeapp.com/)
### 对于 Linux:
* Ubuntu 22.04 LTS:https://ubuntu.com/download/desktop
* Ubuntu 必需的包:
sudo apt update -y
sudo apt install -y coreutils # echo, printf, etc...
sudo apt install -y build-essential
sudo apt install -y gcc-multilib # 32 位构建需要
sudo apt install -y g++-multilib
sudo apt install -y libglx-dev # overlay 构建需要(头文件如 GL/glx.h)
sudo apt install -y libgl-dev # overlay 构建需要(头文件如 GL/gl.h)
*(可选)* 附加包
sudo apt install -y clang # clang 编译器
sudo apt install -y binutils # 主要包含工具 'readelf',以及其他有用的二进制工具
* Python 3.10 或更高版本
sudo apt update -y
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update -y
sudo apt install -y "python3.12"
sudo apt install -y "python3.12-dev"
sudo apt install -y "python3.12-venv"
sudo apt install -y python3-dev
# 确保它能正常工作
python3.12 --version
### **构建依赖项**
这些是稍后构建模拟器所需的第三方库,它们在构建过程中与模拟器链接。
你不需要每次都构建这些依赖项,它们很少更新。
你需要重新构建它们的唯一时候是它们的独立构建文件夹被意外删除,或者依赖项被更新时。
#### 在 Windows 上: 在仓库文件夹中打开 CMD,然后运行以下命令 * 使用 `Visual Studio` 构建 set "CMAKE_GENERATOR=Visual Studio 17 2022" third-party\common\win\premake\premake5.exe --file=premake5-deps.lua --64-build --32-build --all-ext --all-build --verbose --os=windows vs2022 * 使用 `MSYS2` 构建 **这目前是实验性的,由于 ABI 差异将无法工作**
这将:
* 将所有第三方依赖项从文件夹 `third-party` 解压到文件夹 `build\deps\win`
* 构建所有依赖项
#### 在 Linux 上:
在仓库文件夹中打开终端
*(可选)* 你可以在当前终端实例中运行这 2 条命令来使用 `Clang` 编译器代替 `GCC`
```
export CC="clang"
export CXX="clang++"
```
然后运行以下命令
```
export CMAKE_GENERATOR="Unix Makefiles"
./third-party/common/linux/premake/premake5 --file=premake5-deps.lua --64-build --32-build --all-ext --all-build --verbose --os=linux gmake2
```
这将:
* 将所有第三方依赖项从文件夹 `third-party` 解压到文件夹 `build/deps/linux`
* 构建所有依赖项(32 位和 64 位)
## **构建模拟器**
### 在 Windows 上:
在仓库文件夹中打开 CMD,然后运行以下命令
* 对于 `Visual Studio 2022`
third-party\common\win\premake\premake5.exe --file=premake5.lua --genproto --os=windows vs2022
然后你可以转到文件夹 `build\project\vs2022\win` 并在 Visual Studio 中打开生成的 `.sln` 文件。
或者,如果你更喜欢从命令行进行,在上面的文件夹中打开 `Developer Command Prompt for VS 2022`,然后:
msbuild /nologo /v:n /p:Configuration=release,Platform=Win32 gbe.sln
msbuild /nologo /v:n /p:Configuration=release,Platform=x64 gbe.sln
* 对于 `MSYS2` **这目前是实验性的,由于 ABI 差异将无法工作**
这将在文件夹 `build\win\\release` 中构建模拟器的发布版本
提供了一个示例脚本 `build_win_premake.bat`,请查看
### 在 Linux 上: 在仓库文件夹中打开终端,然后运行以下命令 ``` ./third-party/common/linux/premake/premake5 --file=premake5.lua --genproto --os=linux gmake2 cd ./build/project/gmake2/linux ``` *(可选)* 你可以在当前终端实例中运行这 2 条命令来使用 `Clang` 编译器代替 `GCC` ``` export CC="clang" export CXX="clang++" ``` 然后运行以下命令 ``` make config=release_x32 -j 8 all make config=release_x64 -j 8 all ``` 查看所有可能的构建目标 ``` make help ``` 这将在文件夹 `build/linux//release` 中构建模拟器的发布版本
提供了一个示例脚本 `build_linux_premake.sh`,请查看
## **使用 Github CI 作为构建器**
这真的很慢,主要是为 CI Workflow 脚本准备的,但如果你不能在本地构建,你可以把它作为另一个渠道。
**你必须先 Fork 该仓库**。
### 初始设置
在你的 Fork 中,从顶部打开 `Settings` 选项卡,然后:
* 从左侧侧边栏选择 `Actions` -> `General`
* 在 `Actions permissions` 部分选择 `Allow all actions and reusable workflows`
* 向下滚动,在 `Workflow permissions` 部分选择 `Read and write permissions`
* *(可选)* 在 `Artifact and log retention` 部分,你可以指定保留构建工件/归档的天数。
建议设置一个合理的数字,比如 3-4 天,否则如果你经常使用 Github 作为构建器,可能会耗尽你的包存储空间,更多详情请见:https://docs.github.com/en/get-started/learning-about-github/githubs-plans
### 手动触发
1. 转到你 Fork 中的 `Actions` 选项卡
2. 选择模拟器依赖项 Workflow(例如:`Emu third-party dependencies (Windows) `)并在 **main** 分支(例如:`dev`)上运行它。
未在主分支上创建的依赖项将不会被其他分支或后续运行识别
3. 从左侧侧边栏选择一个 Workflow 脚本,例如 `Build all emu variants (Windows)`
4. 在右上角,选择 `Run workflow` -> 选择所需的分支(例如 `dev`) -> 按下按钮 `Run workflow`
5. 完成后,将为该 Workflow 创建许多包(称为构建工件)。
确保再次选择该 Workflow 以查看其历史记录,然后选择最顶部的最后一次运行以查看其工件
## 重要说明: 当你构建依赖项 Workflow 时,它们将被缓存,以减少后续触发的构建时间并避免不必要/浪费的构建过程。 如果第三方依赖项在任何时候更新了,这将导致问题,在这种情况下,你需要手动删除缓存,在你的 Fork 中: 1. 转到顶部的 `Actions` 选项卡 2. 从左侧侧边栏选择 `Caches` 3. 删除相应的缓存
## ***(可选)* 打包** 此步骤适用于 Github CI/Workflow,但你可以在本地创建包。 ### 在 Windows 上: 在仓库目录中打开 CMD,然后运行此脚本 ``` package_win.bat
```
`build_folder` 是 `build\win` 内的任何文件夹,例如:`vs2022\release`
上面的示例将在 `build\package\win\` 内创建一个 `.7z` 归档
### 在 Linux 上:
在仓库目录中打开 bash 终端,然后运行此脚本
```
package_linux.sh
```
`build_folder` 是 `build/linux` 内的任何文件夹,例如:`gmake2/release`
上面的示例将在 `build/package/linux/` 内创建一个压缩的 `.tar` 归档
# **编译** ## 一次性设置 ### **克隆仓库** **递归**克隆仓库及其子模块 ``` git clone --recurse-submodules -j8 https://github.com/Detanup01/gbe_fork.git ``` 开关 `-j8` 是可选的,它允许 Git 最多获取 8 个子模块 建议不时检出子模块,以确保它们是最新的 ``` git submodule update --init --recursive --remote ``` ### 对于 Windows: * 你需要 Windows 10 或 8.1 + WDK * 使用 Visual Studio,安装 `Visual Studio 2022 Community`:https://visualstudio.microsoft.com/vs/community/ * 选择工作负载 `Desktop development with C++` * 在 `Individual componenets` 中滚动到底部并选择 `Windows XX SDK (XX.X...)` 的**最新**版本 例如 `Windows 11 SDK (10.0.22621.0)` * 使用 `MSYS2` **这目前是实验性的,由于 ABI 差异将无法工作**:https://www.msys2.org/
步骤
* 要构建 64 位二进制文件,请使用 [环境](https://www.msys2.org/docs/environments/) `UCRT64` 或 `MINGW64`,然后安装 GCC 工具链 `UCRT64` pacman -S mingw-w64-ucrt-x86_64-gcc `MINGW64` pacman -S mingw-w64-i686-gcc * 要构建 32 位二进制文件,请使用环境 `MINGW32`,然后安装 GCC 工具链 pacman -S mingw-w64-i686-gcc#### 在 Windows 上: 在仓库文件夹中打开 CMD,然后运行以下命令 * 使用 `Visual Studio` 构建 set "CMAKE_GENERATOR=Visual Studio 17 2022" third-party\common\win\premake\premake5.exe --file=premake5-deps.lua --64-build --32-build --all-ext --all-build --verbose --os=windows vs2022 * 使用 `MSYS2` 构建 **这目前是实验性的,由于 ABI 差异将无法工作**
步骤
*(可选)* 在下面的两种情况中,你可以在同一个终端实例中运行这 2 条命令来使用 `Clang` 编译器代替 `GCC` export CC="clang" export CXX="clang++" * 构建 64 位二进制文件(`UCRT64` 或 `MINGW64`) export CMAKE_GENERATOR="MSYS Makefiles" ./third-party/common/win/premake/premake5.exe --file=premake5-deps.lua --64-build --all-ext --all-build --verbose --os=windows gmake2 * 构建 32 位二进制文件(`MINGW32`) export CMAKE_GENERATOR="MSYS Makefiles" ./third-party/common/win/premake/premake5.exe --file=premake5-deps.lua --32-build --all-ext --all-build --verbose --os=windows gmake2步骤
./third-party/common/win/premake/premake5.exe --file=premake5.lua --genproto --os=windows gmake2 cd ./build/project/gmake2/win *(可选)* 你可以在当前终端实例中运行这 2 条命令来使用 `Clang` 编译器代替 `GCC` export CC="clang" export CXX="clang++" * 64 位构建(`UCRT64` 或 `MINGW64`) make config=release_x64 -j 8 all * 32 位构建(`MINGW32`) make config=release_x32 -j 8 all 查看所有可能的构建目标 make help### 在 Linux 上: 在仓库文件夹中打开终端,然后运行以下命令 ``` ./third-party/common/linux/premake/premake5 --file=premake5.lua --genproto --os=linux gmake2 cd ./build/project/gmake2/linux ``` *(可选)* 你可以在当前终端实例中运行这 2 条命令来使用 `Clang` 编译器代替 `GCC` ``` export CC="clang" export CXX="clang++" ``` 然后运行以下命令 ``` make config=release_x32 -j 8 all make config=release_x64 -j 8 all ``` 查看所有可能的构建目标 ``` make help ``` 这将在文件夹 `build/linux/
## 重要说明: 当你构建依赖项 Workflow 时,它们将被缓存,以减少后续触发的构建时间并避免不必要/浪费的构建过程。 如果第三方依赖项在任何时候更新了,这将导致问题,在这种情况下,你需要手动删除缓存,在你的 Fork 中: 1. 转到顶部的 `Actions` 选项卡 2. 从左侧侧边栏选择 `Caches` 3. 删除相应的缓存
## ***(可选)* 打包** 此步骤适用于 Github CI/Workflow,但你可以在本地创建包。 ### 在 Windows 上: 在仓库目录中打开 CMD,然后运行此脚本 ``` package_win.bat
标签:Bash脚本, C++, DNS解析, Fork项目, Git子模块, Goldberg模拟器, Steam API模拟, SteamWorks, Steam模拟器, Windows, 云资产清单, 多人游戏, 局域网联机, 开源项目, 数据擦除, 本地保存, 游戏修改, 游戏启动器, 游戏工具, 游戏破解, 离线游戏, 逆向工具, 逆向工程