摘要: 离散事件模拟(discrete event simulation),这个东西可能在游戏领域用得并不是很多,它是模拟仿真领域的一个仿真模型,用来模拟在时间轴上一系列离散事件后,整个系统的变化情况,这么说,可能还是有点抽象,给大家举一个使用离散事件模拟的一个经典的例子,如何计算银行柜台排队的平均等待时间 阅读全文
posted @ 2018-01-17 23:25 前程路88号 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 行为树从本质上来说,是一颗逻辑树,它把所有的行为逻辑用树形结构串联起来,仔细观察的话,可以发现行为树的核心思想有三个方面: 逻辑分离 逻辑关联 逻辑抽象 听上去很玄乎,其实是很简单的东西,可以先想想我们平时要做一个功能是怎么做的,我们会先定义一个函数,定义好输入和输出,然后在这个函数里写代码来实现功 阅读全文
posted @ 2018-01-17 23:24 前程路88号 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 前些日子,经人推荐,看了一些CryEngine里AI部分的介绍,当然,作为一个大型商业引擎,AI部分涵盖了很多内容,特别的,我注意到里面关于行为树的部分,从CryEngine 3.3开始,行为树被舍弃了,取而代之的是称为“行为选择树”的模块,我并没有找到关于为何要做出这样的选择的官方说明,因此,我就 阅读全文
posted @ 2018-01-17 23:23 前程路88号 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 提到参数,在我们写程序的时候,作为一个常用的提醒是,一般都会避免去使用“魔数”(Magic Number),因为它含义不清,比如if(i>5){…},如果没有任何注释的话,很难有人会理解这个“5”是什么意思。在AI中,这样静态的参数的使用更频繁,有时为了定义一些阈值,有时为了可以给游戏设计人员调整A 阅读全文
posted @ 2018-01-17 23:22 前程路88号 阅读(678) 评论(0) 推荐(0) 编辑
摘要: LOD(Level Of Detail)是3D渲染中用到的概念,按照wikipedia上的翻译,可以译为“细节层次”,它是一种根据与观察点的距离,来减低物体或者模型的复杂度来提升渲染效率的优化技术,因为显而易见的是,当一个物体离我们很远的时候,我们不需要用很复杂的多边形来绘制,只要用一个粗略模型或者 阅读全文
posted @ 2018-01-17 23:21 前程路88号 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 前段时间,谈到了一种层次化的AI架构,通过“请求”来隔离出“决策层”和“行为层”,这种架构的核心是通过“请求”来起到承上启下的作用,并由此得出当前AI所应当有的行为,所以可以称之为“请求导向(Request-Oriented)”的结构。这种结构比较适用于需要频繁做AI决策的游戏场合,比如体育类游戏等 阅读全文
posted @ 2018-01-17 23:19 前程路88号 阅读(1004) 评论(0) 推荐(0) 编辑
摘要: 游戏AI和游戏设计紧密相关,我也经常说,一个好的游戏AI,不在于算法的艰深和行为的完全拟真,而在于和整体游戏性的契合,在平时工作中,也是和游戏设计师打交道的最多,有这样一句话,一个好的AI程序员相当于半个游戏设计师,所以这次就来谈谈关于AI难度的设计问题。 谈到游戏设计,有些人觉得可能是灵光乍现的东 阅读全文
posted @ 2018-01-17 23:18 前程路88号 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 我们知道状态机是AI(当然,不光是AI了)中常用的一种架构,有很多中实现方式,总体来说对于表达简单逻辑,还是很有帮助的,而且实现简单,甚至用一个switch-case就可以了,但在实践中状态机有一个致命的缺点,当状态一旦多了之后,它的跳转就会变的不可维护,假设有n个状态的话,那我们就需要维护最多n* 阅读全文
posted @ 2018-01-17 23:16 前程路88号 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 一直在说AI可以分为决策层(Strategy Layer)和行为层(Behavior Layer),和行为层打交道最多的,就是动画了,说到动画,游戏引擎一般都会提供完整的底层的动画系统,包括如何转换数据,如何做动画Blend等等,但这些一般不属于AI程序员的工作范畴,所以不在这次的讨论范围内,我们这 阅读全文
posted @ 2018-01-17 23:15 前程路88号 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 黑板(Blackboard)是一种数据集中式的设计模式,一般用于多模块间的数据共享,我在做行为树的过程中,发现黑板非常适合作为行为树的辅助模块来使用,这次就来谈谈如何在行为树中使用黑板。 行为树的决策一般要依赖于外部的输入,如下图所示。 输入内容的来源取决于行为树用在整个AI架构的哪一层,可以是游戏 阅读全文
posted @ 2018-01-17 23:14 前程路88号 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 我想通过一个例子来介绍一下行为树的基本概念,会比较容易理解,看下图: 这是我为一个士兵定义的一棵行为树(可以先不管这些绿圈和红圈是干吗的),首先,可以看到这是一个树形结构的图,有根节点,有分支,而且子节点个数可以任意,然后有三个分支,分别是巡逻(Patrol),攻击(Attack),逃跑(Retre 阅读全文
posted @ 2018-01-17 23:12 前程路88号 阅读(2047) 评论(0) 推荐(0) 编辑
摘要: 之前一篇文章中谈到了一种类似于双缓冲的AI结构,最近在整理一些东西的时候,发现这样的AI结构具有一定的通用性,而且层与层之间耦合度相对较低,作为一种层次化的AI架构,非常值得一谈。 在我的脑海中,AI一般分为两个部分,一个是决策(Decision)部分,一个是行为(Behavior)部分,决策部分负 阅读全文
posted @ 2018-01-17 23:10 前程路88号 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 最近在程序中遇到一个AI决策问题,简要描述和图示如下: 在一张开阔的地图上(几乎没有障碍物),有一些会任意移动的“敌人”,我们要实现一个NPC的AI,使他在做接近目标点的移动决策的时候,能避开这些“敌人”所在的危险区域,而选择相对安全的方向去移动。 这有点类似于一个寻路算法,不过,和一般的A*算法问 阅读全文
posted @ 2018-01-17 23:09 前程路88号 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 项目进行到后期,越来越多是在修复一些AI的错误和调整AI的行为。但不得不承认,AI有时候很难调试,我想主要是有两个原因,一是现在的引擎越来越复杂,改一点点地方,编译都会等很久,时间上效率不高(所以对于AI程序员来说,真的是非常欢迎那种引擎核心和游戏逻辑分开的架构);二是如果出现问题的话,情况不可重现 阅读全文
posted @ 2018-01-17 23:07 前程路88号 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 最近在路上一直在思考AI中的懒惰问题,为什么会突然想到这个,实在是因为这个问题十分常见,它非常简单,但是又非常难以漂亮的解决,先从一个问题引入吧。 假设我们有一个开阔的战场,这个战场被划分成了4个小区域,A~D来表示,实心小红圈表示进攻方,也是我们控制的人。实心小蓝圈表示防守方,是电脑AI控制的人。 阅读全文
posted @ 2018-01-17 23:05 前程路88号 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 双缓冲(double buffer)是在渲染中用到的基本技术,目的是为了提高绘图速度,防止屏幕的闪动,原理可以简述如下:生成两块内存,一块作为后缓冲(background buffer),一块为前缓冲(foreground buffer),前缓冲内存的是实际显示在屏幕上的内容,后缓冲可以称为工作缓冲 阅读全文
posted @ 2018-01-17 22:59 前程路88号 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 在我的概念里,AI应该分为两层:决策(Decision)、行为(Behavior),当然这个是从狭义的AI角度来说的,广义上来说,AI还会包括一些其他要件,比如物理,动画等等。现在这个项目里在做Behavior模块的一些东西,从做结构开始就参与其中,期间经过了几次大的重构。 可能Behavior在不 阅读全文
posted @ 2018-01-17 22:57 前程路88号 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 起因 在日常的数值设计及调测工作中,需要将设计表中调整过的数值频繁更新到配置表中,但由于两表的设计目的不一(设计表主要用于根据需要的字段设计数值以及之后的数值调整验证;配置表主要用于字段的数据配置,程序需根据配置表中字段数据读入到游戏中,所以还承担着配置表到配置文件(.csv / .xml / .s 阅读全文
posted @ 2018-01-17 22:53 前程路88号 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 说明:本文仅讨论王国纪元、乱世王者这类的SLG手游战斗。 战争策略游戏的核心追求点 1、 玩家通过进行兵种选择和分配,能够战胜对方 2、 玩家通过进行兵种选择和分配,在战胜对方的基础上,以自身最小的损失换取对方最大的损失 战斗的基本元素 不同兵种 战争类SLG的战斗一定都会有一定数量士兵的参与,所以 阅读全文
posted @ 2018-01-17 22:50 前程路88号 阅读(625) 评论(0) 推荐(0) 编辑
摘要: 数值分层分段思想的运用,在游戏中,尤其是PC端网游以及手游,几乎随处可见,但是却常常被人忽略。打算写这篇文章,主要是对之前体验过的SLG手游的一个收获感想,为以后工作提供文字化参考,同时也作为一个思想上的分享。 为什么会需要数值分层分段 玩家玩游戏,最初不会去关注游戏中数值的分层分段,直到对游戏内某 阅读全文
posted @ 2018-01-17 22:46 前程路88号 阅读(966) 评论(0) 推荐(0) 编辑