编辑器:若干好的特性

编辑器:若干好的特性

编辑器:若干好的特性

2021-08-18 游戏开发中的编辑器,应当具备些什么特性才能更好地为游戏设计师们赋能?让想法表达、工业化、创作作品更为容易。

好的编辑器的若干特性

1.工具的必要性

设计师们设计内容,并借用工具表达设计,输出最终的产物。

通常来看,从业者们会需要一个专业的工具或者软件,用来将想法转变为专业的产物,对于原画师,可能是绘图软件;对于作家,可能是纸笔或者写作软件;对于策划,则可能是EXCEL或者特异性的编辑器。从这个角度理解起来,工具的实用性能很大程度上改善工作的效率,“工欲善其事必先利其器”,而特异性的需求和其编辑器,就像DSL(领域特定语言)和其对应的编辑工具。

对应起来,一个很基础的关于编辑器的问题是:为什么不直接写代码?而要去折腾一个新的编辑器和对应组织数据结构,这个问题暗示使用C#作为逻辑的描述语言:

  • 借助UNITY引擎内部的MonoBehavior的“生命周期”逻辑,可以原生的访问所有接口。
  • C#作为一门面向对象的高级编程语言的表达能力、架构能力。
  • 使用编程语言的调试灵活度。

似乎直接使用原生语言,可以作为默认的、同时也是极其强大的解决方案。那么为什么我们需要一个领域特定语言来组织逻辑?

很简单,为了聚焦解决问题。而不把精力浪费在掌握工具上,编程需要学习使用程序语言、不同的思考模式、以及大量的计算机科学知识,随着流程的工业化,会让专业的人来做专业的事情。对于设计师们,应当专注于设计,工具的表达应该最大化为了设计服务。

graph LR;
A[设计的表达] -->|途径| B(编写逻辑代码);
B -->|需求| B1(编程技能);
B -->|需求| C1(设计能力);
A -->|途径| C(使用编辑器);
C -->|需求| C1;

2.评价的维度

如何评价一个编辑器是否好用?好或者坏,是一个主观的印象。类比其他软件产品,也许我们可以使用抽样调查、用户深度访谈、用户画像分析等手法。这里我们主要讨论两个思考角度:

2.1.设计的角度

《设计心理学》中提到,好的设计有两个特征:

  • 可视性(discoverability)

操作可传达,可被用户发现。

易通性(understanding)

  • 操作可理解,可让用户明白。

后续又提到了六个原则:

  • 示能

物品的特性与决定物品预设用途的主体之间能力之间的关系

  • 比如:(批处理)脚本可以批量执行一系列指令;一个编辑器可以用来编辑存储特定数据。

意符

  • 告诉用户可以采取什么行为、如何操作。
  • 比如:常规按钮是可以按下的,点击就行;开关按钮是有开关两个状态的,一般需要点击开关而不是文字;进度条按钮是一个可以拖动,有上下限的控件。

约束

  • 提示用户操作的范围
  • 比如:数值类型的有效范围;枚举类型的可能选项;进度条按钮的最大值最小值。

映射

  • 控制和显示 契合自然映射,设备容易使用。
  • 比如:拖动某个元素,运动应该与鼠标轨迹同向;自然卷动时,更像反向拖动页面来使视窗内显示合适的内容。

反馈

  • 沟通行为的结果。必须是即时的
  • 比如:一个行为的响应应该尽可能地快,否则会给人无响应的印象;linux的哲学中曾有:没有消息就是最好的消息,但是没有消息本身一种反馈。

系统的概念模型

  • 高度简化的流程,告诉用户事物如何工作
  • 比如:一个流程处理能告知用户先后经过什么阶段……

图示:UWP UI中,差异化的按钮控件。观察不同的按钮会让用户采取不同的交互策略。

总结来说:我们可以思考编辑器:

  • 交互

交互的方式是否可被理解,

  • 交互的候选范围、选项对应含义是否明晰。
  • 交互是否即时有反馈

系统的概念模型是否易懂

2.2.需求的角度

我们引入软件生命周期和主要参与人员的诉求来分析这个问题:

软件生命周期:

graph LR;
A[分析阶段] -->|明确需求| B[设计阶段];
B -->|模块接口设计| C[实现阶段];
C -->|程式代码| D[测试阶段];
D -->|修正| E[维护阶段];

主要参与人员参与阶段:

  • 编辑器设计师:分析阶段,设计阶段,维护阶段

诉求:编辑器功能逻辑明晰,UI交互合理……

编辑器实现程序员:设计阶段,实现阶段,测试阶段,维护阶段

  • 诉求:需求稳定,逻辑实现优雅,UI控件可以复用……

编辑器使用用户:维护阶段

  • 诉求:编辑器易学易用……

总结来说:我们可以认为编辑器在不同生命周期、对于参与使用的全部人员都应该带来良好的实现或者使用体验。

3.好的若干特性

结合上述分析策略,我们给出如下评价关键词:

3.1.用户侧:使用成本低

graph TD;
E[使用成本低];
E -->E2[易学习];
E -->E1[可读性];
E -->E0[可复用];
E -->E4[易修改];
E -->E3[调试容易];
  • 易学习

行为模型易懂:例如使用状态机、树或图等图形手法来使得逻辑结构更容易理解。

  • 工作流程通畅:从编辑器入口、编辑器使用、保存提交、验证等完整流程顺利。
  • 具体行为的参数种类、候选范围、对应行为,是自解释的,或者有参考可看。

可读性

  • 合理使用图标、颜色等其他UI设计增强可读性。
  • 信息的详略得当:比如适当的在一级菜单中显示子脚本内容。

可复用

  • 逻辑的复用简单:比如简单的拷贝、或者支持使用模板化等

易修改

  • 支持批量修改:提交编辑修改销量。

调试容易

  • 出现问题定位简单:比如有错误检查工具、报错提示导向问题等。

3.2.设计侧:表达能力强

graph TD;
D[表达能力强];
D -->D1["基础行为丰富"];
D -->D2["行为组合自由"];
D -->D3["支持使用变量"];
D -->D4["逻辑条件完备"];
  • 基础行为丰富

在需要解决的问题上,覆盖各个需要的场景。

行为组合自由

  • 可以方便的将行为之间进行组合:比如常见的顺序、延时模型等。

支持使用变量

  • 可以使用Flag等来进行更复杂的情况的映射。

逻辑条件完备

  • 支持与或非等逻辑操作。

3.3.实现侧:设计优雅

graph TD;
F[设计优雅];
F -->F1[执行逻辑模型];
F -->F2[脚本生命周期];
F -->F3[架构设计哲学];
  • 执行逻辑模型

执行逻辑符合直觉,简单易懂。

脚本生命周期

  • 脚本使用与销毁自然,不需要额外管理代价。

架构设计哲学

  • 设计哲学先进。

4.总结:为游戏开发赋能

我一直相信,科学与逻辑的力量是强大的,希望编辑器可以引起游戏开发者的重视,用设计优秀、逻辑表达能力强、使用简单高效的编辑器,来使得游戏开发的过程更为高效,更好地表达出想法,制作出优秀的游戏。