资讯动态

sbox 引擎从源码构建与贡献开发完整指南:基于 Source 2 与 .NET 的现代游戏引擎

发布时间:2026/10/10 7:41:32 来源:尧图企业网站定制
【免费下载链接】sbox-publicsbox is a modern game engine, built on Valves Source 2 and the latest .NET technology, it provides a modern intuitive editor for creating games项目地址https://gitcode.com/gh_mirrors/sbo/sbox-public点击查看免费下载本文是 sboxsbox-public仓库的引擎从源码构建实战指南。sbox 是由 Facepunch 开发、构建在 Valve Source 2 原生核心与最新 .NET 技术之上的现代游戏引擎本仓库面向那些希望参与引擎本身开发的开发者提供了完整的 C# 引擎、编辑器、工具链与游戏内容源码。读完本文你将掌握如何通过 Steam 安装官方编辑器、如何从源码编译引擎Windows / Linux / macOS 全平台、如何利用 Setup 脚本自动下载原生二进制与生成互操作绑定、如何借助 Git hooks 在每次拉取后自动保持构建产物最新以及如何正确地向引擎提交贡献。一、仓库是什么引擎源码库而非游戏开发入口先明确一个关键定位这个仓库不是教你如何用 sbox 做游戏的教程库。README 明确指出如果你的目标是使用 sbox 创作游戏应当从 官方 getting started 指南 开始本仓库的存在意义是为那些想要参与引擎开发的开发者提供从源码构建引擎的途径。仓库本体包含以下内容README.mdC# 引擎层位于 engine/ 目录包含Sandbox.Engine、Sandbox.Client、Sandbox.Server、Sandbox.Reflection、Sandbox.Hotload、Sandbox.SceneRenderer等几十个托管模块以及 Sandbox-Engine.slnx 解决方案文件编辑器位于 game/editor/包含 Hammer关卡编辑器、ActionGraph蓝图/动作图、ShaderGraph着色器图、MovieMaker影片制作等工具工具链位于 engine/Tools/包括SboxBuild构建调度、CodeGen代码生成、InteropGen互操作绑定生成、ShaderCompiler、ShaderProc、PackageBuild等游戏内容位于 game/包括 addons、core、templates、samples、config 等目录。值得注意的是原生的 Source 2 核心是以预编译二进制形式分发的由 Setup 脚本按平台自动下载因此构建引擎不需要任何 C 工具链——所有 C 侧的工作都由 Facepunch 在内部完成并发布二进制。这一点是理解整个构建流程的前提。从目录结构可以推断托管代码与原生代码之间通过engine/manifest.def及其引用的Definitions/*.def文件定义互操作边界例如 engine/Definitions/engine.def 中声明了nativedll engine2.dll、异常上报入口Sandbox.Interop.BindingException、托管命名空间Managed.SandboxEngine以及 C/C# 两侧对应的头文件与源文件映射。这正是InteropGen工具工作的基础。二、获取引擎的两种途径2.1 通过 Steam 直接安装只玩游戏普通玩家/创作者可以直接从 Steam 安装 sbox 编辑器App ID 590830安装后即获得编辑器与运行时无需接触任何源码。这是唯一适合只用 sbox 做游戏用户的途径。2.2 从源码编译参与引擎开发源码构建面向贡献者。要参与引擎开发需要完整克隆本仓库并按平台执行 Setup。整个过程无 C 工具链依赖原生核心由 Setup 自动下载托管代码由 .NET 编译。三、平台支持与前置条件3.1 支持矩阵README.md 给出的平台支持情况如下平台安装脚本备注Windows 10 / 11x64Setup.bat64 位 Windows 10/11Linuxx64./Setup.sh二进制面向 Steam Linux Runtime 构建绝大多数发行版可运行macOSApple Silicon./Setup.sh不支持 Intel Mac仅 Apple Silicon注意两个硬性限制Linux 二进制面向 Steam Linux RuntimeSteamOS 3.x 的容器运行时构建因此对系统库的依赖被隔离在 Steam Runtime 内一般发行版都能直接跑Intel Mac 不被支持构建与运行都要求 Apple SiliconM 系列芯片。3.2 前置依赖编译前需要准备Git用于克隆仓库也是 Git hooks 机制的前提**.NET 10 SDK 与 Setup.sh 中的检查逻辑。这意味着本仓库当前以 .NET 10 为目标框架TMF 由 SboxBuild.csproj 引用IDE推荐Windows 上推荐 Visual Studio 2026 已定义统一的代码风格任何主流 IDE 打开仓库都会自动应用。四、Setup 全流程从克隆到可运行4.1 克隆与执行按 README.md 的步骤# 克隆仓库 git clone https://github.com/Facepunch/sbox-public.git cd sbox-public # Windows Setup.bat # Linux / macOS ./Setup.sh说明文章语境中如需使用仓库的 git clone 地址即上文 Facepunch 官方公开地址镜像版本一致。Setup 完成后游戏本体sbox与编辑器sbox-dev.exe都会从game目录运行。在 Bootstrap.cs 的源码中可以看到bootstrap 成功结束时控制台会输出提示启动game/sbox-devWindows 上为sbox-dev.exe。4.2 Setup 脚本到底做了什么Setup.bat/Setup.sh非常精简——它们只做两件事校验 dotnet 存在并给出友好错误提示调用dotnet run --project ./engine/Tools/SboxBuild/SboxBuild.csproj -- bootstrap把控制权交给SboxBuild工具的bootstrap命令Setup.bat 第 14 行、Setup.sh 第 15 行。也就是说Setup 的实质是一个 .NET CLI 工具 SboxBuild其入口 Program.cs 基于System.CommandLine注册了数十个命令build、bootstrap、format、test、build-shaders、generate-solutions 等而bootstrap命令内部由 Bootstrap.cs 编排一系列**阶段stages**依次执行。4.3 bootstrap 的阶段编排源码级从 Bootstrap.cs 与 Build.cs 可以还原完整的阶段流水线Git hooks 安装仅公开源码发行版最先执行确保即使后续阶段失败下次 pull 也能自愈刷新Artifacts下载公开产物本仓库是公开源码发行版IsPublicSourceDistribution()判定仓库根目录不存在public/与steamworks/私有目录即认为这是公开版Build.cs因此跳过原生编译改为从https://artifacts.sbox.game下载与当前提交匹配的预编译原生二进制见 DownloadPublicArtifacts.csBindings生成互操作绑定运行InteropGen根据engine/manifest.def及其包含的Definitions/*.def生成 C# 与 C 之间的绑定代码见 InteropGen.csManaged编译托管代码依次执行 dotnet clean可选→ restore → 构建 CodeGen.exe 与 CreateGameCache.exe 工具 → 清空并重建game/bin/managed输出目录 → 编译解决方案见 BuildManaged.csShaders编译着色器调用game/bin/managed/ShaderCompiler编译全部 .shader 文件支持--forced强制全量重编见 BuildShaders.csContent构建游戏内容调用原生contentbuilder -b game编译资产见 BuildContent.cs。其中任一步骤失败bootstrap 会立即终止并提示Fix the error and rerun Setup.bat/./Setup.sh. For full output, run --verbose.——这也是--verbose参数存在的意义默认只显示进度与最终诊断加--verbose可查看完整构建输出。4.4 产物下载的可靠性设计DownloadPublicArtifacts的实现细节值得注意DownloadPublicArtifacts.cs通过清单manifest机制按提交匹配产物最多向前回溯 128 个提交寻找兼容清单MaxManifestLookbackCommits 128并行下载上限 32 路、单文件重试 3 次MaxParallelDownloads 32、MaxDownloadAttempts 3在game/bin/.sbox-artifacts.json记录已校验文件的大小与修改时间未变化则以 stat 代替整文件哈希校验把约 10 GB 的校验流程优化成一次 stat 遍历——这正是它能在每次 git checkout 时作为 hook 运行而不过分拖慢日常开发的原因。五、保持最新Git hooks 自动刷新机制5.1 为什么需要 hooks公开源码发行版每次git pull都可能带来新的原生二进制或内容变更并需要重新生成互操作绑定。README 指出Pulling on Git will run a hook that fetches any new native binaries or content that changed and regenerates the interop bindings.——即拉取后由 hook 自动完成刷新无需手动重跑 Setup。5.2 hooks 的实现源码级由 InstallGitHooks.cs 实现bootstrap 的第一阶段即安装它们。核心设计安装三个 hookpost-checkout带守卫[ $3 1 ] [ $1 ! $2 ] || exit 0仅在真正的分支切换而非单文件 checkout且 HEAD 发生变化时触发post-merge任何 merge包括 fast-forward 的 pull都会执行post-rewrite守卫[ $1 rebase ]覆盖 rebase 拉取该场景不会触发前两者hook 行为定位 git 仓库根目录 → 校验仍是公开发行版若发现public/与steamworks/存在则直接退出避免覆盖完整源码开发者本地的原生构建→ 检查 dotnet → 执行dotnet run --project engine/Tools/SboxBuild/SboxBuild.csproj -- build --skip-native --skip-managed即只恢复 Artifacts Bindings跳过托管与原生编译IDE 本来就会编译 C#hook 没必要重复做安全与可退出机制设置SBOX_SKIP_HOOKS1可跳过单次执行hook 内部始终以exit 0结束——hook 失败绝不会阻断你的 checkout / merge删除 hook 文件即可卸载不覆盖用户自定义 hook写入前检查文件是否包含标记Installed by sbox Setup若属于用户自己的 hook 则原样保留并给出提示尊重core.hooksPath与 git worktree通过git rev-parse --git-path hooks解析真实 hooks 目录Linux 上还会补齐执行位EnsureExecutable。5.3 日常更新节奏有了 hooks 后日常保持引擎最新的流程就是普通 git 操作git pull # hook 自动刷新原生二进制、内容与互操作绑定 # 随后在 IDE 中照常编译 C# 代码或者需要全量增量重建含着色器与内容时重跑Setup.bat/./Setup.sh。README 明确给出了这两种途径hook 只负责新提交引入的产物变更完整的增量重建交给 Setup。六、SboxBuild 命令行工具贡献者的瑞士军刀Setup 背后是dotnet run --project engine/Tools/SboxBuild/SboxBuild.csproj。贡献者可以直接调用它获得细粒度控制命令清单见 Program.cs# 在仓库根目录执行 dotnet run --project engine/Tools/SboxBuild/SboxBuild.csproj -- command [options]常用命令与选项命令作用关键选项bootstrap完整搭建公开/完整源码发行版--verbose显示完整构建输出build构建托管与原生代码--config默认Developer、--clean、--skip-native、--skip-managedformat格式化全部代码--verify只校验不修改test运行测试--no-build、--filterdotnet test 过滤表达式build-shaders编译着色器--forced强制全量重编shader-stats用 AMD Radeon GPU Analyzer 统计寄存器占用--asic可重复、--shadergenerate-solutions生成 VS 解决方案而不编译--config、--module、--platformbuild-content编译游戏内容—6.1 测试体系test命令按最快信号优先顺序运行三层测试Test.csSandbox.Test.Unit不需要原生引擎运行时移除FACEPUNCH_ENGINE环境变量保证该层级在裸 checkout 上也能跑防止测试悄悄引入原生依赖Sandbox.Test.Engine需要原生引擎Sandbox.Test.Integration需要原生引擎的集成测试。任一失败即终止后续层级。CI 中 PR 默认使用--filter TestCategory!LiveBackend排除与线上后端通信的测试避免后端抖动误伤无关 PR完整套件仅在 release 构建时运行。测试项目位于 engine/Tests/。6.2 提交前的质量门结合 CONTRIBUTING.md 与工具链提交前建议格式化执行dotnet run --project engine/Tools/SboxBuild/SboxBuild.csproj -- format --verify或直接dotnet format确保符合 .editorconfig 定义的风格测试执行test并尽量为修复/新增功能补充单元测试着色器CI 中如果build-shaders检测到本地未提交的着色器重编Compiled successfully事件会直接判定失败——着色器编译结果必须提交前在本地完成见 BuildShaders.cs 中Utility.IsCi()分支提交粒度相关改动归并到同一次提交提交信息简明扼要必要时附带详细摘要移除冗余提交适当 squash。七、参与贡献的正确姿势按 CONTRIBUTING.md 的指引报告 Bug请详尽描述给出可复现步骤游戏或插件的 bug 不要报到引擎仓库应反馈给对应作者提交前先确认问题尚未被报告Proton 兼容性问题参见 Valve 的已知 issue请求新功能说明为什么需要、能带来什么、尝试过什么方案先确认尚未有人请求过安全漏洞通过 Facepunch 安全页面私下报告不要在公开 issue 中披露提交改动新功能应先在 proposal issue 中讨论并获得认可修 bug 时引用相关 issue 并说明问题与解法保持 PR 范围聚焦避免无关改动。八、许可与分发边界仓库的双层许可结构LICENSE.md 与 README.md需要开发者留意引擎源码采用MIT LicenseCopyright © 2025 Facepunch Studios Ltd这是源码本身的开源许可game/bin下的原生二进制不受 MIT 覆盖而是按sbox EULA分发使用即表示同意 EULA 条款项目还包含第三方组件各自按原始许可协议受保护详见 game/thirdpartylegalnotices/。也就是说你可以基于 MIT 许可自由使用、修改与再分发引擎源码但预编译原生二进制受 EULA 约束第三方组件遵循各自许可。九、常见问题速查场景处理方式Setup 报错 The .NET 10 SDK is required安装 .NET 10 SDK 并确保dotnet在 PATH 中后重跑 Setup想跳过某次 pull 后的自动刷新SBOX_SKIP_HOOKS1 git pull想卸载 hooks 停止自动刷新删除.git/hooks/下带 Installed by sbox Setup 标记的三个 hook 文件构建输出被吞、想看完整日志运行./Setup.sh --verboseWindows 为Setup.bat --verbose不处于 git 仓库zip 下载Setup 会跳过 hook 安装并提示每次 pull 后需手动重跑 Setup提交后 CI 着色器步骤失败本地先跑build-shaders并提交编译结果结语sbox 的公开源码仓库为想要深入引擎内核的开发者提供了一条干净、低摩擦的路径不需要 C 工具链一个dotnet命令式的 Setup 脚本配合预编译二进制与自动 git hooks就能在 Windows、Linux 与 Apple Silicon macOS 上持续维护一个可运行、可调试的引擎开发环境。理解 SboxBuild 的阶段流水线Artifacts → Bindings → Managed → Shaders → Content、hooks 的自动刷新机制以及三层测试体系你就掌握了这个仓库的核心操作面——剩下的就是进入 engine/、game/editor/ 的源码开始你的引擎开发。赞分享【免费下载链接】sbox-publicsbox is a modern game engine, built on Valves Source 2 and the latest .NET technology, it provides a modern intuitive editor for creating games项目地址https://gitcode.com/gh_mirrors/sbo/sbox-public点击查看免费下载相关推荐sbox 引擎源码开发指南基于 AGENTS.md 的托管层构建、测试与协作规范sbox 引擎源码开发指南基于 AGENTS.md 的托管层构建、测试与协作规范 sbox 是一款构建在 Valve Source 2 之上、以 .NET终极指南如何在电脑上完美运行Switch游戏yuzu模拟器完整教程终极指南如何在电脑上完美运行Switch游戏yuzu模拟器完整教程 想在电脑上体验《塞尔达传说旷野之息》、《超级马力欧奥德赛》等Switch独占大作吗y虚拟化桌面应用图形学构建高效自动化预约系统的7大关键技术i茅台智能预约系统深度解析构建高效自动化预约系统的7大关键技术i茅台智能预约系统深度解析 在稀缺商品预约领域传统手动操作面临时间窗口短暂、多账号管理复杂、决策数据匮乏等核心挑战。i茅后端前端任务调度工作流自动化上一篇Unlock Music在浏览器里解密 mflac、ncm 等十多种加密音乐格式下一篇让旧 iPad 降级提速Legacy-iOS-Kit 保姆级实战教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑