当前位置: 首页 > news >正文

Game AI ——游戏人工智能(逻辑及剧情生成)

一、Game AI 的介绍 

       "Game AI"(游戏人工智能)通常指的是在电子游戏中使用的各种人工智能技术和算法,用于控制游戏中的非玩家角色(NPC)、敌人、队友等,以及为玩家提供有挑战性的对手或有趣的互动体验。Game AI 的核心目的是增强游戏的可玩性和沉浸感,使游戏世界更加生动和富有挑战性。

       包括 AI bot、NPC 逻辑及剧情生成和数字资产生成。
       游戏AI主要关注实体根据当前条件所采取的行动。这就是传统人工智能文献所指的控制“ 智能代理”,代理通常是游戏中的角色,但也可以是车辆,机器人。或者更抽象的东西,例如一组实体,甚至一个国家或文明。 

二、Game AI 的核心功能和技术 

1. 路径规划与导航(Pathfinding & Navigation)

功能:

路径规划与导航是Game AI的重要组成部分,主要用于指导NPC或敌人在游戏环境中移动,使其能够有效地避开障碍物并到达目标地点。这在开放世界、策略、动作游戏中尤为关键。

技术:
  • A算法(A Search Algorithm)

    • 一种启发式搜索算法,广泛应用于游戏中。A*算法通过评估从起点到目标的“成本”,选择最佳路径。它结合了Dijkstra算法的最短路径和贪婪搜索算法的启发式方法,既保证了路径的最优性,又提高了搜索效率。
  • Dijkstra算法(Dijkstra’s Algorithm)

    • 用于计算图中节点之间的最短路径。虽然效率不如A*算法高,但在某些无障碍的游戏场景中仍有应用。
  • NavMesh导航网格(Navigation Meshes, NavMesh)

    • 一种几何分割技术,将游戏环境划分为一系列可导航区域,NPC在这些区域之间移动。NavMesh可以通过预先计算路径提高游戏运行时的效率。
  • 基于物理模拟的运动规划(Physics-based Motion Planning)

    • 结合物理引擎,使NPC能够以更自然和真实的方式移动。常见于3D游戏中,如使用力和碰撞检测来模拟NPC的行走、奔跑、跳跃等动作。

2. 决策树与行为树(Decision Trees & Behavior Trees)

功能:

决策树和行为树用于管理NPC的行为逻辑和决策制定,帮助NPC选择适当的行动响应玩家的操作和环境变化。

技术:
  • 决策树(Decision Trees)

    • 一种分层结构,通过一系列的条件判断来决定NPC的行为。决策树是简单且直观的,适用于处理明确的行为逻辑,如“如果看到玩家,则攻击,否则巡逻”。
  • 行为树(Behavior Trees)

    • 行为树是决策树的扩展,提供了更灵活的结构。它不仅可以处理条件判断,还可以管理复杂的行为组合和序列化操作。行为树能够在不影响整体逻辑的情况下轻松添加或修改行为,广泛应用于复杂的AI行为管理。

3. 有限状态机(Finite State Machines, FSMs)

功能:

FSMs用于描述NPC在不同状态之间的转换,如攻击、防御、巡逻、逃跑等状态,使得AI能够根据游戏场景变化做出合适的反应。

技术:
  • 状态与转换(States & Transitions)

    • NPC的行为被分解为多个状态,每个状态代表一种特定的行为。状态之间通过条件转换连接,例如“当玩家接近时,从巡逻状态切换到攻击状态”。
  • 层次有限状态机(Hierarchical FSM, HFSM)

    • 允许状态机嵌套,使得复杂行为可以分解为更小的子状态机,从而提高AI行为的管理和扩展能力。

4. 群体行为与协作(Group Behavior & Cooperation)

功能:

群体行为与协作技术允许多个NPC或敌人协调行动,如团队战斗、群体移动等。这在多人游戏和策略游戏中尤其重要。

技术:
  • 分布式AI(Distributed AI)

    • 在群体行为中,每个NPC都有自己的AI,但它们之间通过信息共享来协调行动,如共同攻击目标或维持队形。
  • 领队-跟随模型(Leader-Follower Model)

    • 一个NPC作为领队,其他NPC作为跟随者。领队决定整体行动方向,跟随者根据领队的位置和行动进行调整。这种模型常用于实现如队伍移动、护送任务等。
  • 基于物理的碰撞避免(Physics-based Collision Avoidance)

    • 利用物理模拟来处理NPC之间的碰撞避免,使群体行为更加流畅和真实。

5. 学习与适应(Learning & Adaptation)

功能:

使得Game AI能够根据玩家的行为进行学习和适应,提高游戏挑战性,保持玩家的兴趣。

技术:
  • 强化学习(Reinforcement Learning, RL)

    • NPC通过与环境交互,基于奖励机制学习最优行为策略。例如,AI可以通过反复尝试不同战术,并根据成功与否进行调整。
  • 遗传算法(Genetic Algorithms, GA)

    • 通过模拟自然选择和进化,AI可以优化行为策略。AI会生成多个行为“个体”,选择表现最好的进行“繁殖”和“变异”,逐渐优化行为模式。
  • 神经网络(Neural Networks)

    • 通过大规模数据训练,AI可以学会复杂的行为和决策模式,特别是在动态和复杂的游戏环境中,如动作识别、策略优化等。

6. 情感模拟与社交互动(Emotion Simulation & Social Interaction)

功能:

通过情感模拟和社交互动,使NPC的行为更加人性化,使玩家能够感受到NPC的情感变化和个性特点,增强游戏的沉浸感。

技术:
  • 情感模型(Emotion Models)

    • 模拟NPC的情感状态,如快乐、愤怒、恐惧等,并根据这些情感状态调整NPC的行为。例如,NPC在感到恐惧时可能会逃跑,而在愤怒时可能会攻击。
  • 社交行为树(Social Behavior Trees)

    • 扩展行为树,使NPC能够进行复杂的社交互动,如谈话、合作、竞争等。NPC可以根据与玩家和其他NPC的关系调整其行为。
  • 基于规则的情感表达(Rule-based Emotion Expression)

    • 使用预设规则来控制NPC的情感表达,如面部表情、语音语调、肢体语言等。

三、Game AI 的使用场景

  1. 战斗系统(Combat Systems)

    在动作游戏和射击游戏中,Game AI用于控制敌人的攻击、防御、协作策略,使战斗更加激烈和富有挑战性。
  2. 策略与模拟游戏(Strategy & Simulation Games)

    在策略游戏中,AI负责管理资源、制定战术、执行战略决策;在模拟游戏中,AI用于模拟复杂的生态系统或社会结构。
  3. 冒险与RPG游戏(Adventure & RPG Games)

    AI用于生成任务、控制对话和故事发展,管理玩家与NPC的互动,提升游戏的沉浸感。
  4. 体育与竞速游戏(Sports & Racing Games)

    AI用于控制对手队伍或赛车手,模拟人类玩家的决策和反应,使游戏更具挑战性和真实性。

相关文章:

Game AI ——游戏人工智能(逻辑及剧情生成)

一、Game AI 的介绍 "Game AI"(游戏人工智能)通常指的是在电子游戏中使用的各种人工智能技术和算法,用于控制游戏中的非玩家角色(NPC)、敌人、队友等,以及为玩家提供有挑战性的对手或有趣的互动…...

算法基础知识——核函数

简介:个人学习分享,如有错误,欢迎批评指正 核函数(Kernel Function)是机器学习中一种重要的工具,特别是在支持向量机(SVM)、核岭回归、核主成分分析(KPCA)等核…...

安卓xml乱码/加密转换:abx2xml和xml2abx使用及源码介绍

背景: 上一篇文章 android系统中data下的xml乱码无法查看问题剖析及解决方法 发布后,想要寻找一个可以直接把二进制xml和普通xml进行相互转换的,当时还写了相关的方案,但是当时没有找到现成的开源工具,后来经过相关粉…...

slice 截取

JavaScript中的一个数组方法。然而,在Vue 3的应用开发中,slice 方法经常被用于处理数组数据,特别是在需要实现分页、数据截取或数据展示等场景时。 slice 方法的基本用法 slice() 方法返回一个新的数组对象,这一对象是一个由 be…...

XReparentWindow踩坑分析

X11是Linux发行系统中广泛采用的显示协议,各个系统基本上都支持XLib库,作为底层接口,XReparentWindow接口的功能就是重新设置父窗口,注意这个可以跨进程设置父窗口,例如将已经运行的进程的父窗口设置自己的程序Wid&…...

OpenAI动荡,将走向何方、GPT5或许将近、毒舌AI轻松破防网友、最新版 GPT-4o AI 模型得满分 | AGI视界周刊第 4 期

AI 视界周刊由战场小包维护,每周一更新,包含热点聚焦、应用破局、学术前沿、社区热议、智见交锋、跨界 AI、企业动态和争议 AI 八大板块,后续板块划分和内容撰写在周刊迭代过程中持续优化,欢迎大家提出建议。 欢迎大家来到《AI 视…...

RCE---无字母数字webshell

<?php if(isset($_GET[code])){$code $_GET[code];if(strlen($code)>35){die("Long.");}if(preg_match("/[A-Za-z0-9_$]/",$code)){die("NO.");}eval($code); }else{highlight_file(__FILE__); } 分析代码&#xff1a;传参不大于35&…...

有意思的漏洞复现与分析一

目录 一、Linux命令长度限制突破方法 1.在二进制漏洞利用中&#xff0c;某师傅遇到可控数据只有8字节的情况&#xff0c;去掉字符 串尾的\0&#xff0c;限制在7个字符。 一、Linux命令长度限制突破方法 1.在二进制漏洞利用中&#xff0c;某师傅遇到可控数据只有8字节的情况&a…...

力扣题解(按身高排序)

2418. 按身高排序 给你一个字符串数组 names &#xff0c;和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i&#xff0c;names[i] 和 heights[i] 表示第 i 个人的名字和身高。 请按身高 降序 顺序返回对应的名字数组 names 。 思路&…...

Redis的六种淘汰策略详解

Redis作为一种高性能的键值对存储系统&#xff0c;其数据全部存储在内存中&#xff0c;因此内存管理对Redis的性能至关重要。当Redis的内存使用达到上限时&#xff0c;就需要通过淘汰策略来释放内存空间&#xff0c;以便存储新的数据。Redis提供了六种不同的淘汰策略&#xff0…...

vue3中 ref 和 reactive 的区别

相同&#xff1a;均是声明响应式对象。且声明的响应式对象是深层的 1. 数据类型不同&#xff1a;ref用于包装JavaScript基本类型的数据&#xff08;如字符串、数字、布尔值等&#xff09;&#xff0c;而reactive可以用于包装JavaScript对象和数组等复杂类型的数据。 2.访问方式…...

《单例模式的深度解读:实现方式、破坏情况与利弊权衡》

单例模式 一、单例模式的定义 ​ 单例模式&#xff08;Singleton Pattern&#xff09;是一种常见的软件设计模式&#xff0c;确保一个类只有一个实例存在&#xff0c;并提供一个全局访问点来获取该实例。 二、单例模式的实现方式 ​ 1.懒汉式单例 public class LazySingle…...

010607电压源和电流源受控源

电源的理论部分 1.6电压源和电流源1.理想电压源&#xff1a; 1.6电压源和电流源 1.理想电压源&#xff1a; 其两端电压总能保持定值或一定的时间函数&#xff0c;其值与流过它的电流i无关的元件叫理想电压源。 电路符号&#xff1a;中间与导线直通的圆圈 电压源&#xff1a…...

快乐数求解

编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&#xff0c…...

运维高级内容--为端口做标记、制定调度规则

rs: yum install mod_ssl -y #安装mod_ssl模块 让rs支持https systemctl restart http lvs: cd /boot/ ls less config-5.14.0-427.13.1.el9_4.x86_64 ipvsadm -A -t 192.168.0.200:80 -s rr ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1 #轮询调度一次…...

后端Web之HTTP协议基础介绍

目录 1.HTTP概念 2.HTTP请求协议 3.HTTP响应协议 4.HTTP协议解析 1.HTTP概念 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是万维网数据通信的基础&#xff0c;允许将超…...

深入解析Nginx限流策略:如何高效控制访问频率

摘要&#xff1a;本文将详细介绍Nginx限流模块的使用方法&#xff0c;包括基于IP地址的限流、基于并发连接的限流以及如何应对突发流量。通过实际案例&#xff0c;帮助读者掌握Nginx限流策略&#xff0c;确保服务器在高并发场景下的稳定运行。 一、引言 在高并发场景下&#x…...

锂电池剩余寿命预测 | Matlab基于Transformer-GRU的锂电池剩余寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基于Transformer-GRU的锂电池剩余寿命预测&#xff0c;Transformer结合门控循环单元。 Matlab基于Transformer-GRU的锂电池剩余寿命预测&#xff08;单变量&#xff09; 运行环境Matlab2023b及以上。 首先从…...

深入理解Spring的IOC容器与依赖注入

深入理解Spring的IOC容器与依赖注入 引言 Spring框架的核心功能之一就是它的IOC容器&#xff0c;它为开发人员提供了强大的依赖管理和控制反转的能力。本文将详细介绍Spring的IOC容器以及依赖注入的基本概念和实现方式&#xff0c;并通过示例展示如何在实际项目中应用这些技术…...

Qt读写sysfs

本文介绍Qt读写sysfs。 在嵌入式Linux系统上开发Qt应用程序&#xff0c;经常会涉及到外设的控制&#xff0c;比如GPIO&#xff0c;PWM的控制&#xff0c;Linux环境下可以像操作文件一样操作它们&#xff0c;这通常会涉及到sysfs的读写。本文以读写GPIO为例&#xff0c;简要介绍…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...