游戏开发工具的真正价值是什么?是在于激发创意吗?

游戏开发工具的真正价值是什么?是在于激发创意吗?

先上结论,个人认为游戏开发工具的目的主要应该是帮助创意实现,解放生产力,而非激发创意本身。

针对这个问题首先我们可以来看下游戏开发过程中具体会用到哪些工具。

从游戏开发流程出发,一般可以分为以下几个环节的工具链:DCC 工具链,引擎工具链,研发效率工具链。

DCC 工具链

DCC 工具链一般直接面向美术制作,从功能上划分一般可以简单分成两个大的方向。

一类是用于标准检测,类似于质检,例如检查资产命名是否规范,模型的面数是否超标,权重骨骼数量是否过多,贴图尺寸是否过大等等。这类工具避免了手动检查的疏漏,是保证资产在游戏中有效性的基础。一般上一点规模的游戏都会根据游戏资产的制作规范开发相应的此类工具。

另一类则是加速美术制作效率,从美术关注的角度,又可以细化为两类。

第一种与美术资产制作和效果相关性不大,一般这类工具都是自动化处理一些资产的固定流程,比如批量针对一批资产进行模型,材质合并,贴图的自动扩边,骨骼 Retargeting,模型各级 LOD 自动减面等,针对这些重复性的操作,由工具来执行,可以节省大量美术工作量,从而让美术有更多的精力投入到效果相关的工作中去。

第二种则与美术资产的制作相关性较高,一般此类工具都与美术资产生产过程紧密结合,例如角色表情 Controller,《极限竞速 地平线 4(Forza Horizon 4)》开发团队应用的车漆材质矫正流程工具,Epic Games 的 Metahuman 角色生成器,都属于这一类,这些工具的存在可以快速地帮助美术实现最终想要的资产效果。

Forza Horizon 4 中使用的车漆矫正工具,图源 2019 GDC[1]
Metahuman Creator,图源网络

引擎工具链

引擎工具链相对比较复杂,因为引擎本身就是一个工具集,大致来说,引擎工具我们大致可以将其分为四个方向:

第一类主要针对引擎资产管理,比如资产浏览器,可以对不同类型的资产进行过滤查找,导入导出,还有具体的资产预览器,可以对相关的资产的属性编辑进行修改,以及对资产之间的关联引用关系进行编辑。

这是引擎的基础功能之一,如果没有这块,就无法对引擎内的资产进行有效地调用,Unreal 的 Content Browser,Unity 的 Asset 浏览窗口,以及相应的各类资产的预览界面都属于此类。

Unity Project Window,图源网络

第二类主要是游戏逻辑所需针对各类资源的整合工具,比如场景编辑器,包含了场景美术资产组装,光照调整,寻路数据生成等这些功能;音效编辑器则是由游戏逻辑驱动,对相关音源资产进行组合调用,以满足游戏需求,比如比较著名的 Wwise;动画状态机通过对一系列动作的组合拼接,可以实现各种不同游戏动作之间的平滑过渡与混合调用;AI 行为树则直接驱动游戏 NPC 或者 Enemy 调用角色动作状态机,做出合理的动作与行为反馈。

通过这类工具,可以直接将原始资源通过一定的规则,整合成最终游戏运行时所需的数据形式。

Wwise 界面,图源网络

第三类主要是面向策划配置相关工具,比如各类用于游戏运行时服务器端与本地的数据配置的相关工具,像玩家全身 Avatar 道具,武器 id 配置表,不同场景的 id 配置表,还有任务系统,包括任务编辑模块,以及上层的任务配置工具,这类工具一般都需要能够进行逻辑编辑,通常都会接入轻量级的脚本语言。

第四类主要包括了性能 Profiling 工具以及各类静态资源统计工具,Profiling 工具主要是用于游戏运行时的性能分析,比如 Draw Calls,同屏面数,物理,AI 等分项每帧针对 CPU,GPU 的消耗,进而定位运行时性能瓶颈,目的是保证游戏能够在目标平台上稳定流畅运行。例如 Unity 的 Profiler,Unreal 的 Timing Insights 都是典型的 Profiling 工具。

Unity Profiler,图源网络

静态资源统计工具主要在非运行时编辑器下对各类静态资产的容量以及规格进行批量统计,一般来说主要目的是限制单体资源内存占用,和控制游戏安装包容量。

研发效率工具链

研发效率工具链一般指提供团队协同工作,敏捷开发管理以及快速版本构建发布相关的工具,这块大致分三块。

第一类是用于游戏数据版本管理与多分支开发管理的版本管理工具,例如 svn,perforce,git 等,这类工具主要用于支持多人以及多团队的协同开发,避免多方对共同数据内容操作而引起的数据冲突,并支持分线多特性并行开发与多线合并,可以方便团队更加稳定地针对独立特性进行迭代,避免了多特性在同一版本环境中互相干扰造成的研发效率折损。

P4v 界面,图源网络

第二类则是方便项目管理的工具,例如 TAPD,Jira,这类工具主要用于项目日常任务管理,进度统计,能够清晰地让项目成员知道目前的制作任务以及上下游任务的依赖关系,也能够让项目进度管理者清晰地知道当前整个项目各个模块的进度。

Jira 界面,图源网络

第三类则是关于项目快速构建各类版本的相关流程工具,这类工具的主要作用就是自动化快速构建不同平台,用于不同目的游戏安装包,比如 iOS,Android,Windows 等不同平台体验包,或者 development 版本用于真机调试,或者性能分析的测试包,以及各种分线分特性体验的快速体验包等。

一套高效的自动构建流水线可以快速地让开发团队能够在最终目标平台上进行最终的版本验证,从而提早发现一些在开发环境中无法出现的真机问题。

当然还有很多针对前两类工具开发的相关 DCC 工具与引擎工具,以减少不同软件之间切换使用的摩擦成本。

总结

从以上这些工具分类与作用来看,在整个游戏开发过程中,真正与游戏内容生产或者游戏玩法设计相关的工具只是占到了其中一部分,其他更多的工具设计则是从增效,维护研发品质的角度为出发点, 这类工具的本质并不是为了激发创意。

而在正常的游戏开发过程中,一般都是先提出想法,然后再去针对这个想法来开发对应的功能或者工具。而不是先做一套工具,再在这个工具的基础上去想创意。

工具存在的目的是辅助创意的实现。

当然辩证来看,高效率的工具,能够节省开发者大量的精力与时间,可以让他们投入更多的精力在创意相关的设计工作上。从这方面来说,高效的工具对创意的实现与产生还是有正向的推动作用的。

还有,一套强大的工具往往本身就包含了工具设计者自身丰富的经验与思想,使用者在应用这些工具的过程中,有时候也可能从工具设计的机制层面受到一定的灵感激发。

综上所述,虽然高效强大的开发工具在开发过程中也许会激发开发者的灵感,但游戏开发工具的目的主要应该是帮助创意实现,解放生产力,而非激发创意本身。