全部文章

一个世界,五个平台 — 开发日志 #2:跨平台 MMORPG 开发的挑战

让同一款 MMORPG 能用鼠标、触摸屏和手柄游玩:Ancient Online 在界面、操作、30 种语言和本地聊天翻译上的取舍。

昏暗的光线下,一只游戏手柄放在桌上,映着红色和青绿色的反光

我们把 Ancient Online: Remastered 设计为同一个世界,让 Windows、Linux、macOS、Android 和 iOS 玩家在其中相遇。纸面上听起来很简单:一款游戏,五个平台。但在实践中,把一款为鼠标点击而设计的经典 MMORPG 带到手机和手柄上,意味着一连串艰难的决定。在这一篇开发日志中,我们分享这些决定及其背后的理由。

游戏仍在开发中。开发版本目前在 Windows 和 Android 设备上测试;macOS、Linux 和 iOS 是我们瞄准的其他平台。

规则 1:一个世界,一套规则

移动端玩家没有单独的服务器,也没有“简化版”的平衡。由于游戏的所有规则都在服务器上运行,无论您从什么设备连接,都是在同一个世界、按同样的规则游玩。您的账号、角色、背包和公会都与设备无关。服务器方面的内容,我们已在开发日志第一篇中介绍过。

对客户端而言,这条规则意味着不同平台可以提供不同的操作方式,却不能提供不同的能力。

触摸屏:重新思考,而不是缩小

把经典 MMORPG 的界面原样缩小后搬到手机上是行不通的;按钮对手指来说太小,屏幕也太拥挤。所以我们为移动端设计了一个独立的界面层:

  • 浮动摇杆:您把手指放在屏幕左半边的哪里,摇杆就出现在哪里;玩家不必去按屏幕上某个特定的位置。
  • 按住即攻击的按键,周围环绕着一道技能弧。
  • 点击选取目标:PC 上“点击怪物”这一习惯在触屏上的对应做法。

还有一件事是我们刻意没做的:点击移动。摇杆负责移动。如果有两套移动系统,每一次点偏的目标都会变成一次并非本意的奔跑,而在战斗当中,这是不可接受的。

还有一个虽小却很重要的决定:手机上一次只能看到少数几个栏位,因此切换技能页的频率远高于桌面端。我们让药水栏位独立于页面;切换页面时,您的药水留在原处。做到这一点可不只是在界面里挪动一个格子:我们必须把使用药水栏位的代码与页面逻辑彻底分离。

镜头与多点触控

在手机上,手指在空白区域拖动时镜头就会转动。在界面之上放一个全屏的“镜头区”来实现这一点看起来很诱人,但那样的一层会吞掉本该传给它下面每个按钮的触摸。我们把镜头拖动放在玩家控制器而不是界面层中处理,从而避免了按钮与镜头之间的冲突。我们还用一个很小的移动阈值来区分目标选取和镜头拖动:没有越过阈值之前,镜头纹丝不动;一旦越过,镜头便开始转动,而不会突然跳一下。

手柄:菜单也要能逛

我们为整个界面设计了手柄支持,而不仅仅是战斗。为了用手柄浏览背包和菜单,我们加入了用十字键进行的焦点导航。这里同样有个陷阱:十字键和确认/返回键既要用来浏览菜单,又要用来使用快捷栏。解决办法是:窗口打开时,这些按键用于浏览菜单;窗口关闭时,它们回到快捷栏上。在战斗中途悄无声息地滑入“菜单模式”,会是这个系统可能出现的最糟糕的 bug。

游戏会记录您最后使用的是哪种输入设备:当您切换到手柄时,触控按钮会从屏幕上隐去。

设置也跟着平台走

设置窗口会根据设备调整形态:鼠标和键盘选项卡只在 PC 上出现,触控选项卡只在手机上出现。Lumen、DLSS、FSR 等仅限桌面端的画面选项,在移动端让位于分辨率和抗锯齿选项。在每台设备上,我们只显示在那里真正起作用的设置。

30 种语言,以及按语言量出来的界面

游戏和我们的网站以 30 种语言为目标。多语言界面隐藏的难点在于文本长度:同一个按钮标签,在一种语言里可能很短,在另一种语言里却长出一倍。设置窗口中各选项卡的宽度,我们不是平均分配,而是根据每个标签在该语言中的实际宽度来计算;语言一变,布局就重新计算。在语言选择器中,每种语言都以它自己的名称书写。

在我们自己服务器上的聊天翻译

为了让来自不同国家的玩家能在同一个世界里相互理解,聊天消息会被翻译成读者的语言。构建这套系统时,我们有两条原则:

  1. 消息不离开我们的服务器。翻译在我们自己的服务器上由一个仅使用 CPU 的本地模型完成;不使用任何外部翻译 API。
  2. 保留游戏的语言。MMORPG 的聊天里满是缩写、游戏术语和表情符号。我们使用游戏专用的术语表,并单独保护表情符号,以免它们在翻译过程中丢失。

接下来

移动端性能以及我们瞄准的其他平台方面的工作仍在继续。想查看玩家这边完整的操作列表,请看游戏网站上的 PC 与移动端跨平台指南。想了解我们的工作室,请阅读 Astronaut Entertainment 是谁?。

分享:
其他语言版本29