>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
C-sharp

Unturned 内部工作原理:深入解析热门僵尸生存游戏的源代码

许多游戏开发者花费多年时间思考大型项目是如何在稳定网络代码的同时平衡庞大的开放世界。有时候答案就在我们眼前,就在 GitHub 上。Smartly Dressed Games 已经将 U3-SDK 作为开源项目发布——这本质上是由 Unity 引擎构建的热门游戏 Unturned 的"框架"。

我在寻找大型 SDK 实现示例用于 mod 制作时偶然发现了这个仓库。这不仅仅是用于创建新帽子或武器的脚本集合。我们在这里拥有的是游戏的核心源代码,揭示了一个拥有数百万玩家的项目是如何生存和演变了十多年。

为什么开发者应该深入研究别人的 SDK

如果你正在 Unity 中制作自己的游戏,你就会知道:YouTube 教程通常展示的是"无菌"的示例。在现实中,你需要处理优化大规模库存、在网络上同步载具,以及大量其他问题。

U3-SDK 的有趣之处在于它是一个活的项目。它几乎每天都在更新。这是一个绝佳的机会,可以了解专业人士如何组织大型 C# 项目的架构、如何处理资源,以及如何从 Steam Workshop 构建 mod 加载流程。

仓库内部结构

该项目基于 Unity 2022.3.62f3。这是一个相当新的 LTS 版本,所以代码看起来不像 Unity 5 时代的古董。克隆并打开场景 GameStartup.unity 后,你就进入了游戏的工作环境。

架构和网络通信

这里最酷的功能之一是网络实现。Unturned 以支持数百名玩家的服务器而闻名。在 SDK 中,你可以看到任务如何在客户端和服务器之间分配。例如,如何处理子弹命中或角色移动以最小化延迟。

物品和合成系统

如果你曾经尝试过编写库存系统,你就会知道这有多令人头疼。在 U3-SDK 中,你可以研究物品数据库是如何实现的。它不仅仅是一个 JSON 列表,而是一个复杂的结构,支持各种数据类型、磨损状态和自定义。

内容创作工具

开发者 Nelson Sexton 在 SDK 中添加了复杂逻辑创建的全功能示例。在官方频道上,有一个视频展示了基于此代码创建自导火箭的过程。这是一个清晰的例子,展示了游戏 API 的工作方式:从目标捕获到弹丸飞行物理。

如何在你的电脑上运行

设置过程尽可能透明,尽管它需要游戏在 Steam 上安装,因为 SDK 从主 Unturned 文件夹中获取大型二进制文件和资源。这是一个合理的解决方案:仓库本身不大,但你可以获得游戏的所有内容。

  1. 克隆仓库。
  2. 通过 Hub 安装所需 Unity 版本。
  3. 启动 Steam 并确保 Unturned 已安装。
  4. 打开项目并在起始场景中按播放。

顺便说一句,如果你计划深入研究代码,最好立即安装带有 Unity 和 .NET 桌面开发工作负载的 Visual Studio。没有它,在类之间导航将成为一种折磨。

对你的项目的实际价值

我看到了几种你可以使用 U3-SDK 的场景,即使你不是僵尸末日游戏的粉丝:

  • 学习模式。了解在高性能负载项目中单例、资源管理器和事件系统是如何实现的。
  • 优化。Unturned 可以在非常弱的硬件上运行。代码中有许多关于内存和 CPU 时间节省的有趣解决方案。
  • 创建 mod。这是显而易见的路径。与其猜测为什么你的插件"崩溃"了服务器,你可以直接在游戏源代码的上下文中调试它。

值得下载吗

如果你刚刚开始游戏开发的旅程,这个项目可能看起来过于庞大。代码很多,类之间的连接更多。但对于那些已经在 Unity 中磕磕绊绊的人来说,这是一个真正的教科书。

这里没有"银弹",但有经过时间验证的解决方案。仓库非常活跃,有近两百个开放的问题和定期的提交。这是一个罕见的案例,一个成功的商业游戏对社区如此开放。

它适合那些想要理解沙盒架构、网络代码和构建可扩展系统的人。如果你计划在 Steam 上发布自己的游戏并支持 mod,你绝对需要研究 U3-SDK——即使只是为了看看最好的做法是怎样的。

相关项目