基于Unity的对外文化传播项目 ,通过方案设计、素材加工、数据整理与代码开发等步骤 ,提出游戏型互动视频的开发。相比于传统视频 ,通过游戏的引入减少内容输出的枯燥性与单一性 ,加强视频的丰富性与互动性 ,提高用户的参与度 ,给用户的感官带来游戏化体验。
1 引言
随着技术的更新 ,数字视频的传播形式也朝着更智能、更融合的方向发展。无论是简单的视频弹幕 ,还是更加复杂的全景视频、分支视频 ,赋予了用户参与其中的虚拟体验 ,让同样的内容呈现出丰富的形式。 广播电视总局于 2020 年 10 月 12 日发布实施《互联网互动视频数据格式规范(发布稿)》,其中定义 :通过互联网(含移动互联网)向公众提供的具有分支剧情选择、视角切换、画面交互等交互能力 ,能够为用户带来互动观看体验的一种视频业务 ,简称“互动视频”。
2018 年上映的《黑镜·潘达奈斯基》率先在网剧中融入了分支视频的形式 ,Hype Young Yun 等人以《黑镜》为例 ,研究了分支剧与传统剧集表达效果的异同。分支视频改变了视频播放的线性特点 ,通过用户选择 - 跳转这种非线性的叙事方式 ,给用户带来新的体验。互动视频可以是游戏型也可以是剧情型 ,在游戏型互动视频中 ,提前在故事互动模块之前设计导航视频 ,将故事分为多个阶段 ,每个阶段对应一个目标 ,观众需要完成阶段性目标后 ,才能够继续观看下一段剧情。
现有互动视频的主流开发方式有 :1)利用视频平台提供的接口进行开发。这种方式能够降低内容创作难度 ,但由于平台所提供的工具和接口存在极大的限制 ,作者往往只能通过视频平台所规定的形式创作内容 ,无法随心所欲地为内容设置自己想要的效果。2)利用 H5 编辑器等第三方工具进行开发。H5 等页面可以通过在公众号或者小程序等自媒体渠道进行发布,这对于拥有自媒体矩阵的内容生产者来说十分便利。但平台的支持与否是对该类内容的主要限制因素。3)使用引擎及代码开发。这种方式自由度更高 ,同时不依赖视频平台的支持。通过代码创建播放器 ,并在播放器中插入各种交互元素与脚本 ,实现对选定视频内容的交互操作。本文采用第三种方式进行开发 ,实现游戏型互动视频产品原型。
2 设计方案
完整的开发流程是从设计开始的 ,互动视频的设计思路、设计主旨直接影响到了最终产品的呈现效果。设计目标为开发提供了清晰的顶层思路 ,而技术路线则是实现目标的底层基础。由于交互视频中涉及到数据的调用 ,因此数据结构的设计也是保证程序性能的关键。经过调研分析 ,传统的弘扬汉语言文化的视频媒体由于视频文件格式本身的限制 ,只能在视频内容上做文章。这样的内容产品往往需要专业的制作团队 ,扎实的文学知识与精湛的剪辑、拍摄、制作技术 ,才能创造出可能成为精品的视频。现有内容平台上存在的汉语言文化相关视频质量参差不齐 ,许多内容扎实的视频却因为形式单调、枯燥等问题没有获得相应的关注度。因此 ,本设计采用互动视频的形式传播汉语言文化。为了打破视频文件格式的限制 ,因此本设计使用 Unity游戏引擎作为支撑 ,将视频内容与交互元素进行结合 ,制作出一款以汉语言文化为主题的游戏型互动视频。
设计目标为以下 3 点 :1)正常播放视频内容。2)具有基础的交互元素 ,包括播放、暂停、回看等功能。3)具有 的交互功能 ,主要集中在视频中的小游戏部分 ,玩家可以通过视频所提供的交互界面进行游戏。玩家在结束之后可以选择继续观看视频或重新玩游戏 ,把握观看节奏。
根据设计目标中的思路 ,以视频和交互小游戏交替出现的形式进行展示。用户在启动后即可观看视频 ,在视频播放结束后进入游戏 1 ;游戏结束后播放第二段视频 ,随后进入游戏 2。游戏 2 结束后播放第三段视频片段 ,在片段 3 结束后用户可以通过交互页面跳转至任何一个页面。
交互场景的脚本主要有两个 :在场景一中 ,用户进入场景后 ,系统将会在题库中自动选取一道字谜展示给用户。用户在输入框中输入答案后 ,系统会判断用户输入答案是否正确。若用户输入的答案错误 ,则进行错误提示——屏幕变红 ,发出报警声。若用户错误次数大于 5 次 ,则展示正确答案 ,并跳转至下一题 ;若用户答案正确 ,判断用户尝试次数。若用户尝试次数小于等于 3 次 ,则用户得分加 5 并进入下一题 ;若用户尝试次数大于 3 次 ,则用户分数不变 ,并进入下一题。在 10 题之后展示用户最终得分。在答题期间 ,用户可以选择跳过并提示 ,若跳过此题不得分 ,用户在确认跳过后 ,切换下一题 ,答题次数加 1。场景交互逻辑如图 1 所示。
在场景二中 ,用户进入场景后 ,系统将在题库中寻找所有单个的文字 ,再通过去重算法操作后得到一组选项 ,将这些选项通过随机打乱的方式分配给 56 个文字单元 ,每个单元中有 1 个文字。用户在选择区域进行点击后 ,系统将记录用户所选内容 ,并根据题库中所有的排列组合形式进行判断。若用户所选的两个字可以组成新的字 ,则在屏幕中显示可以组合出的新字及其拼音 ,屏幕变绿 ,提示正确。在三秒之后刷新选择区域 ,并清空用户之前的选择信息 ,使用户重新选择 ;若用户选择错误 ,则屏幕变红 ,响起报警声 ,提示无法合成 ,三秒钟后选择区域保持不变 ,清空用户所选择内容 ,让用户重新选择。该场景交互逻辑流程图如图 2所示。
在游戏结束后 ,用户可以选择继续观看视频 ,也可以选择重新这一环节的游戏。在整个视频播放结束时 ,用户在最终页面可以通过按钮重新观看任何一个环节的视频或游玩任何一个游戏。本设计的技术路线为通过 Unity UGUI 组件制作并编译为可执行文件。使用音视频非线性编辑软件对视频文件进行编辑后 ,将其导入 Unity 引擎中 ,通过文本、文本输入框与按钮等元素构建页面 ,并将其封装为预制体 ,在页面中通过 C# 脚本处理用户的输入与操作信息 ,使用 Game Manager 脚本管理游戏的整体进程 ,预制体的生成与销毁。通过Video Player 组件配合 C# 脚本控制视频的播放与暂停。通过读取 JSON 文件完成对数据的提取和展示等。
3 游戏型互动视频开发
开发的重点主要有两个 :1)完成音视频素材内容的采集加工。2)完成交互视频产品的设计开发。视频素材内容使用佳能 6D2 相机配备 24mm ~ 105mm镜头 ,如影 SC2 稳定器和科曼三脚架进行实地取景拍摄。根据文案脚本运用 Adobe Premiere 视频剪辑工具完成汉语言文化题材的视频主内容。用户界面的交互逻辑、视频的运行逻辑、产品的工作逻辑由 C# 编程语言来实现。采用模块化设计 ,通过共同的命名空间控制代码域。在代码结构中 ,Game Manager 模块负责主要的游戏逻辑控制,负责游戏的启动与停止 ,各个阶段事件的传递与发布。Interactive Manager模块负责互动视频中的小游戏部分。该模块主要负责将场景实例化至对应的画布中。Scene1 与Scene2 作为游戏最主要的场景 ,负责游戏内容、表现形式与逻辑处理操作 ,这一部分是整个设计流程之中最复杂的部分。每个 Scene 都有对应的DataGenerator,此类模块用于将 JSON 文件中的数据进行读取、格式化 ,并发送至 Scene 场景进行渲染与呈现。Video 视频模块则对应视频部分 ,主要控制视频与音频部分的播放、暂停、跳转与回看等功能。涉及的代码模块结构如图 3 所示。
本设计中主要有两部分需要用到数据结构 ,分别是“猜字谜”小游戏与“拼字”小游戏。猜字谜小游戏主要需要用到谜面与谜底两个内容。其中为了便于程序进行识别、存储 ,在已有的两列中新增了“ID”列 ,作为数据的 标识符存在。其具体的数据结构包括 Context 类与 Content 类。Content类作为容纳 Context 类的列表而存在 ,用于存储全部的谜题 ,而 Context 则代表一道谜题 ,包含 ID、谜面(question),谜底(answer)。
其 JSON 格式数据为 :
“context”:[
{"ID":1,"question":" 一 条 狗 四 个 口 ","answer":" 器 "},
{"ID":2,"question":" 上下难分 ","answer":" 卡 "},
......}]
拼字小游戏数据结构与此类似。
产品运行的代码主要由两个部分组成。一部分是控制产品正常运行的逻辑 ,另一部分是视频中小游戏的交互逻辑模块。在小游戏的设计过程中主要使用了 Unity UGUI 组件 ,使用 Text、Image、Button、Input Field 等组件完成用户交互界面的搭建。将这些组件进行定位后 ,使用统一的面板进行封装 ,并作为一个预制体存在文件夹中。这样的好处是可以很方便地实例化相应的界面 ,方便游戏主逻辑的控制 ,界面的加载与移除。通过实例化构建页面的示意图如图 4 所示。
在游戏流程中视频与互动场景进行切换的时候 ,本设计采用了两种方式 :一是通过 Unity VideoPlayer 组件的事件函数判断 VideoPlayer 当前播放的 videoClip 是否达到最后一帧。若为最后一帧则自动弹出交互场景。二是通过屏幕右下角的按钮进行操作。在执行操作后 ,VideoPlayer 等组件会被销毁 ,相应的交互场景会被实例化。
4 总结
基于 Unity 的以汉语言文化为主题的互动视频项目开发,用户可以在作品播放的过程中结合视频与交互小游戏感受中国汉字的博大精深。允许视频作品打破现有视频平台对视频格式、交互形式的限制 ,可以给创作者以无限的自由度。
(本稿由牧客数字创意研发部提供,如转载或引用,请注明出处)