<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[白夜的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_41936799</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_41936799]]></copyright><item><title><![CDATA[Unreal Wwise 工作流程设置]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/119777000</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/119777000</guid><author>qq_41936799</author><pubDate>Wed, 18 Aug 2021 11:49:40 +0800</pubDate><description><![CDATA[使用 Event-Based Packaging 的工作流程
1、简介
Unreal Integration 2019.2 中针对素材管理实施了一些重大改进，包括新增了 Event-Based Packaging 工作流程。现在无需手动将 Wwise Event 导入到 Content Browser 中，也不必通过手动创建的 SoundBank Unreal 素材来管理引用。
这一新的工作流程会自动创建工程所需的全部素材：Event、Auxiliary Bus、Media、Init Bank、RTPC (]]></description><category></category></item><item><title><![CDATA[UE4的UE_LOG]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/119607024</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/119607024</guid><author>qq_41936799</author><pubDate>Wed, 11 Aug 2021 15:20:01 +0800</pubDate><description><![CDATA[说明：本文为Wiki上的RAMA大神文章的大致翻译
游戏模式：
在游戏模式下，你需要在游戏的快捷方式后面加 -Log，才会在游戏中显示。
&nbsp;
编辑器模式（Play In Editor）：
你可以在Output窗口中看到log信息。
如果想在游戏中看到，需要到Engin.ini中修改参数添加"GameCommandLine=-log，如果没有，则需要按~，输入-Log命令开启。
&nbsp;
快速使用：

UE_LOG(LogTemp, Warning, TEXT("Your message")).]]></description><category></category></item><item><title><![CDATA[《C++ Primer 第五版》读书笔记一]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/116674187</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/116674187</guid><author>qq_41936799</author><pubDate>Tue, 11 May 2021 22:54:12 +0800</pubDate><description><![CDATA[第一章 开始
1.函数的定义
一个函数的定义包含四个部分：返回类型、函数名、形参列表、函数体
2.输入输出
IO对象：
cin用于输入
cout用于输出
endl用于将输出写入输出流，并且实现换行（\n）
第二章 变量和基本类型
内置变量类型
内置类型包括算术类型（整形（包括字符型和布尔类型）、浮点型）和空类型（void）
1个char的大小和一个机器字节一样
其他的字符类型用于扩展字符集
整形：short、int、long、long long
浮点型：float（至少6位有效数字）、double（至少10]]></description><category></category></item><item><title><![CDATA[两种同步模式：状态同步和帧同步]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/114917788</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/114917788</guid><author>qq_41936799</author><pubDate>Wed, 17 Mar 2021 10:28:45 +0800</pubDate><description><![CDATA[一、同步
所谓同步，就是要多个客户端表现效果是一致的，例如我们玩王者荣耀的时候，需要十个玩家的屏幕显示的英雄位置完全相同、技能释放角度、释放时间完全相同，这个就是同步。就好像很多个人一起跳街舞齐舞，每个人的动作都要保持一致。而对于大多数游戏，不仅客户端的表现要一致，而且需要客户端和服务端的数据是一致的。所以，同步是一个网络游戏概念，只有网络游戏才需要同步，而单机游戏是不需要同步的。
二、状态同步和帧同步的区别
最大的区别就是战斗核心逻辑写在哪，状态同步的战斗逻辑在服务端，帧同步的战斗逻辑在客户端。战斗逻辑是]]></description><category></category></item><item><title><![CDATA[Navmesh研究（三）区域生成]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/113706655</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/113706655</guid><author>qq_41936799</author><pubDate>Sat, 06 Feb 2021 01:57:55 +0800</pubDate><description><![CDATA[本文翻译自：http://critterai.org/projects/nmgen_study/regiongen.html
区域生成
区域生成是构建导航网格的第二阶段，其代表了源几何体的可行走表面的表面区域的生成。
创建开放的高度域
开放的高度域表示的是高度域中实心区间上方的区域，其创建方式相对简单。循环遍历所有的实心区间：
如果该实心区域被标记为可行走，则记录其y轴方向最大值，同时寻找该列中上方的相邻区间的y轴方向最小值。这两个值分别是新生成的开放区间的floor和ceiling；
如果该实心区域是该列]]></description><category></category></item><item><title><![CDATA[Navmesh研究（准备工作）配置参数]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/113706202</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/113706202</guid><author>qq_41936799</author><pubDate>Sat, 06 Feb 2021 00:33:16 +0800</pubDate><description><![CDATA[本文翻译自：http://critterai.org/projects/nmgen_study/config.html
配置参数
在进入网格生成每个阶段的细节之前，了解影响最终结果的各种配置参数很重要。本页提供NMGen类使用的部分主要配置参数的功能描述（详细参数可去原文查看），它们如何影响最终结果以及它们如何相互影响。
cellSize
约束条件 &gt; 0
使用者
NavmeshGenerator，SolidHeightFieldBuilder，SolidHeightField，OpenHeightF]]></description><category></category></item><item><title><![CDATA[Navmesh研究（二）体素化过程]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/113668176</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/113668176</guid><author>qq_41936799</author><pubDate>Fri, 05 Feb 2021 03:52:40 +0800</pubDate><description><![CDATA[体素化过程
构建导航网格的第一步是使用体素化创建一个实体高度域
创建实体高度域
当检测到源网格的轴对齐包围盒并创建一个用于保存体素信息的实体高度域之后，我们对源网格中的每一个多边形（可以是三角形）执行以下过程：
确定多边形在高度域xz平面上的投影。用多边形的2d轴对齐高度域的边界，这样做减少了多边形与高度域作相交测试的次数

循环遍历投影覆盖的所有高度域列，并得出与该列相交的源多边形部分。如果发生相交，则导出一个新的“剪切”多边形。然后确定修剪的多边形的最小和最大高度。这代表这一列与源多边形相交部分在y轴上]]></description><category></category></item><item><title><![CDATA[Navmesh研究（一）高度域介绍]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/113668068</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/113668068</guid><author>qq_41936799</author><pubDate>Fri, 05 Feb 2021 01:54:55 +0800</pubDate><description><![CDATA[高度域介绍
NMGen会生成用于navigation mesh（导航网格）的数据，为了了解这个过程，首先需要了解它如何使用高度域来表示体素数据。高度域提供了良好的压缩效果，同时高度域也提供了可以提取几何图形上表面信息的数据结构。
高度域的基本结构
下面是在欧几里得空间中任意轴都对齐的盒子。它的边界由最小和最大顶点定义。

现在，将盒子切割成宽度和深度相同的垂直列。每一列就是一个格子。

然后，在高度轴方向用固定的高度增量对每一列进行切割，每一列都会分成若干个小的轴对齐包围盒(红色的盒子)，每一个（红色）盒子]]></description><category></category></item><item><title><![CDATA[简单的巡逻AI]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/109457201</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/109457201</guid><author>qq_41936799</author><pubDate>Mon, 02 Nov 2020 20:51:20 +0800</pubDate><description><![CDATA[1、场景设置
场景中央为可供移动的主角(黑色箭头)和四处巡逻的AI(蓝色圆形)，四周为黑色墙体。
墙体碰撞器为EdgeCollider2D

AI拥有一个子物体，子物体上挂一个Circle Collider2D，用于表示AI的听力范围
2、脚本编写
1、AI的脚本
首先，我们可以针对AI所拥有的状态，创建对应的枚举类型
public enum AvoidSceneState
{
    Idle,
    Track,
    AvoidWall
}

在这个简单巡逻场景中，AI需要三个状态：巡逻、追击、避]]></description><category></category></item><item><title><![CDATA[渲染流水线流程]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/109265586</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/109265586</guid><author>qq_41936799</author><pubDate>Sat, 24 Oct 2020 20:59:42 +0800</pubDate><description><![CDATA[一.应用阶段
1.把数据加载到显存中

2.设置渲染状态
网格选择哪个shader，material。
3.调用draw call
二.几何阶段
1.顶点着色器
顶点着色器的处理单位是顶点，每个进入的顶点都会调用一次顶点着色器。
其本身不能创建或者销毁任何顶点，因此无法得到顶点之间的关系。比如无法得知两顶点是否属于同一个三角网格。
这种独立性的好处是GPU可以利用本身特性并行优化每一个顶点，这一阶段处理速度会非常快。

2.曲面细分着色器
壳着色器：
基本体（内含用于定义细分曲面的控制点）-》告诉镶嵌器要.]]></description><category></category></item><item><title><![CDATA[《游戏人工智能编程》学习笔记三——West World场景实例]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/109145145</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/109145145</guid><author>qq_41936799</author><pubDate>Sun, 18 Oct 2020 15:03:34 +0800</pubDate><description><![CDATA[1、West World实例
场景：在一个西部小镇有一个居民Bob，他的职业是矿工，小镇上有四个标志物，金矿、酒吧、银行、家，他疲劳时要回家睡觉，口渴时会去酒吧喝酒，金子到达一定数目会去银行存储金子。他准确地向哪走，到达后要干什么，都由Bob当前的状态决定。
金矿工人的状态图：

居民基类：
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BaseGameEntity
{]]></description><category></category></item><item><title><![CDATA[《游戏人工智能编程》学习笔记二——简单的有限状态机]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/109115820</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/109115820</guid><author>qq_41936799</author><pubDate>Fri, 16 Oct 2020 14:28:10 +0800</pubDate><description><![CDATA[1、有限状态机的定义
定义：一个有限状态机是一个设备，或是一个设备模型，具有有限数量的状态，它可以在任何给定的时间根据输入进行操作，使得从一个状态变换到另一个状态，或者是促使一个输出或者一种行为的发生。一个有限状态机在任何瞬间只能处在一种状态。
举个例子：
灯的开关是一个非常简单的有限状态机。他有两种状态：开或关。状态之间的变换是通过你手指的输入产生的。向上按开关，产生从关到开的状态变换，向下按开关，产生从开到关的状态变换。

2、有限状态机的实现
方法1、switch/if
以灯的开关为例
using S]]></description><category></category></item><item><title><![CDATA[《游戏人工智能编程》学习笔记一]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/109085702</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/109085702</guid><author>qq_41936799</author><pubDate>Wed, 14 Oct 2020 22:05:17 +0800</pubDate><description><![CDATA[1.数学知识
1.1笛卡尔坐标系
在二维空间下，笛卡尔坐标系可以被定义成两个坐标轴成直角相交并且用单位长度标出。水平轴称为x轴，垂直轴称为y轴，两个轴。
如果要表达三维空间，需要增加一个坐标轴-z轴，z轴从屏幕的后面延伸到你的头的后方，在途中穿过原点。
1.2函数和方程
如果x的每一个值都可以与y的一个值相关联，那么y就是一个关于x的函数。y称为因变量，x称为自变量。
例如：y = m * x + c
其中m和c叫做系数(不因自变量的变化而变化)
1.3三角学
1、射线和线段
射线：只有一个端点，另一端无限]]></description><category></category></item><item><title><![CDATA[二维数组地址实例]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/108943523</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/108943523</guid><author>qq_41936799</author><pubDate>Tue, 06 Oct 2020 20:47:48 +0800</pubDate><description><![CDATA[1、&amp;数组名
&amp;数组名是一个二级指针，指的是该二维数组的首地址
&amp;数组名+1的地址与&amp;数组名地址的差为该二维数组的size
2、数组名
数组名可以当作指针使用，指的是该二维数组首行的首地址
数组名+1的地址与数组名地址的差为首行的的长度
数组名+1的地址为第二行的首地址
数组名[0]与*数组名的含义一致
3、*数组名
*数组名指的是二维数组首元素的地址
*数组名+1的地址为第二个元素的地址
4、代码示例
#include&lt;iostream&gt;

int main()]]></description><category></category></item><item><title><![CDATA[大数据与云计算复习笔记]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/106988725</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/106988725</guid><author>qq_41936799</author><pubDate>Sat, 27 Jun 2020 22:02:25 +0800</pubDate><description><![CDATA[typora-copy-images-to: 大数据与云计算复习笔记图片
大数据与云计算复习笔记
第一讲 概述
1.计算的历史
1、手工计算
2、大型计算机
3、个人计算机
4、云计算
2.云计算的基础技术
1、虚拟化技术
2、分布式文化系统
3、海量数据存储技术
4、宽带网络与智能终端
3.云计算应用
1、电子商务
2、电子政务
3、教育及培训
4、影视/游戏/娱乐
5、技术行业
4.国外云计算代表公司
amazon：Amazon Web Services
Google：
Microsoft：Windo.]]></description><category></category></item><item><title><![CDATA[Unity内存泄漏]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/105891765</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/105891765</guid><author>qq_41936799</author><pubDate>Fri, 26 Jun 2020 00:03:56 +0800</pubDate><description><![CDATA[深入浅出Unity内存泄漏
  
                     概述 本文通过对内存泄漏（what）及其危害性（why）的介绍，引出在Unity环境下定位和修复内存泄漏的方法和工具（how），希望能够给想要了解这方面知识的童鞋以一点帮助。最后提出了一些避免泄漏的方法与建议。 内存泄漏及其危害 相信各位程序猿们或多或少都会听到过内存泄漏这个名词，但是对于一些新手猿来说，或许不是很了解。内...]]></description><category></category></item><item><title><![CDATA[游戏开发中的ECS架构]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/106964341</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/106964341</guid><author>qq_41936799</author><pubDate>Thu, 25 Jun 2020 23:52:12 +0800</pubDate><description><![CDATA[0x00 何为ECS架构
ECS，即 Entity-Component-System（实体-组件-系统） 的缩写，其模式遵循组合优于继承原则，游戏内的每一个基本单元都是一个实体，每个实体又由一个或多个组件构成，每个组件仅仅包含代表其特性的数据（即在组件中没有任何方法），例如：移动相关的组件MoveCo...]]></description><category></category></item><item><title><![CDATA[c#垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/105472359</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/105472359</guid><author>qq_41936799</author><pubDate>Sun, 12 Apr 2020 17:13:49 +0800</pubDate><description><![CDATA[作者：@nele本文为作者原创，转载请注明出处：https://www.cnblogs.com/nele/p/5673215.html目录
    GC的前世与今生
　　虽然本文是以.NET作为目标来讲述GC，但是GC的概念并非才诞生不久。早在1958年，由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能，这是GC的第一次出现。Lisp的程序员认为内存管理太...]]></description><category></category></item><item><title><![CDATA[通过Xlua实现unity热更新的一个小例子]]></title><link>https://blog.youkuaiyun.com/qq_41936799/article/details/105398745</link><guid>https://blog.youkuaiyun.com/qq_41936799/article/details/105398745</guid><author>qq_41936799</author><pubDate>Wed, 08 Apr 2020 22:25:51 +0800</pubDate><description><![CDATA[通过Xlua实现unity热更新的一个小例子
一.介绍
​	热更新是指在更新游戏资源或者逻辑的时候不需要开发者将游戏再打包、发布、玩家重新下载安装包，而是可以通过将需要更新的资源打包成AssetBundle文件发布到服务器，然后游戏程序通过下载服务器的AssetBundle替换本地文件来达到游戏更新的流程。
​	打包出来的unity制作的游戏，如果在代码（代码用的是c#语言）上有需要更改的地方，必...]]></description><category></category></item></channel></rss>