摘 要:为了解决教育性游戏中人工智能的可复用性的问题,我们通过总结、抽象教育游戏中的共性的组件模块,提出“基本教育游戏框架”,并详细说明它的组成部分以及各部分的作用。同时我们还详述了怎样平衡教育性和娱乐性。此外为了证明这个模型的正确性,我们在三维游戏引擎“Unity”中创建了一个导游人工智能系统。通过实例分析:在教育性游戏中,使用“基本教育游戏框架”,可以很容易组成一个适合针对自身游戏的人工智能系统。
关键词:教育游戏;可重用性;Unity
1 引言
游戏作为生活中的常用词语,却很难给出确切的定义,因为它在不同的语境中表达着不同的意思。我们可以通过英文游戏进行解释,play game:play泛指游戏,在更广的意思上,作为名词的play可以泛指活动,相当于activity;game则指社会性的(有组织、有规律并通过竞技性的)游戏。而教育游戏是一种遵循游戏机制,制备一定可玩性、趣味性并达到一定的教育效果的活动[1]。通过对多个教育游戏进行对比,我们发现,有一些基本的概念反复的出现,以此我们认为它们是一个教育游戏的基础和核心。理解这些概念,以及明确这些概念之间的关系,可以防止游戏开发者重复发现这些概念,同时对于他们组建一个新的高质量的教育游戏有着很大的帮助。在论文的第二部分,我们将要讨论这些关键概念的功能,以及它们之间怎么相互作用组合成基本的游戏框架。在文章的第三部分,我们给出了实例化游戏的基本框架,实现了一个基于Unity3d游戏引擎的虚拟导游系统。第四部分,给出了全文的总结和展望。
2 教育游戏的基础框架
在第一部分,我们提到了关于教育性游戏的基础框架的一些基本概念。在这一部分中我们将详细阐述这些概念的作用,以及它们之间是怎么相互合作,组合成一个完整的教育游戏基础框架。最后我们再将这个教育游戏基础框架运用到教育游戏中。
2.1 教育游戏基础框架
在教育性游戏基础框架中,我们会提及11个相关概念:教育环境,成果,课程,教室,谜题,考试,教科书,教师,障碍,奖励和提示。首先我们讨论下每一个概念的功能。
(1)教育环境:“教育环境”是一个比喻,代表在教育游戏中所有的游戏物体。它的一个很主要的功能就是为“课程”提供场景,所以我们可以合理的认为,“教育环境”是“课程”的先决条件。同时“教育环境”还有一个重要的功能是它可以为一个指定的“课程”列出它所需要的先决条件。(2)成果:当玩家进入一个教育游戏中时,去探索每一个“课程”的相关领域,学习知识,解答谜题等等,他所操作的过程需要记录下来。“成果”的作用应该是记录玩家的操作,同时提供一个接口以方面查询。(3)课程:“课程”是最重要的一个概念,它包含了在教育游戏中一个独立区域范围内所需要的子物体。由于它包含了太多的概念和功能,所以我们对他进行使用或者复用是比较困难的。(4)教室:“教室”是“课程”传授的物理区域。“教室”要提供一些必要的限制,比如玩家需要通过那些必须的“课程”才能进入到此教室。“教室”需要具备三个功能:1)能够知道玩家何时进入或者离开。2)明确玩家需要完成哪些先决的“课程”。3)知道玩家在先决的课程的操作。(5)谜题和考试:当玩家进入一个“教室”,他会去探索;来发现离开这个“教室”的路。但是在路上会遇到很多的“谜题”。每一个谜题都是由两部分组成的:问题和答案。“谜题”能够判断玩家输入的答案和标准答案是否一致,同时还要做到能够根据玩家的动作来跟新玩家“成就”。只有玩家解决了在“教室”里一系列的“谜题”,玩家才可以离开。(6)教科书:为了通过“考试”,玩家要有很强的信心来获取相关知识才可以。“教科书”是“课程”所要交的内容,也是“谜题”答案所在的地方。“教科书”要做到相对来说要简单,保持与相关“课程”的内容相关。教科书的表现形式有很多种,比如普通的文本,问答题,图片,视频等等。(7)教师:为了使游戏能够达到灵活多样,“教师”扮演了以一个特殊的角色,而不是一个普通的NPC角色,或者可以说他是软件的一个接口,任何游戏物体都可以成为“老师”角色,只要它能够与“教科书”有联系。(8)障碍:为了增加游戏的挑战性,我们可以在玩家的前进的道路上增加“障碍”。从本质来说,“障碍”就是一个玩家在物理上一个限制,比如一个锁住的门,一个陡峭的悬崖,一个太深的河等等。为了克服这个障碍,玩家需要满足一些特定的条件:玩家需要响应的游戏物体来克服特定的“障碍”。(9)奖励:如果在玩家能够在很好完成一段历程,我们要能够给予一定的奖励,以此激励。“奖励”本质是一个具备特殊属性的游戏物体,它可以帮助玩家克服“障碍”。(10)提示:对于新的玩家来说,如果没有提示的帮助,他有可能在第一次旅行时会迷路。因此,我们很有必要为玩家提供一个提示功能,它能够帮助玩家显示他所在的位置,他所要完成的任务以及下一步该怎么做。
2.2 调节游戏的教育性和娱乐性之间的工具
如何调节一个教育游戏的娱乐性和教育性是成功与否的关键。“教科书”是教育游戏的内容,也是探索游戏世界的乐趣和动机所在。“谜题”是一个重要途径来进行引导,同时也强迫玩家在探索游戏世界时进行学习一些知识。“障碍”可以增加更多的娱乐和挑战,而“提示”却与之相反,“提示”可以帮助玩家摆脱困境,很之便的简单。“奖励”不仅能够使玩家获得成就感,同时还是提供克服“障碍”所必须要的游戏物品。
3 教育游戏框架在Unity3d中的应用
在第二部分中,我们介绍了教育游戏框架是一个独立于游戏开发引擎的开发工具,在这一部分中,我们将教育游戏框架进行实例化,并且应用到Unity3d游戏引擎中。
3.1 在Unity3d教育游戏可复用的脚本
Unity3d游戏引擎为了我们提供组件,可以很方便的以组件的形式进行工程组建。为了实例化教育游戏基础框架,我们将它进行实例化,应用到一个实例系统中:导游系统。这个系统是在虚拟漫游中比较新颖的方面,他不仅可以根据导游NPC位置不同给予不同的消息响应,同时还可以通过判断与玩家不同的距离给予不同的响应。举个例子,当导游NPC走到一个广告牌时,可以通过调用GUI,对展牌进行介绍;当导游NPC里玩家距离过远时,可以给你玩家一定的提示,要求玩家要跟随。
3.2 Unity3d路径动画设定
在导游系统中,第一个要解决的问题就是NPC路径动画问题。例如,怎样在Unity3d中设置路径?NPC怎样沿曲线运动?路径运动时候的消息触发,路径运动中的碰撞检测等等。
(1)路径设计。在此工程中,我们运用到了Bezier曲线生成算法。首先我们介绍一下Bezier曲线。Bezier曲线用一句简单的话说就是用给定的离散的点,生成一条平滑的曲线。同时这条Bezier曲线具有如下性质:端点性质,即曲线过两端点;凸包行,Bezier曲线完整的落在控制点所围成的多边形内;对称性,即由Pi与Pn-i组成的曲线,位置一致,方向相反;Pn (t)=(1-t)Pn-1(t)+tPn-1(t)。其生成示意图如表1所示。
图1 四阶Bezier曲线(2)NPC沿曲线切线运动。虽然我们已经能够确定物体的运动轨迹,但是我们还没有明确物体怎样沿着曲线运动。一般来说,我们都只沿着曲线的切线方向来运动,即规定好物体的正方向,一般为Z轴方向,沿着曲线的每一点的切向方向为正方向进行运动。这样的好处是能够保持物体始终正面运动,这样也符合人们的认识逻辑。