深盘地牢:Unity 中的三Player在线合作游戏

Oct 19, 2026|8 最低
Game designMade with Unity
Deep Dish Dungeon 的 Key 艺术,由 Behold Studios 和 Raw Fury 制作。Made With Unity。一个身穿绿色斗篷和红色束腰外衣的人物在一个阴森的地下室中高举着一根火把。一个骨架潜伏在人物的左后方。游戏徽标文本出现ON右侧。

为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。

了解 Behold Studios 的两人团队如何使用Netcode for GameObjects、 Lobby、 Relay、 Vivox和Unity 6.3 构建在线合作冒险游戏 Deep Dish Dungeon。

一个没有专门网络工程师的两人团队如何编译版本一款在线合作游戏?

Behold Studios成立于巴西巴西利亚,现总部位于Canada多伦多,十多年来一直使用Unity制作游戏。他们最新发布《深盘地牢》是一款支持 1 至 3 名玩家的合作地牢探索游戏。在《深盘地牢》的大部分开发过程中,只有两个人参与其中:工作室负责人 Saulo Camarotti 负责设计、编程、业务和营销,而艺术家 Carolina Baumgarten 则创作了所有视觉效果,从概念艺术到3D模型、纹理、UI等等。

《深渊地牢》备受期待,在发售前就已突破 50 万个Steam愿望单,现在已登陆Steam和Xbox Game Pass ,并支持跨平台游戏。阅读案例研究,了解 Behold Studios 如何利用Unity Services和Unity 6.3节省时间和资源,并了解使这个雄心勃勃的项目成为可能的设计决策。

深盘地牢 | Behold Studios | Raw Fury

结果:

  • 游戏发售前Steam愿望单数量已超过50万,其中预告片发布后几天内就新增了6.5万份。
  • 在开发第一天就实现了可玩的在线多人游戏(用作动词)构建原型
  • Steam和Xbox之间无需额外网络代码即可进行跨平台游戏
  • Localization为 11 种语言
  • 后加入的玩家会了解共享地下城中的所有敌人、项和对象的最新信息。
《深盘地牢》发售预告片

将多人游戏的限制转化为优势

Behold Studios 之前也发布过多人游戏,包括 2011 年的Facebook游戏和 2020 年的《 Out of 空间》 。对于Deep Dish Dungeon ,Saulo 特意保持了团队规模较小。他聘请卡罗琳娜负责这个项目,因为作为一名多学科艺术家,她可以胜任3D、 2D、标志、插图和概念艺术等工作。

作为唯一的程序员,Saulo 知道他必须格外小心,才能将项目控制在作用域内。“玩家多人联网会给项目增加很多复杂性,通常人们会安排专门的工程师来处理这些问题,”他说。“这不仅仅是两个人的团队,只有我一个程序员。”所以我需要设计一款利用多人游戏局限性的游戏。

深盘地牢 | Behold Studios | Raw Fury

这促使他们做出了一系列深思熟虑的选择,将这些局限性转化为优势:

  • 仅限合作模式,无PvP模式:因为玩家都是同一阵营的朋友,所以游戏可以信任每个客户端。
  • 点对点连接,无需专用服务器:创建游戏的玩家担任主机。
  • 容忍延迟:高延迟不会影响游戏体验,因此游戏不需要复杂的移动预测。
  • 刻意营造的简约风格:该游戏以输出分辨率的三分之一进行渲染,呈现出像素化风格,这既符合 Behold Studios 的技术设置,又避免了繁重的视觉特效和Shader工作。

艺术风格也对玩家的预期起到了一定作用。“就连美学方面也对我们有所帮助,”萨乌洛解释道。“有些事情注定无法完全解决。”

深盘地牢 | Behold Studios | Raw Fury

从第一行代码开始设计多人游戏

Saulo 之前有过使用 Photon 等专用多人游戏堆栈的经验。即便如此,他还是给自己设定了三个月的(用作动词)构建原型预算,以测试Unity 6 的端到端多人游戏堆栈是否能够经受住考验。

“当我们看到《Netcode for GameObjects》时,我们意识到它正合我们心意,”他说。“我们可以使用 Unity 的核心逻辑——我们创建事物和管理对象的方式——并在此基础上添加多人游戏层。”

他从Unity 文档中Lobby和Relay的代码示例入手,并取得了快速进展。“第一行代码就已经实现了多人游戏Lobby和Relay系统,”他说。“第一天,我就已经玩上多人游戏了。”

从开发之初就考虑多人游戏模式,意味着根本没有单人游戏代码库需要重构。Saulo 曾目睹其他团队花费一到六个月的时间,为现有项目添加多人游戏功能。

使用Unity实现多人游戏

深盘地牢 | Behold Studios | Raw Fury

通过Lobby和Relay连接玩家

对玩家来说,加入好友的队伍只需点击一下。房主从Steam好友列表中选择一位好友,并发送带有LobbyID 的邀请。朋友接受邀请,加入同一个游戏大厅(如果房主设置了密码,则输入密码),并通过Relay连接到房主。

更难的部分发生在幕后。朋友可以加入正在进行的游戏,所以他们必须了解地牢中所有联网对象的情况,例如哪些敌人已经死亡、他们的剩余生命值以及哪些物品已被拾取。Saulo 希望避免构建自定义场景管理系统。相反, 《深盘地牢》会在游戏开始时将场景序列化到保存文件中。当有人加入时,场景对象会被已移除,并从主机的同步状态动态加载。回归玩家将出现在他们上次保存的生成点。

Saulo表示,最难的问题是与州政府打交道,而不是让球员们联系上。

“在单人游戏中,你可以确定事情会按照一定的顺序发生,”他说。“在多人游戏中,如果有人在游戏过程中加入,你永远无法确切地知道变量和对象的状态会是什么样。对象必须知道,如果它们在错误的状态下被调用,应该怎么做。

深盘地牢 | Behold Studios | Raw Fury

使用Vivox将语音变成一种机械装置

许多合作游戏玩家已经使用Discord等工具进行语音聊天,但 Saulo 选择Vivox是因为他希望将语音融入到探索地牢本身的体验中。

“我希望玩家能够感受到地牢,以及地牢中的孤独感,”他说。“我想让他们感受到他们的朋友被抛在了后面。”

在《深盘地牢》中,语音是具有位置性的,并且会受到每个玩家周围空间的影响。地牢各处大约放置了 15 个对讲扬声器,可以用来向所有人广播玩家的声音。这样一来,一个朋友可以留在营地做饭,而另一个朋友可以出去觅食,并通过无线电向营地报告补给。说话也会像跳跃、挥舞火把或穿着盔甲走动一样,成为敌人会做出反应的噪音。

“现在玩家们正在思考如何以及何时使用这项功能,”萨乌洛说道。“它为交互增添了许多层次。”

在你的游戏中Add语音和文字聊天功能

深盘地牢 | Behold Studios | Raw Fury

利用Analytics改进游戏玩法

《深盘地牢》是一款非线性沙盒游戏,没有地图,没有指南针,大多数障碍都有多种解决方案。这使得游戏测试变得困难。“每次我们观看某人比赛时,他们的表现都不一样,”萨乌洛说。

他围绕这种自由度构建了Unity 数据分析服务战略。它会追踪物品在游戏中的移动情况,并记录每次命中、战斗遭遇和死亡,以及玩家的物品栏和是否进食。最后一个数据点最终被证明至关重要。

“在《深盘地牢》中,食物不是治疗药水。”“这是个增压器,”他说。“我看到很多玩家饿着肚子四处探索,而这些玩家都反映游戏太难了。”

这一发现催生了一种新的游戏玩法系统:饥饿米,当玩家长时间不进食时,饥饿值会下降,导致玩家生命值降低。result这一机制,玩家可以更容易地理解为什么在进入地牢之前需要进食。

Deep Dish Dungeon 演示的Analytics仪表板

Deep Dish Dungeon演示的Analytics仪表板

利用诊断功能捕获错误

在他们的发行商 Raw Fury 加入之前,Saulo 一直没有自己的质量保证团队,他使用Diagnostics来查找自己机器上无法重现的崩溃和错误。它还帮助他按出现频率和平台对它们进行排名。

其中一份上报开头提到,玩家无法attack敌人。“attack一切正常,敌人也表现良好——到底发生了什么?”萨乌洛说道。诊断数据显示,一系列事件的起因要早得多,当时的一份清单中引用了一个已经不存在的项。“我们本可以更早发现这个问题。”

Deep Dish Dungeon演示的诊断仪表板

在Unity 6.3 中测试多人游戏

对于一个独立程序员来说,设置多人游戏测试会话可能会占用大量时间。Unity 6.3 中的Multiplayer Play Mode已移除了大部分此类工作。Saulo 可以进入Play模式,并在Unity 编辑器中同时运行两到三个客户端,无论是在完整的地下城中还是在专用的测试场景中。

他说:“我只需按一下按钮,就可以在游戏中的任何位置,让两到三名玩家进行测试。”“running本地游戏与通过Relay和Lobbyrunning游戏几乎相同。代码是一样的。

Unity 6.3 稳定性的改进同样至关重要。Saulo 记得旧版本几乎每天都会崩溃。在升级到Unity 2023 和Unity 6 之后,他回忆说:“我花了一段时间才意识到,距离上次崩溃已经过去一个多月了。”

使用Localization包进行翻译

Behold Studios 之前的游戏依赖于第三方本地化插件,但这些插件并不总是能跟上Unity 的新版本。这次团队使用了Unity 6 的Localization包。它提供与Google Sheets 同步的string表,以及字体回退链,当第一种字体无法渲染某种语言时,会尝试第二种字体。Deep Dish Dungeon推出 11 种语言版本:英语、巴西葡萄牙语、法语、德语、西班牙语、拉丁美洲西班牙语、波兰语、俄语、日语以及简体中文和繁体中文。

Saulo 的建议是尽早开始规划长篇翻译工作。他说:“尽早考虑本地化并创建一个已经考虑到本地化的UI是非常明智的。”

深盘地牢 | Behold Studios | Raw Fury

临别赠言

对于考虑在线多人游戏的小团队来说,Saulo 的主要建议是关于设计,而不是技术。

“Create一款你可以信任客户的游戏。”Create一款合作游戏。“Create一款延迟不是问题的游戏——即使延迟达到 500 毫秒,游戏仍然能够正常运行,这都归功于游戏的设计,”他说。“从设计和生产的角度来看,这比你将要使用的实际技术更重要。”

体验Unity 6.7 测试版的新功能