摘要摘要:教育性游戏作为辅助教育工具,主要通过游戏元素与知识的融合,达到高效传授某些知识的目的。设计了一款教育类游戏,从游戏规则、游戏场景、情感设计、知识系统、游戏架构几方面给出了游戏的设计思路,阐述了游戏使用的开发引擎、怪物行为决策的智能模拟、角色的自动寻路实现过程以及物体间的碰撞处理等技术,并展示了游戏的实现结果。
关键词关键词:教育类游戏;知识传授;Unity3d
DOIDOI:10.11907/rjdk.162360
中图分类号:TP319文献标识码:A文章编号文章编号:16727800(2017)001005004
引言
现行教育存在教育路径相对单一、教学效率低等问题。游戏种类多数量大,能很好地吸引玩家注意力。如果把书本知识植入到游戏中,将游戏与课堂教育互补,让学生在游戏的同时学习知识,不仅可以缩短学习时间,还可以让学生对知识有更深的体会。游戏与教育的结合,是教育对自由与民主的呼唤,游戏化学习是人本主义思想在教育中的体现[1]。
基于以上思考,P者设计开发了一款教育类三维角色扮演电子游戏(即RGP游戏),将小学三到五年级课本中的知识植入到游戏中,重点介绍了知识与游戏融合的方式以及涉及的一些主要技术。
1游戏设计
游戏开发前阶段设计非常重要,且大型游戏开发中的设计文档必不可少。本游戏设计主要完成游戏规则、知识系统以及架构等设计。
1.1游戏规则
1.1.1游戏背景故事
本故事主人公由于偶然原因穿越到其它时空,原本在该时空宁静生活的人们正遭受不明怪物的侵袭。主人公为了消灭怪物,让人们重新获得和平生活,进行了一场勇敢的冒险。
1.1.2游戏关卡
游戏设计有3个主关卡和12个副关卡,每个关卡都有一定数量的怪物,而每个主关卡中都设有一个BOSS怪物且等级随主关卡依次提高。主人公打败主关卡中的BOSS即通关,所有主关卡通关即游戏通关。关卡设计如图1所示,其中关卡间有双向箭头连接表示两关卡间是连通的。游戏中玩家以“传送”的形式往来于不同关卡,关卡之间的传送是有权限的。玩家所操控的主人公从主关卡开始依次通关,如通关到主关卡二但本主关卡尚未通关,则该主关卡和之前主关卡以及它们所带的副关卡之间都可以互相传送,可以从主关卡二“传送”至主关卡三,但只能从主关卡三传送至主关卡二而不能传送至与主关卡三连通的其它关卡。
图1关卡设计1.1.3角色成长
玩家控制主人公从主关卡一通关冒险,开始时主人公角色属性比较弱,只能打一些关卡地图中的小怪物,玩家要通关就必须提高主人公的角色属性,如角色等级、角色攻防值、角色血量等。玩家要通关上述某一主关卡时,就需要完成有关的游戏任务,如消灭小怪后获得经验提高等级,去副关卡中获得装备然后使装备强化、提高角色攻防值等。这样,等角色强大到一定程度后才可打败BOSS。
1.1.4游戏装备
游戏装备获得及强化是游戏角色成长的重要方式。游戏中装备分为靴子、铠甲、剑3种类型,分别可提升主人公的移动速度、防御力、攻击力,且每种装备都有不同的初始和上限值提升属性。获得方式有两种:①在完成某些游戏任务后系统给以装备奖励;②在主人公打败不同等级的怪物后有一定概率获得不同初始和上限值装备,但怪物只能掉落同一种装备。主人公新获得的装备一般为初始属性,很多时候并不能杀死怪物也不能得到更高等级的装备,这时玩家就必须去强化现有装备,使其具有更高的提升属性。
1.2游戏场景
在场景设计方面,除15个三维的关卡场景外还有两个平面场景,其中一个是游戏开始场景,另一个是知识测试场景。在15个关卡场景设计时,分别添加不同区域的文化元素,使学生能了解各领域的不同文化。如在以欧洲古老骑士文化为主的场景中,放入城堡、骑士、剑、盔甲等与骑士文化相关的模型,模拟中世纪骑士文化时期的生活场景;而在以埃及文化为主的场景中,则以沙漠地形并加入金字塔、狮身人面像、神庙、古埃及文字符号等元素;中华传统文化、玛雅文化、北美文化、日本文化等的场景设计这里就不一一赘述。而对于开始场景的设计,主要是登入、注册等按钮的UI布局设计以及一些故事背景。
为了将知识体现在游戏过程中,计算场景也是以UI为主,玩家通过界面操作选择不同的答题方式及答题内容。初设可选的答题方式有选择题、填空题、判断题,考察内容为小学三到五年级的课本知识,如数学计算、文字认识以及少量的简单智力测试和生活常识等。完成一轮测试后,系统显示出玩家的答对题数和所用时间,并在提高相关属性后出现祝贺语等特效。
1.3情感设计
为了培养学生的情感品德,在游戏中设计了勇敢品质、勤俭美德等情感元素,如场景中设置有受伤的人或动物,在帮他们疗好伤后会得到一些奖品。这在游戏中设置为隐性任务(即在游戏中没有明显提示要完成的任务),只有当玩家自发去做这些事才可得到相应的奖励。同样,奖励也分为显性奖励和隐性奖励,对于隐性奖励,系统在玩家完成某个隐性任务后自动提高装备掉落概率而不加显性说明。此外,因为学生在情感控制方面能力较弱,在游戏中增加了一些情感波动设计,当任务成功时系统给予称赞,任务失败时系统给予教育;这样有喜有悲,使游戏与现实生活更加接近,增加玩家的情感投入,提高游戏的互动性和趣味性。
1.4知识系统设计
本游戏特色设计为游戏知识系统设计,包含知识测试系统以及“书”系统。
1.4.1知识测试系统
对于知识测试系统,在每个主关卡的场景中都有标识为“学校”的地方。当主人公要强化装备提高角色属性时便需要到学校中锻炼其装备。进入学校便触发知识测试场景,加载好场景后,玩家在场景界面中选好要锻炼的装备,选好相应的题型及难度等级,系统根据玩家的选择随机从对应的题库中选取题目进行测试。测试结束后系统将根据玩家答题的难度等级、答题时间、答题分数等对本次测试结果进行等级评估,系统根据评估结果等级对装备属性强化到一定等级。每件装备都有属性强化的上限值,装备自身的等级越高其上限值越高。若玩家对结果不满意可以选择继续测试;若玩家想退出测试,点击场景界面中的“退出”按钮即可。
1.4.2“书”系统
在游戏关卡场景界面中有一个背景为书的图片按钮。当玩家点击该按钮时,界面中便显示出“书本”图片及相关文字供玩家浏览。内容涉及3个部分:①游戏规则的讲解;②课本知识的描述,如一些简单的课本知识定义,有关游戏测试系统中的答题技巧等;③温馨提示,如某些隐性任务或游戏技巧提醒等。当玩家想结束阅读时,点击“关闭”按钮即可。
1.5游戏架构
好的游戏架构可以减小游戏开发难度(尤其是一款大型游戏),提高开发效率,从而减少游戏开发周期,降低游戏开发成本。笔者设计的游戏中运用的是游戏架构中的单例模式。
在单例模式中,首先创建一个特殊的静态类,常称为单例类,其在游戏运行时存在于内存中,以便对全局游戏对象进行管理。然后在该类中封装好有关方法(一般为多级封装方法)。当需要对游戏对象进行数据访问时(如网络访问、数据库访问和角色属性访问),便调用该特殊类中已经封装好的方法。同样游戏要删除或创建某游戏对象时也可{用该类中的有关方法。因此,在单例类如信息交流大厅,游戏所需数据皆可到“大厅”中获取。其优点是避免游戏管理混乱,应用域明确,可以管理生命周期,可封装,可通过继承扩展,使游戏代码逻辑简单化,易于实现游戏模块功能。
2主要技术实现
本游戏涉及的关键开发技术有:Unity3D引擎开发技术、游戏中对怪物行为决策的智能模拟、角色的自动寻路以及物体间的碰撞处理等。
2.1游戏开发引擎
本游戏使用Unity3D游戏开发引擎。之所以选择Unity3D作为游戏开发引擎,是因为该引擎有着简洁的界面布局及强大的功能模块。除此之外,Unity3D还具有良好的跨平台性能,使开发者能把更多的精力集中到制作高质量的游戏上,提高游戏开发效率[2]。
该算法中,在获得游戏对象的位置信息时,使用引擎类GameObject中已封装好的GetComponent()函数来获得游戏对象在虚拟游戏世界中的三维坐标信息。在Update中使用Vector3类中的Distance()函数对怪物和主角位置信息进行实时判断,当他们之间距离小于一定值时,怪物会改变状态从而做出相关动作。在引擎中首先写好该算法代码的脚本文件挂载到游戏的怪物物体对象,然后运行游戏,此时怪物将在思考一定时间后进行下一阶段的巡逻,而如果在巡逻过程中发现主角,便跑向主角并进行攻击。
2.3自动寻路
在游戏的人工智能方面,自然也少不了游戏的自动寻路功能。在Unity3D引擎较新的版本中便集成了导航网格功能,并提供了方便的用户界面[3]。在Unity3D中,用户首先编辑好场景地形,然后将场景中不动的物体设置为Navigation Static物体;之后点击Bake进行导航网格烘焙,此时引擎将根据设置在Navigation Static物体上面,也就是游戏世界三维坐标中Y轴的正向面进行网格节点计算,从而形成一张在游戏场景中的网格节点导航地图。地图形成后,只需要对所要导航的游戏对象加上NavMeshAgent组件即可,这样游戏对象便可绕开障碍物并沿着最短路径到达目的点。
下面介绍引擎中网格寻找最短路径算法。该算法称为A Star算法或简称为A* 算法,类似于贪心算法。与贪心算法相比,A*算法为了减少计算消耗提高游戏的流畅度,减少了贪心算法的回溯计算。其基本原理为:当引擎渲染好网格节点导航地图后再通过以下步骤进行路径寻找:①用两个变量来存储已经处理过的节点和要处理的节点,分别称为关闭列表和开放列表;②将起始节点放入开放列表中并设为当前节点;③计算开发列表中所有不在关闭列表的邻近节点到目标节点的代价值;④选取已计算的邻近节点中代价最小的节点为当前节点并保留在开放列表中,其它已计算的邻近节点则放入关闭列表中;⑤返回步骤③直至当前节点为目标节点或当前节点不是目标节点但没有邻近节点可计算(即起始节点没有路径到达目标节点),退出路径寻找。计算节点代价值通过公式(1)得出:F=G+H(1) 公式(1)中F代表节点的代价值,G是从上一个节点到这个节点在网格地图中的几何距离,H是从当前节点到目的节点在网格地图中的几何距离。
2.4物理碰撞
正如现实世界中物体之间会有力的接触碰撞一样,游戏的虚拟世界中也有力的碰撞模拟,而且在3D游戏中,碰撞可以说是建立三维游戏的基础。同样在游戏的虚拟世界中,一个物体放在或掉落于地面,以及游戏角色之间发生的伤害,都是碰撞处理的结果。在Unity3D引擎中,物理引擎就是在游戏中模拟真实的物理效果[4]。碰撞分为碰撞器碰撞和触发器碰撞。当游戏物体间要发生不可穿透碰撞时,便使用碰撞器碰撞,如墙壁阻挡角色、物体落于地面等的碰撞效果。当游戏物体间要发生穿透碰撞时可使用触发器碰撞,如子弹穿透游戏角色、角色到达一定范围后门自动开启等碰撞效果。
当然,并不是所有游戏对象都需要或都能发生碰撞效果,在引擎中发生碰撞器碰撞条件为两个发生碰撞的物体都必须添加碰撞器,即Physics中的collider组件中至少有一个运动物体必须带有Rigidbody组件[5];而发生触发器碰撞的条件为发生碰撞的运动物体必须带有collider和Rigidbody组件,而另一个物体则必须添加触发器,即在物体添加collider组件后勾选组件中的IsTrigger属性选择框,启用该组件的触发器效果。当碰撞发生时,对碰撞事件进行捕捉,进而让游戏对象作出相应反应。在Unity3D中主要有以下几个接口函数负责碰撞事件的检测:
(1)碰撞器信息检测:
3游戏实现
经过团队成员分工合作,初步实现了该游戏项目的设计效果。平台为Windows和Android平台,其中对操作系统版本要求为Windows7或8版本,Android则支持3.0及以上版本。在相关平台简单安装好后即可开始游戏。
首先是游戏注册界面,当玩家注册完后即可登入游戏主界面。在游戏主界面中有“角色”、“书”、“设置”等系统按钮,操作流程如图4所示。游戏中当玩家控制的游戏角色打不赢怪物时便可查看“书”中的有关知识,并在“学校”通过知识测试来提高其扮演角色的属性,以便继续游戏并最终完成游戏通关。
图4游戏操作流程4结语
本文阐述了一款关于教育游戏的设计与开发。在玩家注意力高度集中于该游戏的同时,通过显性与隐性相结合的方式影响玩家自身的知识与品德,达到传授知识与培养良好品德的效果。当然,在游戏开发过程中也遇到过一些问题,如游戏的粒子特效、三维模型动画的制作、游戏优化等。但在深入研究后,问题都有了对应的解决方案,为游戏后续的发展打下了良好的基础。教育游戏推广在我国还处于起步阶段,长路漫漫,尚需研究者们努力奋进、勇于革新。
参考文献:
[1]张文兰,刘俊生.教育游戏的本质与价值审思[J].开放教育研究,2007,13(5):6468.
[2]穆海明,刘盼,刘兴华.基于Unity的游戏开发[J].通讯世界,2016,4(4):288289.
[3]吴彬,黄赞臻,郭雪峰,等.Unity4.x 从入门到精通[M].北京:中国铁道出版社,2013.
[4]宣雨松.Unity3d游戏开发[M].北京:人民邮电出版社,2012.
[5]董健.一款基于Unity3D的移动平台游戏设计[J].软件工程师,2014,12(12):3435.