摘要: 前言:上一篇博文已经介绍了Unity Ml-Agents的环境配置了。 个人建议先敲深度强化学习的Demo再摸清概念比较容易上手,因此本文先提供一个深度强化学习的Demo示例简单阐述下。 更新于2020.3.6:由于现在Unity ml-agents项目比起2018年已经更新了许多,以前的Demo教 阅读全文
posted @ 2019-03-31 14:35 KillerAery 阅读(10125) 评论(18) 推荐(2) 编辑
摘要: 前言:以前觉得机器学习要应用于游戏AI,还远得很。最近看到一些资料后,突发兴致试着玩了玩Unity机器学习,才发觉机器学习占领游戏AI的可能性和趋势。 使用Unity ML-Agents Toolkit训练的可爱柯基犬Puppo | Unity官方开发者社区 机器学习训练出的游戏AI,模型可能数据庞 阅读全文
posted @ 2019-03-31 14:22 KillerAery 阅读(5617) 评论(5) 推荐(2) 编辑
摘要: 记录一下Unity C 常用的容器,方便写脚本时忘了容器类来查下 ( ||) 动态数组 List\ using System.Collections.Generic; //泛型容器的命名空间 类似C++的vector\。 有另一个非常相似的非泛型容器:ArrayList。ArrayList可以插入不 阅读全文
posted @ 2019-03-24 00:58 KillerAery 阅读(4636) 评论(0) 推荐(2) 编辑
摘要: [toc] C 里的委托相当于C 的函数接口对象(C语言可称为函数指针,C++可称为函数对象),是C 的一个比较重要的特性。 而观察者模式是一种常见的设计模式,在C 里往往使用委托等相关语法搭配来实现观察者模式。 因此很需要搞懂 delegate(委托),event(事件),Action/Func的 阅读全文
posted @ 2019-03-11 12:59 KillerAery 阅读(6085) 评论(0) 推荐(2) 编辑
摘要: 什么是协程 在Unity中,协程(Coroutines)的形式是我最喜欢的功能之一,我都会使用它来控制需要定时的。 协同程序,在主程序运行的同时,开启另外一段逻辑处理,来协同当前程序的执行。 可能看了这段文字介绍还是有点模糊,其实可以用多线程来比较。 多线程 多线程,顾名思义,多条同时执行的线程。 阅读全文
posted @ 2019-03-03 18:27 KillerAery 阅读(7055) 评论(1) 推荐(3) 编辑
摘要: if(condition) then dosomething... 这次主要围绕的是游戏AI该如何模仿人类地判断条件(condition)。 人类的逻辑 人类的逻辑思考是复杂的,模糊的。 一些人类逻辑思考的例子:“把面包切成中等厚度”,“这波我很强”,“你好骚啊”,“小A有点高”.... 而对于计算 阅读全文
posted @ 2019-02-06 00:09 KillerAery 阅读(5299) 评论(2) 推荐(1) 编辑
摘要: 何为路径规划? 首先,我们简单了解下运动规划问题:在给定的位置A与位置B之间为机器人找到一条符合约束条件的路径。这种问题常出现在机器人、汽车导航等工业应用中。而路径规划则是运动规划里的重要研究内容。 所谓路径规划,就是指在一张已知的地图上,规划出一条位置A到位置B的路径。而运动规划里也有很多不知地图 阅读全文
posted @ 2019-02-01 21:12 KillerAery 阅读(14226) 评论(7) 推荐(5) 编辑
摘要: 黑板(Blackboard) “黑板”(Blackboard)在人工智能领域已经是一个很古老的东西了。它基于一种很直观的概念,就是一群人为了解决一个问题,在黑板前聚集, 每个人都可以发表自己的意见,然后在黑板上写下自己的看法,当然你也可以基于别人记录在黑板上的看法, 来发表和更新自己的看法,在这样不 阅读全文
posted @ 2019-01-17 17:01 KillerAery 阅读(6700) 评论(1) 推荐(3) 编辑
摘要: 游戏AI的决策部分是比较重要的部分,游戏程序的老前辈们留下了两种经过考验的用于AI决策的结构: 有限状态机 行为树 在以前,游戏AI的实现基本都是有限状态机, 随着游戏的进步,游戏AI的复杂性要求越来越高,传统的有限状态机实现很难维护越来越复杂的AI需求。 现代游戏AI都比较偏向采用行为树作为决策结 阅读全文
posted @ 2018-12-04 10:11 KillerAery 阅读(16385) 评论(0) 推荐(2) 编辑
摘要: 视觉感知 视觉感知是一种常见的感知。 在许多即时战略游戏或者类DOTA游戏里,一个单位的视觉感知往往是圆形范围的。 扇形视野 当然在其他大部分俯视角游戏里,一个智能体的视觉感知应该是类似现实人眼观看的扇形范围。 对于横板游戏,可以把视野“竖”起来,检测方式无多少差别。 对于空间更加复杂的3D游戏,可 阅读全文
posted @ 2018-12-03 00:43 KillerAery 阅读(3237) 评论(2) 推荐(1) 编辑
摘要: 游戏AI是什么? 在以前游戏AI基本上都是程序员预先定义编写好可能发生的行为,而不具有机器学习那种自我学习的特性。 智能的假象 这是因为游戏AI主要职责是模拟出智能行为,而并非学习(例如:街道上会避让车的人群,天空中乱飞的小鸟,来回巡逻的守卫,兵线上的小兵...)。而游戏AI往往使用的是以行为树为代 阅读全文
posted @ 2018-11-23 14:52 KillerAery 阅读(12875) 评论(2) 推荐(11) 编辑
摘要: 前言:本教程是写给刚学会C语言基本语法不久的新生们。 因为在学习C语言途中,往往只能写控制台代码,而还能没接触到图形,也就基本碰不到游戏开发。 所以本教程希望可以给仍在学习C语言的新生们能提前感受到游戏开发技术的魅力和乐趣。 先来看看本次教程程序大概的运行画面: 游戏循环机制 下面是一个简单而熟悉的 阅读全文
posted @ 2018-10-06 18:16 KillerAery 阅读(6819) 评论(5) 推荐(5) 编辑
摘要: 前言:状态机模式是一个游戏常用的经典设计模式,常被用作管理一种物体的各种状态(例如管理人物的行走,站立,跳跃等状态)。 (Unity里的Animator就是一种典型的状态机,用于控制动画状态之间的切换) 假如我们正在开发一款动作游戏,当前的任务是实现根据输入来控制主角的行为——当按下B键时,他应该跳 阅读全文
posted @ 2018-10-01 18:44 KillerAery 阅读(8851) 评论(0) 推荐(4) 编辑
摘要: 线程 std::thread(C++11) 创建 std::thread,一般会绑定一个底层的线程。 std::thread 的实现是基于C的 pthread 若该 thread 还绑定好函数对象,则即刻将该函数运行于thread的底层线程: // 通过绑定lambda表达式来创建线程,并立即执行 阅读全文
posted @ 2018-09-05 13:48 KillerAery 阅读(7291) 评论(3) 推荐(3) 编辑
摘要: Pimpl技术——编译期封装 Pimpl 意思为“具体实现的指针”(Pointer to Implementation), 它通过一个私有的成员指针,将指针所指向的类的内部实现数据进行隐藏, 是隐藏实现,降低耦合性和分离接口实现的一个现代 C++ 技术,并有着“编译防火墙(compilation f 阅读全文
posted @ 2018-08-27 00:46 KillerAery 阅读(8773) 评论(0) 推荐(2) 编辑