`
javayestome
  • 浏览: 1041765 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

[游戏AI]实现掩蔽行为的策略

阅读更多
Strategies for Implementing Cover Behaviors
[游戏AI]实现掩蔽行为的策略
Share This | September 3rd, 2007 | Combat | Alex J. Champandard
原文地址:http://aigamedev.com/combat/cover-strategies
作者:Alex J. Champandard
译者:赖勇浩
Whilst catching up with recent discussions about game AI on the web, I stumbled on this thread about cover. Implementing good combat behaviors using cover isn’t always straightforward, but game developers often use the same tricks to solve this problem…
我偶尔发现在了这个讨论,终于让我赶上最近在网上关于游戏AI的讨论。利用掩体实现良好的战斗行为并非易事,但游戏开发者对于这个问题思路不多……
Screenshot: Finding and taking cover in Gears of War.
截图:《Gears of War(中译:战争机器)》中的角色懂得查找和利用掩体
Cover Behaviors
掩蔽行为
The actual behaviors are the most important part of the cover AI. If you get these right, the rest of the AI doesn’t have to be perfect as there’ll always be an appropriate fallback behavior when no cover is available nearby.
符合现实的行为是掩蔽AI 的最重要部分,如果你把这一点做好了,AI的并不需要做得非常完美,毕竟当周边没有可用的掩体的时候让角色撤退并无不妥。
Most actors require the following behaviors:
大多数角色需要这些行为:
1.Reacting to weapon fire by looking surprised for a short amount of time.
对开火作出反应,如在短时间内看起来很惊讶。
2.Assuming a intermediate position to search for cover, e.g. like dropping down on one knee.
假定一个中间位置来搜寻掩体,如单膝脆地
3.Playing a short animation while looking for cover, and signaling the threat to team mates.
在查找掩体的时候播放一个小动画,为队友打信号。
4.Moving swiftly but carefully into the most appropriate position,
快速而小心地移动到最恰当的位置。
5.Or alternatively, lying down on the spot for protection.
另一个可选的方式是就地卧倒。
Once you have the combat behaviors work correctly without using context sensitive cover, you can start thinking about scanning the environment for places to hide.
当你的战斗行为不再对掩蔽的环境敏感,可以正常工作,你就可以开始思考关于扫描环境来查找可以隐藏的地方的事了。
Manually Placing Cover Points
手动地标识掩蔽点
The simplest solution to allow actors to find cover locations in the world is to manually place them while editing the level. It’s a simple workflow that requires very little technology, so it’s often the best compromise.
让角色能够打到掩体的简单解决方案就是在编辑关卡的时候手动地标识掩蔽点。这个简单的工作流程只需要很少的技术,因此它的往往是最好的折衷办法。
Advantages
优势
Manual placement is a great way to fine tune the behaviors by placing cover locations exactly where you want them. So if you have special geometry, or need to customize the cover location per-level to fit in with a story, then manually adding cover locations to the level ideal.
手工放置的一大好处是你能够通过改变掩蔽点的位置来调整行为。因此,如果你有特殊的几何结构,或者需要为不同的故事制定不同的掩蔽点,那么可以手动增加掩蔽点。
Disadvantages
劣势
The only down side of this approach is that it requires more work by the level designers. To remedy this, you should consider attaching cover points to the object geometry (pillars, boxes, etc.), rather than for each instance in the world. Then, only add cover locations to static geometry as a fallback.
这一方法唯一不好的地方是需要关卡设计师做更多的工作。为了弥补这个缺点,可以考虑给几何结构对象附上掩蔽点信息(如柱子、箱子等),而非对游戏世界中的每一个实例手动编辑。然后只在静态几何结构上增加掩蔽点作为后备。
Ideally, you should start with manual cover point placement, then design your software to support multiple sources for cover spots. This will allow you to automate part of the process where possible.
理想的情况是,应该先使用手动放置掩蔽点的方法,然后设计你的软件以支持多种掩蔽点来源,这就有可能实现部分的自动处理。
Terrain Analysis
地物分析
If you feel confident about extending your level geometry pipeline, then terrain analysis becomes an option too. The idea is to use the structure of the world itself to find cover locations automatically. This process typically involves two steps: generating candidates and filtering out the bad ones.
如果你有信心扩展你的关卡结构管道,那么地物分析就变得可用了。它的思想是使用游戏世界自身的结构来自动查找掩蔽点。这一过程通常涉及两个步骤:产生候选掩蔽点和剔除不好的。
1) Generate cover candidates from the geometry
1)生成候选掩蔽点
To achieve the first step of generating cover candidates, you can use any of the 3D data available for each level. This includes the collision mesh (low and high detail), the navigation mesh, or even a waypoint graph.
生成候选掩蔽点的第一步是你能够利用关卡中的任何3D数据。包括碰撞网格(包括高、低细节)、导航网格或者是路点图。
Typically, the navmesh provides the most useful information as it models the floor of the environment very closely. Each external edge of the navmesh can be assumed to be around an obstacle of some kind, so generating cover points at fixed intervals along those edges is a very good strategy. Concave navmesh corners also provide you with information about leaning from cover, which would be very hard to determine otherwise.
通常导航网络能够提供最有用的信息,因为它与环境地面模型关系最为密切。导航网格的每一个外边都可以认为是某种障碍物的边缘,所以沿固定间隔的外边来生成掩蔽点是一个很好的策略。导航网格的凹角能够提供关于从掩蔽点倾侧的信息,不然这是难以计算的。
Using the waypoint graph also works, but it doesn’t have as good a sense of the floor as the navmesh. The result is that the waypoints are rarely placed perfectly up against the cover locations. It’s also much harder to annotate the cover points as places where leaning is supported.
路点图也能够工作得很好,但比起导航网格还是差一点。因为路点很少是与掩蔽点“紧贴”的,它也难以标注掩蔽点对于倾侧的支持。
2) Filter out invalid or bad choices for cover.
2)剔除不可用的与不够好的选择
The algorithm for generating cover candidates is typically very overeager, so it’s necessary to filter most of them out. To do this, you need to compute if each provides sufficient cover from any area of fire. A zone around each cover point should be scanned using line of sight (LOS) checks, either limited by a maximum radius or using the potentially visible set (PVS) in the level. If a cover location is hidden from a minimum area (customizable), then it should be saved for use at runtime as it may be useful.
该算法生成的掩蔽点许多都不可用或者不够好,所以需要剔除它们中的大部分。为了完成这一步,你需要计算是否能够掩蔽角色以抵挡任何地方发射的子弹,每个掩蔽点的周围都应当使用最大半径的视矩或使用关卡的潜在可见集进行扫描。如果掩蔽点的位置隐藏在很小的区域当中,那么应当在运行时把它保存起来,因为它相当有用。
Cover Selection
掩蔽点选择
Pre-processing cover locations helps greatly, but since most game situations change dynamically, there’s always some checking necessary at runtime. Typically, the cover selection algorithm takes into account:
对掩蔽点的预处理好处巨大,但随着更多的游戏支持动态变化的场景,就需要在运行时进行检验了。通常而言,掩蔽点选择的算法考虑以下两点:
Position and orientation of the enemies to determine the source of fire.
敌人的位置与方向确定为开火点。
Accessibility of cover points, and is return fire possible.
掩蔽点的可及性,反击的可能性。
A good place to start for cover selection is to implement a scoring mechanism for neighboring locations. You can add different heuristics to rank the cover points as necessary, and the actor will always try to pick the best.
一个极佳的方法就是对周边的位置实现计分机制,必要时可以为掩蔽点增加不同的启发式排名,那么角色将始终挑选其中最好的。
What techniques do you use to find cover for your actors?
你用什么技术来让角色找到掩蔽点?
分享到:
评论

相关推荐

    一个简单游戏ai的实现--让电脑自己愉快的打飞机

    在本文中,我们将深入探讨如何实现一个简单的游戏AI,以让电脑在Python...这只是一个起点,随着技术的提升,你可以尝试更复杂的AI算法,如搜索算法(A*)、行为树,甚至是机器学习,为游戏带来更加智能和动态的体验。

    AI.rar_ai_人工智能 代码_游戏 人工智能_游戏ai代码_游戏源代码

    "AI.rar_ai_人工智能 代码_游戏 人工智能_游戏ai代码_游戏源代码"这个压缩包很可能包含了用于构建游戏AI的各种源代码和相关资源。游戏AI是让游戏中的非玩家角色(NPCs)表现出智能行为的技术,它可以模拟各种复杂的...

    ai智能游戏绘画 智能AI机器人绘画游戏大逃杀Java+Vue源码 ai绘画游戏人物 格斗机器人ai绘画.zip

    在游戏开发领域,人工智能的应用越来越广泛,尤其是在游戏角色的行为模拟、敌人AI设计以及游戏策略生成等方面。在这个项目中,AI可能被用于创建智能的机器人角色,它们能够自主行动、学习和适应玩家的行为,增加了...

    普通高中人工智能教学策略初探——基于人脸识别的“人工智能初步”模块教学设计.pdf

    高中人工智能教学策略是基于深度学习是机器学习的一个分支且机器学习是深度学习的基础的基本理念,本着先入门机器学习,再延伸到深度学习的教学策略,遴选有代表性的基础典型案例,通过项目实现突破机器学习和深度...

    游戏人工智能课件

    游戏人工智能是计算机科学与电子游戏开发领域的一个重要分支,它涉及到如何使游戏中的角色、环境和其他元素表现出智能行为。在本课程中,我们将深入探讨这一主题,尤其关注使用C++编程语言来实现游戏AI。 首先,...

    基于Unity3D游戏人工智能的研究与应用

    总结起来,本文深入探讨了游戏人工智能的两种重要技术——行为树和机器学习,并在实际的射击游戏中进行了应用。通过这些技术的结合,游戏AI不仅具有了高度的可控性,而且展现出更拟人化的智能行为。这不仅提升了游戏...

    AI五子棋游戏,Java实现.zip

    AI五子棋游戏,Java实现AI五子棋游戏,Java实现AI五子棋游戏,Java实现AI五子棋游戏,Java实现AI五子棋游戏,Java实现AI五子棋游戏,Java实现AI五子棋游戏,Java实现AI五子棋游戏,Java实现AI五子棋游戏,Java实现AI...

    2048小游戏人工智能模式的Python实现源码.zip

    本项目以"2048小游戏人工智能模式的Python实现源码.zip"为主题,其中包含了一个名为"2048AI-master"的文件夹,这显然是一份使用Python编程语言实现2048游戏的AI算法的代码库。接下来,我们将深入探讨这个项目中可能...

    2023游戏与人工智能发展报告.pdf

    自电子游戏诞生以来,人工智能已经逐渐融入其中,从早期简单的游戏规则逻辑到如今的复杂智能体,如在Dota2等竞技游戏中,人工智能系统已经能够展现出类似人类玩家的策略和反应。这种进步得益于算法的优化和计算能力...

    用行为树方式实现AI

    行为树(Behavior Tree)是一种在人工智能(AI)领域中用于设计和实现复杂行为的结构化方法,尤其在游戏开发和机器人控制中应用广泛。它通过树状结构来组织AI的行为,使得逻辑清晰、易于理解和调试。这篇博文《用...

    手游开发算法收集 - 人工智能(AI)与游戏算法

    手游开发中的人工智能(AI)与游戏算法是游戏开发者必须掌握的关键技术之一,它们为游戏带来了生动的交互体验和丰富的挑战性。在这个领域,AI不仅包括角色的智能行为模拟,还包括玩家行为预测、游戏难度调整等多个...

    回合制战略游戏游戏AI设计

    这类游戏通常需要AI系统能够模拟真实的决策过程,使非玩家角色(NPCs)展现出智能行为,从而为玩家提供富有挑战性和趣味性的游戏体验。以下是关于回合制战略游戏AI设计的一些关键知识点: 1. **状态机**:AI的核心...

    网络游戏-实现VR游戏中NPC的AI行为的方法.zip

    本资料包“网络游戏-实现VR游戏中NPC的AI行为的方法.zip”包含了关于如何构建这种智能行为的关键知识点。以下是详细的解释: 1. **基础AI概念**:NPC的AI系统通常基于决策树、状态机或行为树等基础结构。决策树允许...

    游戏人工智能编程案例精粹cocos creator实现.zip

    在游戏开发领域,人工智能(AI)的运用已经成为提升游戏体验的关键技术之一。Cocos Creator作为一款强大的2D和3D游戏开发引擎,为开发者提供了丰富的工具集,包括对AI的支持,使得开发者能够轻松地实现复杂的游戏...

    人工智能与游戏的基础知识.pptx

    在游戏中,人工智能可以分为三种类型:漫游 AI、行为 AI 和策略 AI。漫游 AI 确定游戏对象如何在虚拟世界中漫游,例如怪兽追踪玩家角色或 NPC 飞行按照预定的方式飞行。行为 AI 确定游戏对象的行为,例如 NPC 追踪或...

    游戏人工智能化的发展和展望.doc

    游戏AI是指在游戏中应用人工智能技术,使游戏中的角色、环境或其他元素表现出类似人类的智能行为,增加游戏的挑战性和可玩性。 一、人工智能及游戏人工智能简介 人工智能(AI)是一门综合性的技术科学,致力于模拟...

    游戏AI之FSM(1)

    - 在游戏AI中,FSM可以帮助设计复杂的智能行为,如角色的攻击、防守、探索或交互等。 2. FSM 结构 - 状态:定义了AI实体在某一时刻的行为模式,例如“行走”、“攻击”、“逃跑”等。 - 转换:描述了在特定条件...

    基于人工智能的开放式文字冒险游戏——AI Dungeon个案研究.pdf

    基于人工智能的开放式文字冒险游戏——AI Dungeon的研究涉及到多个重要的IT知识领域,具体包括人工智能技术、数据模型、游戏开发、互动叙事以及电子游戏产业的发展趋势。 首先,AI Dungeon作为一种智能化纯文字冒险...

Global site tag (gtag.js) - Google Analytics