离散事件模拟(discrete event simulation),这个东西可能在游戏领域用得并不是很多,它是模拟仿真领域的一个仿真模型,用来模拟在时间轴上一系列离散事件后,整个系统的变化情况,这么说,可能还是有点抽象,给大家举一个使用离散事件模拟的一个经典的例子,如何计算银行柜台排队的平均等待时间[……]

继续阅读

过段时间会在公司做一个讲座课程,这个文章就是在准备过程中,用来整理思路的,里面的一些内容,在以前的博客上也有提及,有兴趣的可以去翻翻,这次系统整理一下,自己的思路也更清晰了,予人玫瑰,手留余香。
首先先来定义一下什么是我这里说的核心游戏系统,一般来说,游戏可以大致分为两个部分,一个部分是我这里指的[……]

继续阅读

上次提出了关于AI懒惰问题的解决方案(见上一篇),一种称为计时器法,就是通过人为的延时来平滑AI的行为抖动,还有一种称为交叉边界法,通过平滑边际值来解决AI在边际上的行为问题。在讨论的最后,我们看到对于交叉边界法,在结果上看来,稍稍有点不是很符合一开始的对AI的行为定义。

再来看一下这个问题,[……]

继续阅读

最近在路上一直在思考AI中的懒惰问题,为什么会突然想到这个,实在是因为这个问题十分常见,它非常简单,但是又非常难以漂亮的解决。先从一个问题引入吧。看下面这张图

假设我们有一个开阔的战场,这个战场被划分成了4个小区域,A~D来表示,实心小红圈表示进攻方,也是我们控制的人。实心小蓝圈表示防守方,是[……]

继续阅读

接上篇,我们接着聊。

分数系统的打分公式,是根据情况自己定义的,但也有一些方式来帮助构建出比较合理的公式来,公式的推导就是一个函数的拟合过程,我们可以先取几个样点,然后试着找到一条函数曲线,尽可能的去使样点落在我们的这条函数曲线上。在中学的时候的实验课上,大家应该都做过这种事情。在AI中,我们[……]

继续阅读

最近在做的一个AI用到了分数系统,这次就来和大家聊聊这个话题。

先来设计一个场景,有一个单兵作战的士兵,在丛林中,他有一些基本的行为,比如射击(shoot),移动(move),撤退(retreat)。他必须结合很多因素来决定自己的行为,比如,敌人的数量,自身的情况,弹药的情况,环境的情况等等,我们[……]

继续阅读

最近想用做一种C++ Script,来分离引擎和游戏,AI就可以完全用这种C++ Script来做,不需要牵涉到任何引擎的代码,只是使用引擎暴露的API,这样做的好处很多,最重要的就是可以只依赖于API,减少了高层逻辑和底层引擎的耦合,当然,这样的结构就需要引擎提供一套完备的API接口。在接口中,由[……]

继续阅读

C/C++一般函数只能返回一个返回值,要返回多个返回值,比较常用的一个办法可以传指针或者引用的参数进去,通过参数返回,还有一个办法,其实也很简单,就是返回一个structure出来。
struct stRet
{
retValue1;
retValue2;
….
}

stRet ReturnM[……]

继续阅读