Soft Crunch Games 如何为所有平台打造了 Foxy Dumplings

Oct 16, 2026
Foxy Dumplings | Soft Crunch Games

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

通过 Steam、GOG、Epic Games Store 和 Microsoft Store 准备同一款游戏,并支持 Xbox Play Anywhere,同时在 Nintendo Switch™ 2、Nintendo Switch、PlayStation®4、PlayStation 5、Xbox Series X|S、iOS 和 Android 上运行,对于任何工作室来说都是一个雄心勃勃的技术挑战。对于 Soft Crunch Games 的四人核心团队来说,这意味着从一开始就把跨平台开发纳入游戏架构。

Foxy Dumplings 是一款温馨的烹饪和管理游戏,讲述了专业厨师丽莎从职业倦怠中恢复,通过用她家族的饺子食谱和餐车重新开始的故事。玩家穿越受真实美食文化启发的12个地点,种植食材,学习地方食谱,运行卡车,并创造自己的菜肴。

Grzegorz Wątroba 负责All有编程、平台移植、生成管道和认证工作。由于一名程序员负责如此多的目标,该 Project 的构建围绕着一条 Rule:每个平台都从同一个提交获取相同的游戏。

狐狸饺子

一个项目,一个分支,一个游戏

在实践中,这意味着不妥协:没有单独的分支,没有半年后推出的移动版,也没有内容减半的版本。

这就成了一些Rules。这就成了一些Rules。每个Control方案ON必须独立完整,这样玩家就可以仅使用控制器、仅使用触摸屏或仅使用鼠标(有或没有键盘)来完成游戏。保存文件在所有地方都使用相同的Binary进Format式,因此在Devices之间移动进度不需要转化。

保存文件在所有地方都使用相同的Binary进Format式,因此在Devices之间移动进度不需要转化。

“我们从一Start就把认证要求视为设计约束,”Wątroba说。“Foxy Dumplings 没有文本输入字段,例如,所以我们永远不必处理多个不同系统上的屏幕键盘。”PC 存储 SDK,如 Steamworks,会自动从控制台和移动构建中剥离。

他希望每一次生成都来自一个菜单,而没有人手动触碰“项目设置”。今天那个菜单单在不同平台、生成类型、演示、测试版构建和输出配置中超过了70个条目。

将平台代码保留在边缘

Foxy Dumplings 是一个 Unity 项目和一个分支。游戏玩法总是共享的。平台代码仅允许在游戏与System交互的边缘使用:保存、用户Accounts、成就和奖杯、云步、DLC 检查、System对话框和导出照片。

肝脏说:“每个System都位于一个接口之后。”我们使用外观模式为游戏玩法提供一个入口点,然后在启动时使用一个小型工厂选择正确的平台提供者。游戏玩法玩法可能会说“解锁此成就”,但它不知道这个成就最终会出现ON Steam、PlayStation® 网络 还是All没有。

运行时时配置处理了大多数差异,例如Player是否可以退出到桌面或Open网页Link接。由构建脚本传递的 Scripting Define Symbols 处理了诸如从非 Steam PC 构建中排除 Steamworks 的情况。Unity Platform Defines 是最后的手段,仅在代码无法在其他地方编译时使用。

文本差异也是数据。本Localization密钥具有平台变体,因此“成就”ON PlayStation® 上可以变成“奖杯”,而无需更改游戏玩法代码。

Foxy Dumplings | Soft Crunch Games

自动化任何重复发生的事情

Wątroba保持工作量可控的方式部分是经验,部分是拒绝重复做同样的事情。任何跨平台重复出现的东西最终都变成了一个Script或菜项

使用正确的定义、输出Folder和Settings,一键完成指定的生成。它们还在大约 40 个平台和存储配置上运行编译检查,在 QA 看到之前就捕获了经典的“在 Windows 上编译通过但在 PlayStation 上崩溃”的问题。

作用域也很重要。我们拒绝了那些会增加平台工作量的Features:文本输入、我们需要托管或管理的在线Features以及游戏内Purchases。他说,我们还发售一个可以ON PlayStation 4 和 PlayStation 5 上运行的 PlayStation 生成。

承包商不需要考虑平台。UI 在 4K 画布上设计一次,然后根据不同平台进行缩放。音效Team在一个FMODProject中工作。游戏设计师在所有地方使用相同的数据Assets来构建内容。他说:“平台差异是我的任务,不是他们的。”

Foxy Dumplings | Soft Crunch Games

在编写代码之前设计输入和UI

Wątroba 的第一步是与 Foxy Dumplings 团队的 UX 设计师在纸上进行设计。

“我看到一些 Projects 因为一开始没有充分考虑输入和 UX 而遭受了损失,”Wątroba 说。我们的方法本质上是:这是我们的游戏,make它ON每个平台上都能运行。

在写第一线代码之前ON纸上解决那些问题,帮助Team避免了日后很多麻烦。

一旦UX体验完成,他们就围绕Input System构建了控制,包含一设置动作和三种Control方案:游戏手柄、键盘和鼠标以及触摸。游戏会根据玩家上一次使用ON内容实时切换方案,UI会自动跟随。

该Team在近 200 个地方使用了单一个按钮提示预制件。它理解每个平台的输入。“拿起一个控制器提示就会Change;Move鼠标它们又会Change,”他说。

烹饪小游戏是最难的部分,因为每个小游戏都必须兼容每种输入方法。Steam Deck 教给他们一个重要的Rule:不要询问设备是否存在;要询问它是否能实际产生你需要的输入。

Wątroba 解释说:“它的触摸屏可以表现为鼠标和左按钮,这使得需要两个鼠标按钮才能完成的迷你游戏变得不可能完成。”围绕能力而非Devices进行设计也有助ON老旧的Android硬件。

Foxy Dumplings | Soft Crunch Games

先分析最弱的硬件

Foxy Dumplings 是一款使用 Spine 角色和无光照 Materials 的 2D 游戏,因此当 GPU 出现困难时,通常是因为全屏图层太多或像素太多。

一个例子是厨房。一些特效被渲染到 4K 渲染纹理中,并叠加到UI界面上——ON 1080p 或 720p 显示器上是不必要的。Watroba 将渲染纹理更改为遵循实际屏幕Resolution率,并Disabled了 HDR 和DepthTextures,因为游戏从未使用过它们。从视觉上看,没有任何变化,但ON Steam Deck 上,图层现在帧填充的像素大约减少了 8 倍,其渲染纹理从大约 32 MB 降至大约 4 MB。

Wątroba 的分析过程与他多年前学到的相同:他在实际设备上制作一个Development Build,附加Unity Profiler,找出哪些部分很耗费资源,测量它,修复它,然后再次测量。他说:“设备是王。”

内存也需要关注。该 Team 支持 14 种语言,包括中文、日语、韩语和泰语,每种语言都有自己的字体图集。当Team在语言更改期间看到内存峰值时,他们分析了分配路径,发现从Static图集中缺失的角色在运行时被栅格化到超大的4096×4096的Fallback图集中,并且每新增一个角色都会重新上传一个完整的16 MB图集。

修复方法是使用 2048×2048 的页面重新生成FallbackFonts,并在切换前Batches添加字形,这使得日语新建集内内存大约 48 MB 减少到每个字体 4–8 MB。

Team 在该项目中使用了 Addressables,因为 Unity Localization 是基于它的。All 14 种语言的字字符串和资源表都存储在可寻址组中,并按语言加载。“所有东西仍然本地发送,但 Addressables 为我们提供了一种干净的方式来管理这些数据和内存。”

Foxy Dumplings | Soft Crunch Games

测试一次共享游戏玩法,多次平台行为

该Team没有大型自动化测试套件,但他们自动化了一些系统,包括Check游戏内Economy是否可能崩溃的模拟。

使他们的质量保证工作可控的是平台共享了几乎All的代码。游戏玩法性ONPC上得到了深入的测试,因为迭代速度最快。ON主机和移动设备上,测试的重点ON平台图层:认证要求、保存和加载中、挂起和恢复、切换Users、控制器断开连接、奖杯和成就以及存储空间running。

“我们的External质量保证合作伙伴获得了发布、调试和带有调试工具的‘完全解锁’发布,”Wątroba 说。“测试人员可以Jump到Any章节或任务并操纵金钱、Energy或时间,这样他们就不必重玩五个小时来验证一个错误。”

public演示也是一个主要的测试音频源。超过18,000人玩过它,Team收到了超过一千份调查回复,这些回复促成了可访问性Features、错误修复、调整和质量改进。

首先使跨平台保存可移植

跨平台进度始于使保存本身可移植。进度是一个加密的Binary进制文件,ON每个平台上字节格Format都相同。ON移动上保存的文件可以ONPC上阅读。

同步有两个图层。第一个是每个平台的原生 Cloud Save。第二个是 Unity Cloud Save,它在生态系统之间携带进度。两者位于同一接口后,上方有 MERGE 逻辑。

每个保存槽都是根据其最后更新时间戳进行比较的。删除的槽位会留下一个标记,这样它们就不会从云返回。合并只在主菜单中发生,绝不会在游戏日中途发生,因为Foxy Dumplings在玩家进入睡眠时会保存。在没有网络连接When,上传会静默重试,When游戏暂停时会刷新。

Team 使用 Unity Authentication 代码链接控制台和 PC,因此玩家无需另一个帐户。跨进度是可选的,游戏在离线时仍然完全可玩。

肝脏说:“最大的Lesson是存储是容易的部分;Identity是困难的部分。”每个生态系统都有自己对“Player”的定义,因此“Authentication”必须分别信任 Steam 票据、PlayStation 令牌和 Xbox 令牌。

Foxy Dumplings | Soft Crunch Games

在不创建另一个平台问题的同时构建 Foxtagram

Foxtagram 是丽莎游戏内手PhoneON的一个应用,玩家可以使用盘子、餐具、食材、饺子、滤镜、帧和贴纸来摆拍菜肴照片,然后发布以生成餐厅的受欢迎程度。

主要的架构决策是让Editor器保持在常规的 Unity UI 中,内部不包含任何指定的于平台的代码。Wątroba 解释说:“它的 50 个滤镜是照片材质ON一个着色器的预设,而不是叠加层。”When你拍照时,一个专用的Camera将照片区域渲染成一个在输出Resolution的方形渲染纹理。我们使用 AsyncGPUReadback 将其读回并以 JPG 编码result。那个帧看起来像Camera闪光灯。

输出分辨率和 JPG 质量来自每个平台的设置。Editor器支持鼠标、控制器器和触摸:桌面ONDrag和鼠标滚轮;控制器ON摇杆和扳机键;触摸屏支ON捏合和旋转。

在游戏之外的分享是通过每个平台的 নিজস্ব 工具进行的。PC 可以使用照片Folder Steam 库,主机使用其System相册,移动设备使用System纹理层。对于一个小Team来说,使用平台现有的分享Features可以省去很多认证和Moderation工作。

Foxy Dumplings | Soft Crunch Games

迁移到 Unity 6.3 LTS

“Unity 6.3 LTS 带来的最有价值的是一个 LTS 发布版本,我们所依赖的一切都对齐了,并且其支持窗口覆盖了我们的发布需求,”Wątroba 说。

Team 在编辑 ScriptableObjects 等领域发现 6.3 更稳定,并且旧的 Android Devices 受益于 Vulkan 的修复。

版本时间也改进了。“使用 IL2CPP,我估计我们的构建速度大约快 10-15%,具体取决ON平台和迭代类型。”运行时时性性能也改进了几个百分点,尤其是ON较弱的硬件上。

升级过程大部分是平滑的。每个VFX Graph特效最初都变得不可见,因为迁移过程中丢失了着色器引用;重新导入图表很快就解决了这个问题。

在端口出现之前规划端口

对Team影响最大的决策是保留一个分支并从一开始就严格遵守平台差异。“游戏玩法代码从不询问它在哪个平台ONrunning。”“如果有什么不同,那就是数据、质量设置或接口背后的提供商,”Wątroba说。

Team 在游戏设计文档、美术圣经和叙事圣经的同时创建了技术架构文档,他们建议这样做。肝脏笔记,“在制作前绘制游戏的技术图层帮助我们保持职责分离,并使添加平台变得更加容易。”

下次,Team 会更早地在每个开发套件上运行构建。“架构是正确的,但很多实际的控制台工作仍然在提交前的几个月内完成,而且硬件总能发现 Editor 不会发现的问题。”

Foxy Dumplings | Soft Crunch Games

向世界各地运送一款游戏

Foxy Dumplings 的核心是一个简单的技术承诺:相同的游戏,相同的代码库,跨 PC、控制台和移动平台。对于一个小型Team来说,这只有在将跨平平台Development视为架构约束而不是留到结束进行移植任务时才成立。

“通过保持游戏玩法共享、隔离平台集成、自动化重复的生成工作,并尽早针对最弱的目标进行测试,我们的目标是让同步发布不再是维护许多个Foxy Dumplings版本的重点,而是让一款游戏无处不在地发布,”Wątroba说。

Foxy Dumplings 将于 2027 年通过 Steam、GOG、Epic Games 存储、Microsoft 存储(支持 Xbox Play Anywhere)在 PC(Windows、macOS 和 Linux)上提供,同时也会在 Nintendo Switch 2、Nintendo Switch、PlayStation 4、PlayStation 5、Xbox Series X|S、iOS 和 Android 上提供。查看 Unity 开发者在 Unity Blog 和 Resource Hub 上的更多故事。

*Nintendo Switch是Nintendo的商标。