Oxobox Games 如何构建数据驱动型棋盘,为 Sente 的六人策略游戏提供支持

如果将国际象棋和围棋的战略深度与最多六名玩家同时行动结合起来,会发生什么?这就是其背后的前提。森特一款由阿根廷 Oxobox Games 使用Unity制作的六边形棋盘策略游戏。玩家将标记物放置在六边形棋盘上,以构建能量网络、发射激光并追捕对手的能量核心——与此同时,桌上的其他玩家也在同时策划着同样的事情。
我们与游戏总监兼首席程序员(也是工作室的联合创始人之一)费尔南多·皮卡特 (Fernando Picate) 和制作人兼公关负责人华金·弗雷雷 (Joaquín Frere) 进行了交谈,探讨了如何同时解决六名玩家的行动,如何构建一个足够简单的棋盘编辑器,以至于他们自己的游戏设计师都不需要打开Unity,以及如何将一个酝酿了几十年的热情项目变成一款已发布的游戏。
从桌面游戏爱好到Unity十余年
Sente是 Oxobox 的第一款游戏;该工作室还从事电影和电视后期制作,为娱乐行业提供字幕、配音和质量控制。然而, Sente 的成立时间实际上比这家工作室还要早得多。最初的想法源于 20 世纪 90 年代,团队成员(他们在工作之外也是朋友)根据游戏设计师 Javier Mrad 的想法,开始对草图和纸质原型进行修改。最初的试玩广告版本是用 Flash 制作的双人游戏,之后短暂地尝试过 HTML5 Canvas,最终才转到Unity。
“我很快就感觉用Unity很顺手,虽然我也不知道为什么——我甚至不记得 Flash 有什么地方让我觉得很相似了,”费尔南多说。“当时, Unity还支持JavaScript,这感觉比直接使用 C++ 来开发像 Unreal Engine 这样的引擎要友好得多。JavaScript和 Boo 被弃用后,我们就彻底转向了 C#——直到今天,我仍然很喜欢在Unity中工作。”
费尔南多回忆说,从Unity 4.0 LTS 版本开始, Sente也从2D原型发展成为如今玩家看到的完全3D棋盘游戏。此后,该团队不断进行升级,现在使用Unity 6 开发Sente 。

设计一款无需等待轮到自己的桌游
Sente的电路板以能量核心为中心构建——在内部代码中,它们仍然被称为“国王”——这些中心部件会向周围的单元格辐射能量。轮到玩家时,他们可以移动自己的核心,或者将一个标记放到一个已激活的单元格上。代币有两面:一面是金属的,可以屏蔽激光并将能量传导给相邻的代币;另一面是易受攻击的,充能后会发射激光。将足够多的代币串联起来,你就可以从棋盘的另一端狙击对手的核心;如果你失去了对自身网络的控制,同样的事情也会发生在你身上。摧毁正确的标记,你甚至可以将两个相连的部件合并成一个全新的能量核心——突然间,你就可以拥有两个“国王”而不是一个,就像在棋盘上拥有两个皇后一样。
但问题在于:最多六名玩家同时游戏时,一次只能解决一个回合,导致比赛节奏极其缓慢。所以 Oxobox 围绕同步旋转重新设计了Sente 。

“回合开始时,会有一个计时器,每个玩家选择自己的走法,”费尔南多解释道。“一旦所有人都做出决定——或者计时器结束——回合就会同时结算。”这意味着玩家可以瞄准对手的核心进行看似稳操胜券的攻击,但却因为对手在同一瞬间放置了护盾而导致攻击落空。
为了避免六人比赛陷入僵局,需要多年的调整。“我们进行了大量的测试,以确保电路板不会卡住,”Joaquín 说。“当每个人都构筑起防御时,可能会感觉什么都没发生,但总会有动力采取行动。最终,有人创造出足够多的可能性,以至于其他人无法全部追踪,这时比赛就出现了转机。在实力强劲的选手之间,比赛可能会持续一个多小时——否则,比赛可能只有十分钟或十五分钟。

一个数据模型,数十种工具
Sente中的每个棋盘——无论其大小,无论其上放置什么棋子——都以相同的底层逻辑模型存储,与它在屏幕上的渲染方式完全分离。
“每个电路板都以逻辑模型的形式存储,与你实际看到的是分开的,”费尔南多说。“同样的数据驱动着一切:我们的编辑器内棋盘工具、游戏内棋盘随机化以及我们随游戏提供的模板。我们可以每秒对棋盘进行任意次数的重塑,而无需直接接触场景中的任何对象。
正是这种单一的真实来源,使得 Oxobox 能够提供从 4 号到 10 号的六边形棋盘(“大小”是指棋盘每条边上的单元格数量)——既足够小,可以保持快速匹配的流畅性,又足够大,可以支持工作室更复杂的单人游戏谜题,而且无需为每个谜题维护单独的系统。它还为 Oxobox 的自定义棋盘模板管理器提供了支持,这是一个直接内置于Unity中的编辑器工具,可以让 Fernando 使用画笔和对称工具手动绘制棋盘——核心、标记、障碍物和孔洞——然后将结果保存为可重复使用的模板。

完全不需要Unity 的棋盘编辑器
这个数据模型解决了一个更具体的问题:如何让非程序员为你的单人游戏战役设计谜题?
Sente的谜题设计师 Javier Mrad(正是他最初的想法开启了整个项目)从未安装过Unity。“一次也没有,不管我问了多少遍,”费尔南多笑着说。“正是这件事迫使我开发了一个真正的游戏内棋盘编辑器。”每个棋盘都可以导出为编码字符串,因此 Javier 可以在他自己的电子表格中设计整个棋盘或谜题布局,然后将字符串发送给我,我可以直接将其导入到游戏中。
Oxobox 计划向玩家开放同样的分享机制,以便他们最终也能创建、导出和交易自己的棋盘。

使用时间线编写单人战役脚本
Sente的单人战役——玩家将伪装成机器人潜入酒吧,挑战常客——几乎完全基于 Unity 的 Timeline 包构建。每个关卡或“分支”都是一个时间线序列,它将对话、镜头运动和分镜变化交织在一起。
为了实现这一点,Oxobox 构建了几个自定义时间线轨道:一个用于移动对话角色并设置他们的表情,一个用于沿着自定义样条线移动摄像机以制作电影序列,还有一个用于在时间线中间将画面从一种状态转换为另一种状态,并以动画形式呈现这种变化,而不是直接切换到该状态。分支剧情通过时间线信号和标记来处理,玩家获胜时,剧情可以向前推进;玩家犯错时,剧情可以循环回到重试点。

“我们一直在使用 Timeline,我从来没有遇到过真正的问题,”费尔南多说。“操作指引可能是我们最复杂的部分——它包含了对话、棋盘变化和摄像机运动等多个层次——但即使是我们的锦标赛决赛,使用了自定义样条曲线轨道来控制摄像机和角色,也是在同一个系统上运行的。”
这些对话轨道同时也是 Oxobox 的本地化流程。“我们之前在字幕制作和配音方面积累了丰富的本地化经验,”费尔南多说。“我们直接在对话片段中构建了自己的本地化管理器,这样我们就可以在编写台词的同时编辑其翻译。目前我们正在使用 TextMesh Pro将内容本地化为日语、中文、韩语以及其他几种语言。”

