首页Mod

Mod / 01

Manta

重新定义 UI。

支撑 Minecraft 画面构建的通用 UI 引擎。

Train System Utilities 的管理画面与车站发车信息屏、Spatial Audio System 的操作画面等等。Manta 是 BelugaLab 多款模组共同使用的 UI 引擎。

从菜单到世界中的显示屏,各种画面都通过同一套机制进行绘制。

立在车站前广场上的整面墙显示器。左侧为环形线路图与车站,右侧为时刻、车站与列车及信号的数量、列车列表和时刻表。前方有扬声器和管理用计算机
设置在车站前的大型显示器,以及在手边打开的管理画面,都由同一个 Manta 绘制。本页展示的图片均在实际的 Minecraft 中拍摄。

Point of view

Consistency is built into the foundation.

不为每个画面重做一遍。培育共同的基础。

Manta 的目标不是为每个模组分别开发不同的 UI,而是通过共同的机制提供一致的操作体验。

新的功能与表现,会尽可能作为 Manta 的通用功能来实现。再将由此获得的改进推广到其他模组,使 UI 整体的完成度随着开发的积累而不断提高。

Consistent Interface

无论哪个画面,操作感都保持一致。

Manta 提供按钮、开关、对话框等通用的 UI 组件。

操作方式、动画以及提示的显示方式也已统一,因此即使是不同的模组,也能以相同的感觉进行操作。

在一个画面中学会的用法,可以直接用在其他画面上。

2 款模组、3 个画面。同一套 UI 系统。

Train System Utilities接触网设置
接触网设置画面。左侧为设计列表,右侧为所选双层接触网的层数、列数与高度差,下方为接触网补给的剩余量。右上角为提示开关与关闭按钮
Train System Utilities铁路管理
铁路管理画面。时钟与车站符号、正在停靠的列车与下一班停靠的列车、显示器的连接状态。右上角为提示开关与关闭按钮
Spatial Audio SystemPlayback Device
Playback Device 画面。名称输入栏,状态、文件、格式与播放范围,播放与停止按钮,以及衰减与范围显示的开关。右上角为提示开关与关闭按钮

Screen & World

菜单如此,世界中的画面亦然。

Minecraft 的 UI 并不只有菜单画面。

在世界中也存在着各种画面,例如车站的发车信息屏和显示运行信息的大型显示器。

Manta 同样支持这类世界中的显示屏。由于与普通操作画面使用同一套绘制系统,即使显示位置不同,也能实现一致的设计与表现。

列车管理系统画面。左侧为车站、列车与信号的数量,右侧为环形线路图与车站名称
放置在草地上的发车信息屏。显示 1 号站台正在停靠的列车与下一班停靠列车的栏位。前方有站名牌

In-game Guides

不离开游戏,就能查看使用方法。

无需每次为了查询操作方法而切换到浏览器。

Manta 支持游戏内 Wiki,可以在 Minecraft 中查看说明文字、图片和操作指南。

指南中还可以嵌入实际运行的 UI。画面会配合说明自动操作,显示内容与引导文字依次切换。

由于可以在画面上确认操作流程,即使是复杂的功能,也能一边观看实际动作一边理解。

游戏内 Wiki 的“管理用计算机概述”页面。页面中列车管理系统的画面正在运行,光标停在标签页切换处。下方横栏显示“打开标签页列表”同一页面。画面的标签页列表已打开同一页面。画面已切换到列车标签页,显示列车列表。下方横栏显示“列车:线路上的列车与状态”同一页面。在车站标签页的列表之上,标签页列表再次打开。下方横栏显示“车站:车站与线路编号”

Efficient Rendering

只在需要时,只做需要的处理。

要提升 UI 的显示性能,除了绘制速度,减少不必要的处理同样重要。

Manta 的设计是在画面状态没有变化时,尽可能抑制不必要的更新处理。

通过在数值或显示内容变化时才进行必要的处理,力求即使在复杂的管理画面中也能减轻对游戏的负担。

Multiplayer Consistency

多人游戏中,也能正确共享信息。

即使在单人游戏中运行正常,在多人游戏中也可能出现各玩家看到的内容不一致的情况。

Manta 采用以服务器端信息为基准来管理画面状态的设计。

即使多名玩家进入同一个世界,也注重保持信息的一致性,显示一致的状态。

Verification

在实际游戏中确认运行情况。

画面是否正确绘制,仅凭代码无法判断。

Manta 会在实际的 Minecraft 环境中显示画面,确认外观和操作是否按预期运作。

同时也会检验功能的新增或内部结构的变更,是否给现有画面带来了意料之外的变化。

不仅要添加新功能,保持既有的行为同样是开发的重要标准。

Generations

不断改良的 7 个世代。

Manta 的内部设计至今已历经 7 个世代的演进。

每个世代都在保留既有功能的同时,逐步改进绘制性能、通用化、可维护性等方面。

目前的第 7 世代,重点不在于增加新功能,而在于整合既有功能、整理重复的实现。

不以多种方式实现相同目的的处理,而是尽可能集中到共同的机制中,以降低复杂度,让今后的开发与改进更加容易。

各世代的开发主题

  1. 01Generation 01 — Rendering实现绘制 UI 的基本功能。
  2. 02Generation 02 — Components将 UI 的构成要素通用化,改进为能够高效开发画面。
  3. 03Generation 03 — Optimization重新审视内部结构,实现轻量化并提升稳定性。
  4. 04Generation 04 — In-game Documentation完善在游戏内显示视频和 Wiki 的机制。
  5. 05Generation 05 — Visual System将动画、图形、图标等表现通用化。
  6. 06Generation 06 — Rendering Efficiency减少画面无变化时的不必要处理。
  7. 07Generation 07 — Integration整合既有功能,整理重复的实现。

Manta 的改进会通过采用它的各个模组的更新送达用户。

Principles

开发 Manta 时我们所重视的事

01

活用既有的机制

开发新功能时,首先考虑能否通过组合既有的机制来实现。增加可以通用化的部分,避免反复实现同样的功能。

02

延续既有的功能

即使变更内部结构,也以保留原有功能为原则。在迁移到新的设计时,也会确保以往的操作和功能不会丢失。

03

确认与既有模组的兼容性

更新 Manta 时,也会确认与已发布模组的兼容性。在引入新机制时,也会检验其对既有画面和功能的影响,注重维持稳定的使用环境。

04

确保便于操作的尺寸

按钮等操作元素设有统一的最小尺寸。不仅是画面的设计,实际操作是否便利也是 UI 设计的重要条件。

Where it lives

采用 Manta 的模组

Manta 不作为独立的模组分发。

它内置于 BelugaLab 开发的模组中,安装其中任一模组即可使用 Manta。

目前已在以下模组中采用。

各模组所采用的 Manta 版本,可在分发记录中查看。

Distribution History

已发布 8 个版本

查看分发记录