浅谈游戏过场动画系统需求制作
事件类型 | 功能描述 | 对象 |
移动 | 沿指定路径点运动 | 摄像机/物件 |
动作播放 | 播放指定动作 | 物件 |
音乐播放 | 播放指定音乐 | 空对象 |
对白 | 头顶泡泡、聊天文字、字幕 | 物件、空对象 |
特殊效果 | 景深焦点变换、子弹事件、FOV渐变、摄像机抖动 | 空对象、摄像机 |
脚本 | UI、扩展逻辑、触发器 | 空对象 |
二、制作
播放的主要任务是随着时间轴的进行来处理理指定时间内的事件,其核心数据结构是由多个layer组成的链表数组。下面简化的伪代码展示了事件处理逻辑:
function Update(time , dt)
finish = true
for each layer in layers do
if event != null && time >event.endTime then
event.stop()
event = next event
end
if event != null && time >= event.startTime then
event.play(dt)
end
if event != null then
finish = false
end
end
if finish == true then
stopcutscene
end
end
除此之外,该系统还包括下列功能:
· XML文件解析以生成事件链表数组;
· 对象预加载和管理;
· 开播前处理,包括:游戏对象隐藏、UI隐藏、通知服务器、锁定玩家操作等;
· 播完后处理,包括:游戏对象恢复、UI恢复、通知服务器、解锁玩家操作、清理过场数据等等;
作为策划而言,并不需要是写代码如何,更多的是需要和程序GG沟通,了解系统的实现会让沟通更有效率和帮助。
对于过场动画整个系统编辑而言,个人看的更多的项目更多的是使用excel表进行脚本式的编辑,实际上在这些编辑中,更多的是一种伪代码的编写,即程序给出指定的命令,而策划则按照对于的格式来编写对于的过场动画脚本剧情。
因此对策划而言,不仅事先要对剧情需要的所有事件有通盘的了解和规划,同时还要足够了解所有内容的代码形成过程,最后还要细心的编写,最后才能形成完整的一段过程动画。
当然,纯粹的伪代码编写,并不可取,最后还是要尝试实现编辑器功能的界面化面积,以及要求程序提供辅助工具。
四、编辑系统及辅助工具
下图为某项目的编辑界面,用于举例描述。
该编辑器界面,主要分为工具栏、对象列表、事件编辑区域、场景编辑区域、事件/对象编辑面板。它提供了所见即所得的过场动画编辑功能,方便对象位置和朝向定位、动作预览、路径规划、事件编辑。此外,整体或指定起始时间播放、单事件播放、暂停功能有助于提高制作人员调优的效率。在有限时间的开发周期内,我们重点做好以下核心功能:
· 事件编辑:创建、删除、修改、拖拽操作方式来排列事件、可拉伸的时长修改方式、复制/粘贴操作的支持;
· 对象编辑:创建、删除、修改、定位/旋转、批量复制、整体平移/旋转;
· 路径编辑:节点插入、删除、替换;
预览:保证与客户端一致的表现效果;