摘要: 前言: 在游戏程序中,利用空间数据结构加速计算往往是非常重要的优化思想,空间数据结构可以应用于场景管理、渲染、物理、游戏逻辑等方面。 因此,博主将游戏程序中常用的几个空间数据结构整理出这篇笔记,也会持续更新下去,有错误或有未及之处望指出。 四叉树/八叉树 (Quadtree/Octree) 四叉树索 阅读全文
posted @ 2019-05-26 00:07 KillerAery 阅读(60932) 评论(8) 推荐(22)
摘要: 目录内存总览内存分页与虚拟内存机制多级页表与 TLB内存交换(Swap)zRAM移动端虚拟内存虚拟内存分配mmap & munmapmalloc & freenew & delete内存分配潜在的问题内存泄露内存碎片 & 内存扩散内存地址对齐多线程环境内存分配策略内存地址对齐特定大小多线程安全分配器 阅读全文
posted @ 2019-04-26 13:02 KillerAery 阅读(6852) 评论(0) 推荐(5)
摘要: 目录本次示例:训练一个追踪红球的白球AI1. 新建Unity项目,导入package2. 编写Agent脚本void OnEpisodeBegin()void CollectObservations(VectorSensor sensor)void OnActionReceived(float[] 阅读全文
posted @ 2019-03-31 14:35 KillerAery 阅读(10675) 评论(18) 推荐(2)
摘要: 前言:以前觉得机器学习要应用于游戏AI,还远得很。最近看到一些资料后,突发兴致试着玩了玩Unity机器学习,才发觉机器学习占领游戏AI的可能性和趋势。 使用Unity ML-Agents Toolkit训练的可爱柯基犬Puppo | Unity官方开发者社区 机器学习训练出的游戏AI,模型可能数据庞 阅读全文
posted @ 2019-03-31 14:22 KillerAery 阅读(5885) 评论(5) 推荐(2)
摘要: 记录一下Unity C 常用的容器,方便写脚本时忘了容器类来查下 ( ||) 动态数组 List\ using System.Collections.Generic; //泛型容器的命名空间 类似C++的vector\。 有另一个非常相似的非泛型容器:ArrayList。ArrayList可以插入不 阅读全文
posted @ 2019-03-24 00:58 KillerAery 阅读(4890) 评论(0) 推荐(2)
摘要: [toc] C 里的委托相当于C 的函数接口对象(C语言可称为函数指针,C++可称为函数对象),是C 的一个比较重要的特性。 而观察者模式是一种常见的设计模式,在C 里往往使用委托等相关语法搭配来实现观察者模式。 因此很需要搞懂 delegate(委托),event(事件),Action/Func的 阅读全文
posted @ 2019-03-11 12:59 KillerAery 阅读(6427) 评论(0) 推荐(2)
摘要: 什么是协程 在Unity中,协程(Coroutines)的形式是我最喜欢的功能之一,我都会使用它来控制需要定时的。 协同程序,在主程序运行的同时,开启另外一段逻辑处理,来协同当前程序的执行。 可能看了这段文字介绍还是有点模糊,其实可以用多线程来比较。 多线程 多线程,顾名思义,多条同时执行的线程。 阅读全文
posted @ 2019-03-03 18:27 KillerAery 阅读(7333) 评论(1) 推荐(3)
摘要: if(condition) then dosomething... 这次主要围绕的是游戏AI该如何模仿人类地判断条件(condition)。 人类的逻辑 人类的逻辑思考是复杂的,模糊的。 一些人类逻辑思考的例子:“把面包切成中等厚度”,“这波我很强”,“你好骚啊”,“小A有点高”.... 而对于计算 阅读全文
posted @ 2019-02-06 00:09 KillerAery 阅读(5583) 评论(2) 推荐(1)
摘要: 何为路径规划? 首先,我们简单了解下运动规划问题:在给定的位置A与位置B之间为机器人找到一条符合约束条件的路径。这种问题常出现在机器人、汽车导航等工业应用中。而路径规划则是运动规划里的重要研究内容。 所谓路径规划,就是指在一张已知的地图上,规划出一条位置A到位置B的路径。而运动规划里也有很多不知地图 阅读全文
posted @ 2019-02-01 21:12 KillerAery 阅读(15555) 评论(7) 推荐(5)
摘要: 黑板(Blackboard) “黑板”(Blackboard)在人工智能领域已经是一个很古老的东西了。它基于一种很直观的概念,就是一群人为了解决一个问题,在黑板前聚集, 每个人都可以发表自己的意见,然后在黑板上写下自己的看法,当然你也可以基于别人记录在黑板上的看法, 来发表和更新自己的看法,在这样不 阅读全文
posted @ 2019-01-17 17:01 KillerAery 阅读(7573) 评论(1) 推荐(3)
摘要: 游戏AI的决策部分是比较重要的部分,游戏程序的老前辈们留下了两种经过考验的用于AI决策的结构: 有限状态机 行为树 在以前,游戏AI的实现基本都是有限状态机, 随着游戏的进步,游戏AI的复杂性要求越来越高,传统的有限状态机实现很难维护越来越复杂的AI需求。 现代游戏AI都比较偏向采用行为树作为决策结 阅读全文
posted @ 2018-12-04 10:11 KillerAery 阅读(18476) 评论(0) 推荐(2)
摘要: 视觉感知 视觉感知是一种常见的感知。 在许多即时战略游戏或者类DOTA游戏里,一个单位的视觉感知往往是圆形范围的。 扇形视野 当然在其他大部分俯视角游戏里,一个智能体的视觉感知应该是类似现实人眼观看的扇形范围。 对于横板游戏,可以把视野“竖”起来,检测方式无多少差别。 对于空间更加复杂的3D游戏,可 阅读全文
posted @ 2018-12-03 00:43 KillerAery 阅读(3535) 评论(2) 推荐(1)
摘要: 游戏AI是什么? 在以前游戏AI基本上都是程序员预先定义编写好可能发生的行为,而不具有机器学习那种自我学习的特性。 智能的假象 这是因为游戏AI主要职责是模拟出智能行为,而并非学习(例如:街道上会避让车的人群,天空中乱飞的小鸟,来回巡逻的守卫,兵线上的小兵...)。而游戏AI往往使用的是以行为树为代 阅读全文
posted @ 2018-11-23 14:52 KillerAery 阅读(13707) 评论(4) 推荐(12)
摘要: 前言:本教程是写给刚学会C语言基本语法不久的新生们。 因为在学习C语言途中,往往只能写控制台代码,而还能没接触到图形,也就基本碰不到游戏开发。 所以本教程希望可以给仍在学习C语言的新生们能提前感受到游戏开发技术的魅力和乐趣。 先来看看本次教程程序大概的运行画面: 游戏循环机制 下面是一个简单而熟悉的 阅读全文
posted @ 2018-10-06 18:16 KillerAery 阅读(7269) 评论(5) 推荐(5)
摘要: 前言:状态机模式是一个游戏常用的经典设计模式,常被用作管理一种物体的各种状态(例如管理人物的行走,站立,跳跃等状态)。 (Unity里的Animator就是一种典型的状态机,用于控制动画状态之间的切换) 假如我们正在开发一款动作游戏,当前的任务是实现根据输入来控制主角的行为——当按下B键时,他应该跳 阅读全文
posted @ 2018-10-01 18:44 KillerAery 阅读(9574) 评论(2) 推荐(5)