游戏开发中的编辑器,应当具备些什么特性才能更好地为游戏设计师们赋能?让想法表达、工业化、创作作品更为容易。
好的编辑器的若干特性
工具的必要性
设计师们设计内容,并借用工具表达设计,输出最终的产物。
通常来看,从业者们会需要一个专业的工具或者软件,用来将想法转变为专业的产物,对于原画师,可能是绘图软件;对于作家,可能是纸笔或者写作软件;对于策划,则可能是EXCEL或者特异性的编辑器。从这个角度理解起来,工具的实用性能很大程度上改善工作的效率,“工欲善其事必先利其器”,而特异性的需求和其编辑器,就像DSL(领域特定语言)和其对应的编辑工具。
对应起来,一个很基础的关于编辑器的问题是:为什么不直接写代码?而要去折腾一个新的编辑器和对应组织数据结构,这个问题暗示使用C#作为逻辑的描述语言:
- 借助UNITY引擎内部的MonoBehavior的“生命周期”逻辑,可以原生的访问所有接口。
- C#作为一门面向对象的高级编程语言的表达能力、架构能力。
- 使用编程语言的调试灵活度。
似乎直接使用原生语言,可以作为默认的、同时也是极其强大的解决方案。那么为什么我们需要一个领域特定语言来组织逻辑?
很简单,为了聚焦解决问题。而不把精力浪费在掌握工具上,编程需要学习使用程序语言、不同的思考模式、以及大量的计算机科学知识,随着流程的工业化,会让专业的人来做专业的事情。对于设计师们,应当专注于设计,工具的表达应该最大化为了设计服务。
评价的维度
如何评价一个编辑器是否好用?好或者坏,是一个主观的印象。类比其他软件产品,也许我们可以使用抽样调查、用户深度访谈、用户画像分析等手法。这里我们主要讨论两个思考角度:
设计的角度
《设计心理学》中提到,好的设计有两个特征:
- 可视性(discoverability)
- 操作可传达,可被用户发现。
- 易通性(understanding)
- 操作可理解,可让用户明白。
后续又提到了六个原则:
- 示能
- 物品的特性与决定物品预设用途的主体之间能力之间的关系
- 比如:(批处理)脚本可以批量执行一系列指令;一个编辑器可以用来编辑存储特定数据。
- 意符
- 告诉用户可以采取什么行为、如何操作。
- 比如:常规按钮是可以按下的,点击就行;开关按钮是有开关两个状态的,一般需要点击开关而不是文字;进度条按钮是一个可以拖动,有上下限的控件。
- 约束
- 提示用户操作的范围
- 比如:数值类型的有效范围;枚举类型的可能选项;进度条按钮的最大值最小值。
- 映射
- 控制和显示 契合自然映射,设备容易使用。
- 比如:拖动某个元素,运动应该与鼠标轨迹同向;自然卷动时,更像反向拖动页面来使视窗内显示合适的内容。
- 反馈
- 沟通行为的结果。必须是即时的
- 比如:一个行为的响应应该尽可能地快,否则会给人无响应的印象;linux的哲学中曾有:没有消息就是最好的消息,但是没有消息本身一种反馈。
- 系统的概念模型
- 高度简化的流程,告诉用户事物如何工作
- 比如:一个流程处理能告知用户先后经过什么阶段……
图示:UWP UI中,差异化的按钮控件。观察不同的按钮会让用户采取不同的交互策略。
总结来说:我们可以思考编辑器:
- 交互
- 交互的方式是否可被理解,
- 交互的候选范围、选项对应含义是否明晰。
- 交互是否即时有反馈
- 系统的概念模型是否易懂
需求的角度
我们引入软件生命周期和主要参与人员的诉求来分析这个问题:
软件生命周期:
主要参与人员参与阶段:
- 编辑器设计师:分析阶段,设计阶段,维护阶段
- 诉求:编辑器功能逻辑明晰,UI交互合理……
- 编辑器实现程序员:设计阶段,实现阶段,测试阶段,维护阶段
- 诉求:需求稳定,逻辑实现优雅,UI控件可以复用……
- 编辑器使用用户:维护阶段
- 诉求:编辑器易学易用……
总结来说:我们可以认为编辑器在不同生命周期、对于参与使用的全部人员都应该带来良好的实现或者使用体验。
好的若干特性
结合上述分析策略,我们给出如下评价关键词:
用户侧:使用成本低
- 易学习
- 行为模型易懂:例如使用状态机、树或图等图形手法来使得逻辑结构更容易理解。
- 工作流程通畅:从编辑器入口、编辑器使用、保存提交、验证等完整流程顺利。
- 具体行为的参数种类、候选范围、对应行为,是自解释的,或者有参考可看。
- 可读性
- 合理使用图标、颜色等其他UI设计增强可读性。
- 信息的详略得当:比如适当的在一级菜单中显示子脚本内容。
- 可复用
- 逻辑的复用简单:比如简单的拷贝、或者支持使用模板化等
- 易修改
- 支持批量修改:提交编辑修改销量。
- 调试容易
- 出现问题定位简单:比如有错误检查工具、报错提示导向问题等。
设计侧:表达能力强
- 基础行为丰富
- 在需要解决的问题上,覆盖各个需要的场景。
- 行为组合自由
- 可以方便的将行为之间进行组合:比如常见的顺序、延时模型等。
- 支持使用变量
- 可以使用Flag等来进行更复杂的情况的映射。
- 逻辑条件完备
- 支持与或非等逻辑操作。
实现侧:设计优雅
- 执行逻辑模型
- 执行逻辑符合直觉,简单易懂。
- 脚本生命周期
- 脚本使用与销毁自然,不需要额外管理代价。
- 架构设计哲学
- 设计哲学先进。
总结:为游戏开发赋能
我一直相信,科学与逻辑的力量是强大的,希望编辑器可以引起游戏开发者的重视,用设计优秀、逻辑表达能力强、使用简单高效的编辑器,来使得游戏开发的过程更为高效,更好地表达出想法,制作出优秀的游戏。