孙可言 陈根
摘 要:此文主要是为了介绍关于开发基于Unity3D游戏引擎的手机版射击类游戏。开发手机版射击类游戏主要的步骤有前期的市场需求和市场技术的调研,中期的游戏策划,游戏场景的搭建与基本功能的实现以及后期的游戏主要功能的实现和基本功能的完善与游戏检测。这篇文章主要介绍的是中期的游戏策划,游戏场景搭建与基本功能的实现。游戏的基本场景包括游戏角色和NPC所处的外部的世界环境,比如,地形,天气等; 游戏的基本功能包括人物角色的移动,跳跃,射击,NPC的人工智能系统的实现等。
关键词:Unity;NPC;碰撞检测;人工智能
Unity3D这款游戏引擎具有很强大的跨平台性,同时也具有强大的兼容性,比较容易入门,也比较适合水平不太高的手机游戏开发人员。并且,该引擎的相关文档和教程都十分丰富,而且,Unity3D的技术架构具有特殊性,能够实时生成查看功能,适用性强,使开发的流程简单化,能够方便广大用户的使用。
如今,市场上的关于射击类的游戏,其中有60%以上是通过Unity3D游戏引擎开发的。由此可见,Unity3D是射击类游戏的最基本使用最广泛的游戏引擎。这篇文章针对第一人称射击类游戏的开发过程中的相关技术问题展开了详细的说明,对Unity3D的运用中的关键技术进行了详细的阐述,对于其他用户灵活的使用Unity3D游戏引擎有着十分重要的意义。
1 相关工作
这篇文章是以Unity3D为开发平台,对碰撞检测技术人工智能技术进行研究。
碰撞检测技术的主要目的有三个:检测模型之间是否发生了碰撞,反馈出发生或即将发生碰撞的部位,动态的查询模型之间的距离。进而针对碰撞后的反馈进行针对性的动作。碰撞检测技术广泛应用于各种系统中,比如时下比较流行的游戏英雄联盟和守望先锋,都离不开碰撞检测算法。
人工智能技术是最近几年兴起的一项技术,简称为AI,使计算机具有动物或人类的某种智力,这有助于我们作出特别的决定执行什么一些程序。另计算机只是能接受数据、执行逻辑的电子设备.和高速运算,输出结果。
因此,人工智能(AI)本质上是使计算机能够思考并且像活的有机体那样决定执行特定的操作。人工智能只是一个通用术语;它的实现和应用是不同的,实现不同的目的,解决不同的问题。
2 前期准备工作
从游戏的可玩性角度来说,射击类游戏是一款十分容易获取用户粘度的游戏类型,近些年来在市场上的一些列的射击类游戏都取得了不错的成绩。我们的这个游戏是模范市场已经有的射击类游戏的模式进行开发和研究的,在一些具体的细节方面进行了调整和优化处理。
首先,是运用3DMax搭建了一个完善的游戏界面和游戏场景,增强用户的沉浸感;其次,我们在用户与计算机的交互上运用了人工智能技术,使得游戏中的AI角色更加具有真实感;最后,游戏的盈利模式则是通过与其他游戏的广告商合作收取广告商的加盟费和游戏的道具费用等。
3 游戏UI设计
游戏玩家对游戏的评价主要有兩个方面,一个是主要的也就是游戏的模式和操作,而另一个十分重要的因素也就是游戏的美工。好的游戏离不开精良的美术内容。这里说的游戏美术就是游戏中出现的可视化内容,包括游戏UI界面,游戏场景及角色等,游戏美术决定游戏的界面风格,是游戏设计与开发过程中不可或缺的重要组成部分。具体来说本款作品的游戏美术需要完成UI界面的设计、游戏场景和道具的设计与制作、人物角色和NPC形象的设计和建模以及动画的制作等。
4 核心技术要求
上文介绍了美术制作的部分内容,现在介绍一下程序设计部分。程序需求是一个游戏的核心,是实现预期效果的必要保证。即用一些脚本和代码将美工设计的好的各种素材联系起来并进行交互。程序需求在游戏设计开发过程中十分重要,决定着一个游戏现在运行过程中是否能完美还原策划的预期效果和运行时是否流畅。
这款手机版的FPS射击游戏中涉及到多种人工智能技术,NPC,主角,场景中障碍物,道具等一些列对象,需要通过脚本来控制个对象之间的关系以及互动。当前介绍碰撞检测技术,人工智能实现技术。
4.1 人工智能实现技术
4.1.1 内部需求
在三维射击游戏中。我们所设置的AI角色即NPC需要了解他们自身所处的周围环境,他们所处的世界的相互作用,以便于他们按照程序做出相应的决定,执行特定的操作。
这些信息主要包括以下几个方面:
1)玩家位置:NPC与玩家的相对位置信息主要作用是用于NPC决定是否执行击,或追逐等操作。
2)玩家的健康状况和自身的健康状况:这里主要指的是射击游戏中玩家所操控的角色的血量和NPC自身的血量,主要是为了让NPC做出正确的判断,是执行继续前进或者撤退。
3)在游戏地图中的资源位置:在射击游戏中主要是需要玩家占领的地域资源,当玩家操作的角色倾占了该地形资源的时候,NPC就会发出相应的攻击和追逐的动作与玩家进行实时的互懂。
4)其他单位:除了以上的游戏中的对象,所有其他的单位,也必须要获取他们的位置以及性能等其他信息,比如,场景中的障碍物和建筑,NPC不能够穿越他们,而是需要躲避。
4.1.2 基本的感官系统
人工智能系统会模拟感官,比如视觉,声音,甚至气味追踪和识别目标。这就使得NPC会有自己的感觉,如感知,嗅觉,视觉和触觉等。这些感觉将寻找特定的操作来使NPC完成相对应的执行任务从而达到与用户进行交互的效果。比如,当玩家控制的角色与进入NPC的事业范围之内,NPC会执行攻击任务,对玩家进行攻击,并在攻击的同时执行移动操作,向着玩家操控的角色靠近。或者,当玩家控制的角色对NPC进行攻击NPC会根据自身的健康状况和玩家操纵角色的健康状况以及周围的环境等综合因素做出判断,对玩家进行攻击还是撤退。
4.1.3 射击游戏中的AI角色
一款游戏若是缺少交互就无法生存,所以射击游戏中的AI角色是射击游戏的核心部分,AI角色的人工智能程度也就决定着一个射击类游戏的趣味性和可玩性。
AI角色具有两种感觉,视觉与触觉。透视感即视觉将检查是否玩家角色是在一套可见的范围和距离内以决定AI角色是否要采取相关反射行为。触觉将检测如果敌人的侧面撞上了方块对撞机,很快就要环绕我们的AI角色了。正如我们以前看到的,我们的玩家角色将会发现敌人信息。所以,当AI角色的这些感官被触发时,他们发现玩家角色并作出程序里写入的相应动作与玩家进行交互。在我们这款射击类游戏中,僵尸的视觉系统看到了玩家的角色,僵尸将会按照一定的线路追逐玩家并在一定的距离范围内对玩家进行攻击;玩家的子弹如果与僵尸发生碰撞,僵尸的触觉系统将会让僵尸的血量发生减少的变化,当血量降低为0时,僵尸死亡;玩家掷出的手雷发生爆炸,触碰到僵尸的触觉系统,僵尸将会被弹飞并死亡。这些都是AI角色的人工智能技术的实现,即玩家实施的每一步操作,AI角色都会做出对应的操作予以回应从而到达与玩家进行交互的效果。
4.2 碰撞检测技术
碰撞检測技术有各种不同的算法,优秀的碰撞检测的算法可以很好地增强游戏中对象之间进行碰撞的的真实性而且能够减少CPU在计算碰撞检测相关数据的时候的内部计算时间。
这款射击类游戏在Unity3D中用如下JavaScript脚本进行碰撞检测:
function OnCollisionEnter(obj:Collision){
Debug.Log("Collider:"+obj.collider.name+"gameObject:"+obj.gameObject.name);
Action;
}
将如上的碰撞检测的OnCollisionEnter函数绑定到对象obj上,当这个物体被其他物体碰撞时函数被调用。
碰撞检测技术几乎是任何游戏中都必须要用到的技术,玩家与游戏场景中的各个对象和游戏中AI角色之间的交互动作都是在碰撞检测技术的基础上来实现的。碰撞检测的算法根据使用的对象和实际的情况会分为很多种,其中有距离预测算法、时间预测算法等等。距离计算算法是一种计算量比较大碰撞检测算法,但是这种方法的计算的精确度高,更具有真实性。这款射击类游戏采用的就是距离计算的算法。当物体之间发生碰撞以后,会出现什么样的效果和做出什么反应都是调用上面提及的函数来进行进行碰撞检测的计算。
5 总结
随着计算机技术的日益发展,Unity3D游戏引擎越来越平民化,人工智能技术也渐渐的被人们熟知并加以运用到计算机技术中。这篇文章在对Unity3D游戏引擎精心研究的基础上结合FPS射击类游戏的特点,通过3D建模技术和次世代贴图技术,运用碰撞检测和人工智能交互技术进行设计与开发。总结出射击类游戏相关场景的设置以及AI角色的设置的一些简单的方法。同时,这款游戏的故事情节也略显不足,人物角色单一,游戏模式也不够多元化,还需要进一步的改进与深化研究。
参考文献:
[1] (美)罗素.殷建平译.人工智能:一种现代的方法(第3版).清华大学出版社,2013-11-01.
[2] 伍传敏,张帅,邱锦明.基于Unity3D的FPS游戏设计与开发[J].三明学院学报,2012,29(2):35-40.
[3] (澳)尼格尼维斯基.陈薇译.人工智能:智能系统指南(原书第3版).机械工业出版社,2012-08-01.
项目名称:
2015北方工业大学实培计划大学生科研训练计划深化项目