`
cqphper
  • 浏览: 23718 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

角色扮演游戏中敌人AI(人工智能)的设计方法

阅读更多
角色扮演游戏中敌人AI(人工智能)的设计方法一


角色扮演游戏,Role Play Game(RPG),它总的来说包括三大类:动作类(即时)角色扮演;回合制角色扮演游戏;战棋类角色扮演。这三类游戏在遭遇敌人时,就是一场战斗要展开的开始,那么,游戏中的敌人是按照什么样的机制来运作的呢?换句话说,它们的AI(人工智能)是如何工作的呢?本文将重点就这个话题进行讨论。



在我们看来,这些敌人的操作是必须在一定程度上模拟人脑的思考的。也就是说,在什么情况下作出什么反应、什么应对,这都应该是比较有针对性,符合一定的逻辑的。例如:一个拥有治疗技能的敌人,在它的生命值所剩无几时,它就应该会思考得出一个反应,对自己进行治疗。这是设计师必须给予敌人AI设计的逻辑应对部分。



光有逻辑应对能力的设计是不够的。因为,如果敌人时刻都能够进行最优化的、最正确的判断时,那么玩家将很难打败敌人。这时候,我们必要多考虑一些参数,来限制敌人的反应和应对能力:

1)思考时间。把敌人的反应和应对判断分成若干个时间片段。某个时间片段,敌人可以完全正确地作出100%的反应;某个时间片段,敌人只可以正确判断其中50%的情况并作出反应;某个时间片段,敌人则只可以对其中30%的情况进行正确判断并作出反应;某个时间片段,敌人甚至是不会作出任何反应。然后,这些时间片段将周而复始地进行循环、或随机进行闪现。



2)技能和物品的使用时间间隔。如果让敌人无休止、无节制地对自己使用同一类治疗技能或同一种治疗物品,那么,最终就可能会导致玩家无法去杀死这个敌人了。如果敌人每两次使用同一类治疗技能或同一种治疗物品时,之间都强制存在一段时间间隔时,那么即使敌人的治疗技能非常强大,不过,只要玩家能够在一个周期内对它造成的攻击伤害高于治疗回复就可以了。同样地,如果敌人无休止、无节制地对玩家使用必杀技,那么玩家将很难负荷得起。如果每两次发动必杀技能之间强制存在一段时间间隔,这就给予了玩家一段自我恢复的时间,只要玩家能够在敌人下次必杀技使用前恢复过来,就能应对持久的战斗。



如果敌人只是一个完全不动的木桩,那么以上的逻辑反应和限制反应两点的设计就足够了。不过,实际上很多游戏中,敌人并不是一成不变地站在原地的。这时候,我们就需要为它设计“路径”了。这种“路径”设计包括:

1)巡逻路径。敌人没有发现玩家时,它的行走范围是怎样的、在这个行走范围内,敌人是按照什么样的路线进行行走的,这就是巡逻路径。巡逻路径可以是让敌人从一个起点开始到一个终点后进行等待;也可以是在一段路程上不断重复地来回或循环走动。



2)侦察范围和侦察条件。侦察范围可以理解为敌人的视力,视力看得越远、范围越广,那么你靠近敌人时就越容易被敌人发现;相反,敌人视力是近视的话,那么你就可以在不被敌人发现的情况下更贴近敌人了。侦察条件则是对侦察范围的一个补充说明。例如敌人的视力不能穿过墙壁,那如果玩家站在墙壁后,即使是在敌人的侦察范围内,敌人也不会发现玩家。这就是侦察条件的其中之一。



3)缉捕路径。当敌人发现玩家时,采用走什么样的路径去辑捕呢?这也是需要考虑的问题。如果敌人和玩家之前没有任何障碍物,那么敌人直接靠近玩家就可以了,不过,如果敌人和玩家之间存在障碍物、或者存在地势高低差异时,敌人就需要绕路去缉捕玩家了。



“反应逻辑、限制反应、路径”这是角色扮演游戏中,敌人AI设计的三个要点。把握好这三点的组合,就能够编制出敌人适当的运作机制。





下面我们来看几个实例:

动作类角色扮演游戏








如上图:

虚线是敌人的巡逻路径,敌人就是沿着这条路径循环巡逻的。灰色的梯形是敌人的侦察范围,当敌人行走到B点,而玩家又恰好走到C点时(玩家初始位置在A点),敌人就会发现玩家,并上前进行攻击。



1)假设敌人有100HP,100MP,普通攻击伤害5HP、每2秒攻击一次,技能攻击伤害10HP、消耗50MP、每两次技能间隔时间4秒。而玩家有100HP,普通攻击伤害5HP、每1秒攻击一次。



敌人的判断反应是为玩家制造尽可能大的伤害,所以技能攻击间隔时间一到就会发动技能攻击。那么:

玩家将在20秒内对敌人造成100HP(5HP*20)的伤害导致敌人死亡。

而敌人则在前10秒对玩家造成25HP(5HP*5)的普通攻击伤害,20HP(10HP*2)的技能伤害;由于MP已经耗尽,在接下来的10秒里,敌人无法在进行技能攻击,所以只会造成25HP(5HP*5)的普通伤害;20秒内一共对玩家造成70HP的伤害。



2)假设敌人有100HP,100MP,普通攻击伤害5HP、每2秒攻击一次,技能治疗可以为自己回复20HP、消耗50MP、每两次技能间隔时间8秒。而玩家有100HP,普通攻击伤害5HP、每1秒攻击一次。



敌人的判断反应是除了攻击玩家外,当自己少于或等于1/4时,为自己进行治疗。那么:

玩家对敌人造成75HP(100HP*3/4)伤害,需要15秒时间(75/5)。

在这15秒时间内,敌人对玩家造成37.5HP(15*5/2)的伤害。

在15秒时,由于敌人的HP等于1/4,于是马上使用治疗技能为自己回复20HP,此时敌人有45HP。

在接下来8秒内,玩家对敌人造成40HP(5HP*8)的伤害。同样地,敌人对玩家造成20HP(5HP*4)的伤害。

此时,由于敌人的HP少于1/4,并且已经相隔8秒可以再使用治疗技能,敌人可以为自己回复20HP,现时敌人有25HP。

玩家对敌人造成25HP的伤害,只需要5秒。同样地,在这5秒内,敌人对玩家造成12.5HP(5*5/2)的伤害。

这时候,玩家把敌人打倒了,玩家一共受到了70HP的伤害。



上文的例子,技能并不占用普通攻击的时间,并且是瞬发的。而计算的伤害则是以常规时间与攻击平均每秒伤害来计算,并假设敌人在临死前可以把最后一次攻击打出。





回合制角色扮演

游戏的遇敌方式为“踩地雷”,则玩家在地图上行走时随机进行战斗。所以,“路径”的设计就可以省略掉了。如果敌人是地图上可见并巡逻的设计,则依然可以遵循“路径”的方式来设计,当敌人辑捕到玩家,碰撞后进行战斗。



假设敌人有100HP、40MP,普通攻击伤害10HP,技能攻击伤害75HP、消耗10MP、每两次使用相隔10回合,技能治疗回复20HP、消耗10MP、每两次使用相隔6回合。玩家有100HP,普通攻击伤害5HP,可以使用物品治疗100HP、无回合间隔限制。



敌人以对玩家造成最大伤害为目的,所以技能间隔时间一到就会马上发动技能攻击。并且在自己少于或等于1/4血时使用技能进行自我治疗。



敌人有两种不同的状态,当MP不为0时是普通状态,

玩家对敌人普通攻击造成75HP(100HP*3/4)伤害,需要攻击15(75/5)个回合。

敌人在15个回合内对玩家造成160HP(20HP+10HP*14)。

其间,玩家需要使用一次治疗物品,所以实际回合数会增加为16个回合。

敌人在17回合使用技能为自己治疗,回复至100HP。



同理,再过17个回合,敌人依然有100HP,不过MP为0。此时,敌人进入第二状态——虚弱。在虚弱状态,敌人防御力下降100%,持续6回合。虚弱后,敌人回复40MP。在虚弱过后,敌人有50HP、40MP。



当敌人HP少于或等于1/4时,它则会使用技能自我治疗。如此循环,看似玩家无法打败敌人。现在,我们换一个思路:



在敌人剩下30HP时,玩家不再发动任何攻击,选择防御(或待机),并通过使用治疗物品维持生命。当敌人使用技能把MP耗尽,进入虚弱状态时,玩家再在6个回合内对敌人造成30(5HP*6)伤害将它击毙。



上文的AI设计,如果玩家麻木地攻击,那么这将会大费周章才能把敌人杀死。不过,如果懂得等待时机,则很快就可以把敌人杀死了。



恰当地计算好伤害,并引入状态转换的设计,这将为游戏带来新的乐趣。





你可以融入更多的元素令这个模型更加丰富,例如技能并不是瞬发的,会占用一次普通攻击机会、并且咏唱技能时不再进行普通攻击;咏唱技能时被攻击会延长咏唱时间等等。不过,无论你如何变化,上文就是它的基础模型。





战棋类角色扮演。



如上图:

虚线是敌人巡逻的路线,常规地说,敌人将从A点出发,巡逻移动到B点后待机不动,等待玩家靠近。不过,如果此时玩家从C点移动到D点并被敌人发现时,敌人则会缉捕玩家并展开战斗。



战斗是采用地图上回合制进行的。假设敌人有100HP、25MP,普通攻击伤害是5HP,技能治疗可以回复8HP、消耗5MP、无回合间隔限制。而玩家有100HP,普通攻击伤害是10HP。



逻辑判断是除了对玩家进行攻击外,当敌人的HP少于或等于1/4时,则会使用治疗技能自我回复HP,并开始逃跑。那么:

如果玩家和敌人在DE点相遇,8个回合后,玩家对敌人造成80HP(10HP*8)的伤害。同时,敌人对玩家造成40HP(5HP*8)的伤害。

此时,敌人开始延实心箭头的方向逃跑,并使用治疗技能自我回复HP。



如果玩家以相同的方式追赶敌人,则可以以每回合2HP(10HP-8HP)伤害扣减少敌人的HP。并在6个回合后敌人的MP耗尽没法再进行自我治疗而将其击毙。



不过,如果玩家因为某些原因而不追赶敌人,敌人则会以每回合8HP的速度回复HP,5个回合一共回复40HP,此时,敌人就有60HP了。要是这时候玩家才想起要追杀敌人,则首先需要花6回合的时间追上敌人,然后再花6回合的时间将其击毙。



这里,除了要考虑常规的战斗消耗HP而产生的回合时间外,还需要考虑敌人与玩家双方距离移动所产生的回合时间。

--------------------

“反应逻辑、限制反应、路径”这三个要素是我们设计角色扮演游戏中敌人AI的三把利器,如何组合它们,如何配合地使用它们,都将关系到敌人的运作机制。



上文就动作类(即时)角色扮演;回合制角色扮演游戏;战棋类角色扮演各举了一个例子,你可以从中进行启发延伸、并进行模型丰富、变异。不过,无论你如何进行具体化的变动设计,它都离不开三要素。

全文完。



分享到:
评论

相关推荐

    VC++角色扮演游戏程序设计 + 全书源码

    在游戏设计中,事件处理是非常重要的一部分。C++中,这通常涉及到函数回调和消息传递机制。例如,游戏循环会不断检查用户输入、处理碰撞检测、更新游戏状态,并在必要的时候渲染屏幕。这需要理解C++的函数指针、事件...

    visual c++角色扮演游戏程序设计 PDF格式

    《Visual C++角色扮演游戏程序设计》是一本专为游戏设计初学者准备的指南,它深入浅出地介绍了如何使用Visual C++这一强大的编程工具来构建角色扮演游戏(RPG)。RPG游戏以其丰富的剧情、角色发展和策略性玩法深受...

    VC++角色扮演游戏程序设计

    C++是面向对象的编程语言,它允许我们定义类来创建对象,这在游戏设计中至关重要。角色、敌人、道具等游戏元素都可以用类来表示,通过继承和多态性实现丰富的游戏逻辑。 三、游戏架构设计 战旗回合制游戏的核心在于...

    《Visual C++角色扮演游戏程序设计 》全书源码(2)

    《Visual C++角色扮演游戏程序设计》是一本深入探讨如何使用Microsoft的Visual C++开发角色扮演游戏(RPG)的书籍。全书源码分为三个部分,本压缩包包含第二部分,即chapter7、chapter8、chapter6和chapter5的源代码...

    《Visual C++角色扮演游戏程序设计 》全书源码

    《Visual C++角色扮演游戏程序设计》是一本深入探讨如何使用Microsoft的Visual C++开发角色扮演游戏(RPG)的书籍。源码包含在提供的压缩包中,为读者提供了实践和学习编程技术的宝贵资源。通过分析这些源码,我们可以...

    Visual C++角色扮演游戏程序设计实例教程外加源码

    《Visual C++角色扮演游戏程序设计实例教程》是一本专注于C++编程语言在游戏开发领域的实践教程,特别适合对游戏编程感兴趣的初学者...同时,配合源码分析,将理论知识与实践结合,可以更好地提升编程和游戏设计能力。

    RPG角色扮演游戏设计

    4. AI(人工智能):敌对角色的行为通常由AI系统控制,源代码可能包含了简单的决策树、状态机或者更复杂的AI算法,使得非玩家角色(NPCs)能根据环境和玩家行为做出反应。 5. 用户界面(UI):RPG游戏的菜单、...

    Visual+C++角色扮演游戏程序设计

    在本文中,我们将深入探讨如何使用Visual C++进行角色扮演游戏(RPG)程序设计,适合初学者入门。Visual C++是一款强大的开发环境,它结合了IDE、编译器和调试工具,为创建C++应用程序提供了便利。对于游戏编程,...

    C#本科毕业设计基于Unity3D引擎的网络角色扮演游戏设计与实现源代码.zip

    在本项目中,我们关注的是一个使用C#编程语言和Unity3D...以上就是基于Unity3D引擎的网络角色扮演游戏设计与实现中涵盖的主要知识点。通过深入理解和实践这些概念,开发者可以创建出引人入胜且运行流畅的多人在线游戏。

    Visual C++角色扮演游戏程序设计(PDF)

    此外,书籍可能还会探讨游戏中的AI(人工智能)设计,例如简单的敌对角色行为和路径规划。还有可能涉及网络编程,以便实现多人在线游戏功能,如同步玩家动作和数据交换。 文件名“visual c++角色扮演游戏程序设计”...

    AI游戏引擎程序设计

    人工智能在游戏设计中的应用非常广泛,它为游戏带来了更加智能和真实的交互体验。在游戏开发中,AI主要用来创建非玩家角色(NPC)的行为逻辑、进行游戏环境的动态变化、提供基于玩家行为的适应性反馈等。这些技术...

    角色扮演游戏程序设计(8.6M)

    此外,AI系统设计,如敌人AI的决策逻辑,也会有所阐述,确保游戏中的智能角色能做出合理的反应。 再者,数据库设计也是RPG游戏中的重要部分,存储角色属性、装备、技能等数据。数据库结构合理与否直接影响到游戏的...

    角色扮演小游戏

    在IT行业中,游戏开发是一项复杂而有趣的任务,尤其在创建角色扮演小游戏时。在这个场景中,我们将探讨如何利用面向对象编程(OOP)中的概念,如类、继承和虚基类,来构建一个简单的回合制战斗系统。我们将重点关注...

    《Visual C++角色扮演游戏程序设计 》全书源码(3)

    6. **AI算法**:敌人和NPC的行为可能需要简单的AI算法,如有限状态机(FSM)或行为树,让它们在游戏世界中表现出智能。 7. **碰撞检测**:确保角色和物体之间的交互准确无误,需要高效的碰撞检测算法,例如基于包围...

    人工智能AI程序与例子

    根据给定文件的信息,我们可以提炼出以下关于《人工智能AI程序与例子》这本书的相关知识点: ### 书籍基本信息 - **书名**:《编程游戏AI实例》(Programming Game AI by Example) - **作者**:马特·巴克兰德...

    visual c++角色扮演游戏程序设计

    通过阅读《Visual C++角色扮演游戏程序设计》这本书,你将能够深入学习到以上这些知识,并掌握如何在实践中应用它们来创建引人入胜的RPG游戏。目录可能会涵盖从基础概念到高级技术的各个章节,逐步引导你完成整个...

    《Visual C++角色扮演游戏程序设计 》全书源码(1)

    《Visual C++角色扮演游戏程序设计》是一本深入探讨如何使用Microsoft的Visual C++开发角色扮演游戏(RPG)的书籍。全书源码分为三个部分,本部分为第一部分,包括了"chapter4"、"chapter3.3"、"chapter3.1"和...

    电脑游戏中的人工智能制作(含代码)

    在电脑游戏中,人工智能(AI)扮演着至关重要的角色,它为游戏注入了生命,使得非玩家角色(NPCs)能够自主行动,与玩家互动,甚至挑战玩家的能力。本主题将深入探讨游戏AI的设计原理和实现方法,包括行为树、状态机...

    Visual C++ 角色扮演游戏程序

    4. **游戏引擎架构**:一个良好的游戏引擎架构包括游戏循环、事件处理、渲染系统、物理引擎、AI(人工智能)系统、音频管理等模块。开发者需要理解如何组织和设计这些组件,以确保游戏的稳定性和性能。 5. **数据...

    【Unity ARPG游戏开发框架】Action-RPG Starter Kit 快速搭建动作角色扮演游戏

    Action-RPG Starter Kit 是一款专为Unity游戏引擎设计的工具包,旨在帮助开发者快速搭建动作角色扮演游戏(Action Role-Playing Game, ARPG)的基础框架。这类游戏通常结合了动作游戏的即时战斗元素和角色扮演游戏的...

Global site tag (gtag.js) - Google Analytics