自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 球谐光照——简单理解和实现

1.简介:游戏中的光照可以被简单分为两个部分,直接光和间接光。直接光中我们研究各种不同的BRDF材质,甚至BSDF,BSSSRDF等等。这些模型据有很不错的表现力,足够我们区分金属,皮肤,木头等等不同物体的着色表现。但这并不能满足我们,因为光并不是那么简单,光会被反射,会被折射,会被透射,会被吸收,所以物体的受光情况同时又由这个场景的其他物体决定,这部分光照同时拥有着更加富强的表现力,...

2018-11-13 14:32:03 11936 3

原创 [FreedomAI]第八周——算法具体实现和运行结果

public class AntPopulationSystem:USystem { public override void Init () { base.Init (); this.AddRequestComponent (typeof(AntPopulationComponent)); } public override void Update (UEn...

2018-06-01 21:16:55 283

原创 [FreedomAI]第八周——蚁群算法综述以及应用初衷

在研究遗传算法的时候,随带看到了蚁群算法,发现了很有意思。进而一细想,发现还在游戏的寻路中有一定应用的可能,首先,我们很头大的一个问题有时候在于,对于一大群AI,在同一帧来了一个请求,要求他们进行实时的寻路,这样我们还要不影响帧率的话,就要保证这些AI的寻路计算在1/FPS的时间内算完,但是对于A*那样的启发式算法来说,还是很有压力的。很大概率程序会直接崩掉。 蚁群算法就具备这样的好处——即使数据...

2018-06-01 21:11:26 604

原创 [FreedomAI第七周]遗传与生态实践篇第二部分

这一篇我们来讨论讨论牛。牛的性状有:牛的初始位置,牛的速度,牛的强壮度,牛的血量。牛的强壮度在直观表现上会体现出Cube的大小,同时也会影响减血的速度,越强壮,每秒减血的就越慢。CowObject.class:public class CowObject:GAObject { public float mStrongRate; public float mVelocity; pu...

2018-06-01 16:52:01 194

原创 [FreedomAI第七周]遗传与生态实践篇第一部分

上周完成了遗传算法的底层编码,这周还设计一个能体现效果的小Demo。我们使用了最简单的生产者、消费者一个循环体系。生产者是草,消费者是牛。生产者具有的性状有:草的高低、草的生长位置、草的颜色、草的血量其中草的生长位置在一个矩形区域里随机,草的颜色在黄色和绿色之间随机,草的高低在1.0-2.5倍之间变化,草的血量在500-1500变化。且草的高低将影响草的颜色,比较高的草更多的呈现黄色(用尽了生长潜...

2018-06-01 16:06:11 150

原创 [FreedomAI]第六周——遗传算法与种群代码实现

首先是个体类:public class GAObject { public Vector3 mPosition; public float mfitness { get { return Evaluate (); } } public bool[] mbitbunch { set { mbitbunch = new boo...

2018-05-10 22:35:57 403

原创 [FreedomAI]第六周——遗传算法与种群综述

首先介绍什么是遗传算法。由一个问题引入,求某函数f(x)在区间[a,b]上的最大值。这看似简单,我们很快会说,求他的导数,然后等于0即可。但是往往在应用中,f(x)未知,或很难解析,这就让求导这类方法变得困难。于是科学家们联想到了生物里的进化论,给出了这样一个很有意思的求解过程。首先你先随机出一些数对,x从对应的区间中随机,y就是他们对应的f(x).干嘛呢?把他们看做进化论中的个体。x是基因型,y...

2018-05-10 22:21:09 1329

原创 [FreedomAI]第五周——池化技术

这项优化方法又是从别的领域借鉴来的, 最开始了解的一个东西是线程池,内存池。其实不论是线程池还是内存池,都在游戏引擎中非常常见,首先我们先介绍一下他们的应用场景,因为在游戏引擎里我们常常遇到这样一个问题,那就是内存(线程)的申请和释放非常频繁,虽然这块线程或者说内存的申请的数目或者大小不多,但是不论是内存的申请、释放或者是线程的申请、释放,都会导致要让操作系统在用户态和核心态之间还会切换,这是一项...

2018-05-06 12:42:11 278

原创 [FreedomAI]第五周——AI的LOD

LOD——Level of Detail,多细节层次,这本身是图形学的一个概念,在图形学中,为了对性能进行加速,我们很正常的会有这样一个想法,对于那些比较远的图元,我们是不是可以不渲染他大量的细节,而只描绘出一个轮廓呢?——而这在视觉效果上其实并不会产生太大差距,因为往往比较远的图元真正体现在图元上仅仅只是几个像素而已。由此,在图形学中,我们往往会对图元设计多个细节层次,每个细节层次都表现出不同的...

2018-05-06 12:19:44 525

原创 [FreedomAI]第四周——GroupBehaviour

为了制作具有群体性行为的AI,又一次踏上了征途。群体性行为和策略,同个体行为的结构是很像的,但更复杂的是,我们的底层必要有一个机制自动的辅助系统能获得哪些AI应该被形成一个组,为了解决这个问题,我们确立了发起者和响应者。发起者会检测四周范围响应者,并加入到响应者队列里,最后在这个队列中检测出相应的组,并为这个组的成员分配编号,然后激活这个组所有实体的组行为。另外,行为节点,行为转化节点的形式也大有...

2018-04-30 12:39:51 178

原创 [FreedomAI]第四周——SimpleAI

上周突然发现,对于一些简易的AI,使用FSM+FuSM那一套,明显过于复杂了,对于一个很简单的AI来说,似乎只需要定义哪些情况下做哪些事情就足够了,比较粗鲁的写法就是:ifthenelse ifthenelse ifthen.................在AI的体系结构又被叫做Author Control (作者控制)。也可以叫做RBS——Rule Based System。我们要写比较清晰的...

2018-04-30 10:46:25 566

原创 [FreedomAI]第三周——A*寻路

上篇介绍了InfluenceMap,如果不使用这些信息,那么也是浪费的,这篇我们来看一个InfluenceMap的应用。A*寻路——我们经常遇到的一个问题是,如何让AI从一个点到另一个点。通常两点之前线段最短在这里并不适用,有可能我们需要避开那些讨厌的障碍,有可能我们需要希望分散开来夹击敌人,我们需要避开影响图上友方信息密集的区域..............这时候我们就需要用到了A*寻路算法。我们...

2018-04-22 14:34:54 209

原创 [FreedomAI]第三周——InfluenceMap

势力图或影响图被认为是AI进行决策时获取外界信息的一种良好方法。这些外界的信息可能包括,友方信息,敌方信息,地形及道具信息,这些东西我们如果让每个AI都用GameObject.Find....Withtag 那么可想而知,其复杂度就是N个AI*M个信息提供者。但我们如果换个思路,在每一帧内这些物品信息都是固定(甚至有一些游戏开始时就固定了),我们为什么不设置一张图预处理这些信息呢?就像我们在图形学...

2018-04-22 13:37:00 678

原创 [FreedomAI]第二周——DataDriveSystem

关于AI系统中涉及到的大量的数据配置,手动在Unity中进行填写是非常痛苦的一件事,所以我们想到了Excel表,我们大致想要完成这样一件事,每一行填好AI的标签或名字,填好下面的组件,组件下变量的名字,变量的数据,Excel表能完成对其的自动配置,一键配置。这其中需要用到C#中很重要的特性,反射。简单来说,反射支持你在代码中很多运行时动态绑定的特性,比如编译时不知道具体的类型,不知道具体哪个变量,...

2018-04-15 11:28:12 225

原创 [FreedomAI]第二周——FuSM

只使用FSM及其变种是很难应用在复杂的AI中的,因为其复杂度的扩展性很差,就比如,如果怪物有20种状态,你就需要考虑20*20种可能性的连接。所以这时我们必须建立分层次的状态机设计,试想一下,把AI的所有行为再分个类,每一类都认为是一种策略(事实上我们人的大脑也很类似这样,比如我们去攻击一个人,我们选择什么方式攻击、什么方式假动作是大脑思考好的,但之下的出拳这些动作确是自然而然做出来,虽然攻击策略...

2018-04-15 10:47:35 748

原创 [FreedomAI]第一周——FSM

FSM是用的非常成熟的技术,不过我们在算法框架上加入了自己的理解。一是加上概率机制。  将FSM进化成概率FSM,是自由度的第一步体现。不在是固定会在某个节点变到另一个节点,而是在某一个区间都有可能发生变化。二是加上反馈机制。  由于是基于概率的,每一条节点连线都可以附上权值,比如权值是3,就相当于这个转化的概率大3倍,这样我们就可以加入反馈一样的学习机制,首先我们认为节点的转化是有一个目标的,比...

2018-04-08 14:59:19 277

原创 [FreedomAI]第一周-ECS

  作为创新实训的项目,很重要的就是创新。我们首先为了写这个算法框架首先进行了工程上的创新,使用ECS框架。ECS是什么?   这个框架十多年前可能就有了,但大概是守望先锋在GDC2016提出它后,变得非常流行起来,Unity2018也将采用ECS的编程规范。   首先我们先用文字来说说这是啥玩意。它规定你的游戏先有一个世界。这个世界下有若干实体和若干系统。每个实体由若干组件,每个系统在每一帧更新...

2018-04-08 14:19:57 227

原创 [UI特效]程序水波纹理

音之国度的进入界面想搞点事情,想来想去,觉得点击滑动屏幕造成界面产生一个水波的效果还是非常理想的。        首先想想屏幕动画的原理,来自与纹理的偏移。简单的来说,屏幕任意一点的像素uv发生了偏移,导致取得颜色在逐帧更新。        其次我们再来想想如何做出水波的动画,比如我们如果要让运动物理做一个小鱼的移动动画,我们可以让他的轨迹满足正弦函数,显然,我们要做出屏幕水波特效,我们需

2017-06-17 21:42:41 842

原创 [音之国度进度]团队探索系统

项目音之国度进入了尾声,需要临时加上一个团队探索系统。        本身的逻辑控制并不复杂,比较麻烦的是这个系统并不是我写的,在合并代码的时候可能会造成很大麻烦。        所以为了让之后的人比较容易的合成代码,大多数的概念首先进行接口的抽象。       代码如下:using UnityEngine;using System.Collections;using expl

2017-06-17 21:24:24 282

原创 [音之国度读存档]实现篇

上篇提到了读存档类库的设计,现在来谈谈实现。     加密策略容易,无非是在实现类中对字符串搞搞事情。     比如说不搞事情的版本:public class DirectStrategy:AccessStrategywhere T :new(){ public DirectStrategy() { } public string Access(T _data,Data

2017-06-06 20:28:22 363

原创 [音之国度读存档]设计篇

项目音之国度用到了读存档,需要把一些运行时要用到的信息存起来。      初步设计信息如下:      玩家拥有的道具信息——int类型的索引数组。      玩家当前经验值——int。      玩家当前等级——int。      音符兽的形态——int。      音符兽对主人的好感度——int。      当前拥有的是哪些音符兽——int。      初步计划

2017-06-06 20:02:32 274

原创 [Unity]原生网络框架

前阵子做的项目音之国度,用到了Unity的原生网络框架RPC,不如Photon之类的功能强大,但却十分好理解。1.基本原理   服务器程序初始化一个server型的network,初始化完后,所有的客户端通过ip和端口,和服务器建立起传输的初始化,当真正需要传输数据的时候,是基于一种叫rpc的机制——远程主机调用,比如客户端想执行走的业务逻辑,首先在客户端申明走的函数的原型,但并没有具

2017-05-28 11:05:02 831

原创 [Unity]制作一个弹幕系统

1.大致思路?利用OnGUI,显示一系列会动的字,这一系列的弹幕可以用一个队列维护,每一帧都更新队列中弹幕的位置,并做一次检测,如果队列中弹幕位置已经不在屏幕内,可将该弹幕移除队列。2.弹幕可以有的属性?1.速度(矢量)2.位置3.颜色4.字体5.大小6.材质7.旋转3.代码编写Pluck类:public class Pluck{ Rect My

2017-05-28 10:34:49 1364

原创 [Unity语音识别项目续]字符串匹配算法

上次写了个语音识别的博客,能够识别录制的音频文件并转成一个字符串。效果很好,而且还是识别的中文。不过很快又意识到几个问题:       1.你不能指望每次翻译的都那么准确,或者说,一字不差。       2.口语化的表达使得往往一大堆的语句其实是一个意思。      所以我们不难发现一个事实,如果语音识别要拿来用的话,这种对应最好不要是一一映射的,就比如,如果我只识别到了玩家说了“攻击

2017-05-13 20:45:58 1053

原创 [Unity对Excel的读取]

做项目突然想优化一下数据的输入方式,并不想用代码一行一行的插入,感觉很low。     于是就想到用excel来做,先把数据写好在excel中,然后来个批导入,一个foreach就能把数据读到我们要维护的数据结构里。      废话不多说,来看看怎么做。首先你得去Excel的官网下载他的动态链接库:一个Excel.dll,一个ICSharpCode.SharpZipLib.dll,然后放在

2017-05-13 20:23:47 4776 8

原创 [Unity语音识别.续]用MD5加密作为用户的识别ID

1.MD5是什么?一种单向的加密方法,也就是说只有从明文到密文这一步,没有密文到明文这一步。2.为什么用MD5呢?作为识别ID,我们实际上并不需要知道它具体是多少,只需要保证两点,唯一的明文对着唯一密文,有高度的安全性,就行了。3.MD5算法基本过程?任意长度字符串输入->转化成byte数组->求余补长->分组->每组都做四轮数据变换->固定128位信息4.第一步将字符

2017-05-05 11:13:44 404

原创 Unity语音识别[GVoiceSDK的使用]

如何使用GVoice

2017-05-04 10:32:09 4454 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除