自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习笔记15:网络游戏架构

客户端需要哪个对象的状态,就请求哪个对象的状态,或者服务的把这个物体的状态信息推过来,然后更新这个对象的显示【将其他玩家的状态行为同步的方式(请求其他玩家的状态并显示在NPC上),一般情况下AI逻辑,技能逻辑,战斗计算都由服务器运算,将运算的结果同步给客户端,客户端只需要接受服务器传过来的状态变化,然后更新自己本地的动作状态、Buff状态,位置等就可以了,但是为了给玩家好的体验,减少同步的数据量,客户端也会做很多的本地运算,减少服务器同步的频率以及数据量。状态数据,事件,控制数据是状态同步要同步的。

2023-10-31 14:38:07 152 1

原创 学习笔记14:AI

是一种高效的启发式搜索算法,在二维的栅格地图上寻路效果好,它通过估算节点的代价评估函数值并作为节点的综合优先级,当选择下一个需要遍历的节点时,再选取综合优先级最高的节点,逐步地找到最优路径。在Goal列表中选择一个goal,然后把这个goal中的状态与世界状态进行比较,如果不满足世界状态就把不满足的状态放入一个表中,然后寻找可以满足这个表中状态的action,但是如果这个action需要Precondition不被满足,那么这个不被满足的Precondition的状态也会被添加到这个表中。

2023-10-26 14:41:22 108

原创 学习笔记13:玩法系统基础

一般来说,对于多线程共享数据,需要使用mutex来同步,这样共享数据才不至于发生不可预测的修改/读取,然而,mutex的使用也带来了额外的系统开销,ring buffer/queue 的引入,就是为了有效地解决这个问题,因其特殊的结构及算法,可以用于2个线程中共享数据的同步,而且必须遵循1个线程push in,另一线程pull out的原则。但是回调函数使用不当会出现严重的bug,例如:在游戏对象死亡后,扣血的回调函数困难还会被调用,可以删除这个回调函数,但是困难会造成错误。回调函数通常用于事件处理、

2023-10-24 14:48:10 55

原创 学习笔记12:引擎工具链高级

您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。游戏中各个角色整体上是一起演出的,但是实际是一个一个完成后在组合在一起的。在计算机科学中,反思性编程或反思是指一个过程对自己的结构和行为进行检查、反思和修改的能力。在流水线的基础上,系统的核心逻辑处于中间,而插入逻辑则注重同时进入和退出的逻辑。现在的游戏越来越逼近现实了,一个游戏的时间线是整个游戏进行的基础。插件使用与主机应用程序插件相同的版本号,使用插件接口的版本号。输入和输出是相互连接的,通常输入和输出是相同的数据类型。

2023-10-23 14:22:21 58

原创 学习笔记11:引擎工具链基础

游戏引擎架构工具链解决的问题:调和几种思维方式不同的人的平台。

2023-10-20 13:46:49 34 1

原创 学习笔记10:粒子与声效

当我们渲染普通(不透明的)场景时,由于Z-buffer的帮助,其实只需要渲染接触到的场景的第一个物体(其他被遮挡不需要渲染),但粒子效果有时候(最差情况下)会在一瞬间产生叠满整个分辨率好多层的粒子,而且它们不存在完全遮挡关系,所以相当于一下子要进行超大量的渲染。当时间跳转到下一次tick时,会新建一个alive list1,并依序检索alive list中的粒子,如果发现某个粒子死亡了,就会把这个粒子序号移到死亡列表中,并且在渲染时也跳过这个粒子,如果仍存活就照抄到alive list1中。

2023-10-20 09:01:02 37 1

原创 学习笔记9:高级物理

而在更多情况下,动画和物理的区分并不像上述一样清晰,而是直接互相融合,比如抱着一个小女孩跑步的过程,一方面小女孩自身拥有一定的晃动动画,另一方面随着整体位置的移动,动画带来的角色物理信息会一起输入到物理系统去更新最终呈现出来的融合效果,使得避免动画单纯重复(只动画)和小女孩乱晃(只物理/布娃娃)。3维物体的切割也是类似。分割3维物体的一个难点是处理切割处的纹理问题,一般有两种方式:1、直接制作对应的三维纹理,切割时直接用(麻烦、贵)2、离线计算好这些纹理,一旦破碎则切换到对应的纹理,(要瞬时处理)。

2023-10-18 14:39:25 53 1

原创 学习笔记8:物体系统基础

一般来说,游戏中的对象(Actor)分为以下四类:静态对象 Static Actor,动态对象 Dynamic Actor ---- 可能受到力/扭矩/冲量的影响,检测器 Trigger,Kinematic Actor 运动学对象---- 忽略物理法则,由游戏逻辑直接控制(可能表现的反物理)在这个基础上,优化方法是取凸包A的某条边a做轴时,直接将凸包B的所有顶点投影到a的垂线上,因为这样可以保证凸包A的所有顶点都在垂线上a的一侧,所以只需要判断凸包B上所有顶点在垂线上的投影是否在另一侧就行。

2023-10-17 15:45:28 66

原创 学习笔记7:高级动画技术

控制动画配音系统是根据游戏情节动画角色的关键。逆运动学帮助人物动画适应环境约束面部表情可以用FACS中的动作单位编码变形目标动画在人脸动画中得到了很好的应用。延迟可以帮助重用角色之间的骨骼动画和面部动画。

2023-10-16 15:43:39 95 1

原创 学习笔记6:动画技术基础

角色身上的顶点数会有几万个,但是骨骼数就几十个,所以蒙皮矩阵要被调用很多次,所以要先算好先把所有骨骼的位置算好,然后再把所有骨骼的蒙皮矩阵算好。一开始是通过播放一张一张的图片来实现游戏角色的动作,然后发展出了通过一张一张不同角度的图片来表现一个3d效果的伪3D动画技术,这项技术Sprite Animation在现在的游戏中也经常使用。把四元数归一化可以发现去除最大的数其余的数不会超过根号2分之一,然后通过2个bit存储最大的数,在通过15bit存其余较小的数就可以通过归一化的反向算法求出原来的四元数。

2023-10-16 14:08:53 47 1

原创 学习笔记5:渲染管线,后处理

此外,还有一种体积型的雾,这种雾是有一定高度的,当前高度在这个高度以下,值就是雾的值,当前高度在这个高度以上时,雾的值是指数降低的。在我们在雾外看雾内的东西,我们只能用Ray Marching的方法进行积分,雾的浓度值与通透值线性相关,可以直接将浓度作为通透值。但是上面的都没有考虑到角度问题,实际上直射下来的光照贡献度和斜照的贡献度是不同的,基于解决这个问题,提出了GTAO(Ground Truth-based Ambient Occlution),并且这个算法。通俗来说就是发光物体的光晕效果。

2023-10-11 14:43:26 112 1

原创 学习笔记4:游戏中地形大气和云的渲染

当然这样也有一个叫做 T-Junction 的问题,就是当同一条边相邻的三角形精度不同的时候,高精度的在这条边上的顶点是有起伏的,会产生露边的现象。基本思路是:将纹理的Mipmap chain分割为相同大小的Tile或Page,这里的纹理是虚纹理,然后通过某种映射,映射到一张内存中存在的纹理,这里的纹理是物理纹理,在游戏视野发生变化的时候,一部分物理纹理会被替换出去,一部分物理纹理会被加载。方法优化:通过把各个方向的散射当做是均匀的,所以光的散射现象变成了一个百分比的衰减现象。

2023-10-10 15:20:15 99 1

原创 学习笔记3:渲染

我们都知道,在实时渲染中,存在这样的一个渲染优化手段,也就是“LOD”,level of details,也就是细节等级的意思,总体来说也就是根据我们观察相机距离被观察物体的距离来决定优化被观察物体的渲染细节,比如说一个物体距离观察相机很远的时候,渲染Shader可以只采用最基本的DiffuseMap,并进行简单的光照计算,毕竟人眼睛会一定程序忽略远处物体的细节。它是一个经验模型,并不完全符合真实世界中的光照现象,但由于实现起来简单方便,并且计算速度和得到的效果都还不错,因此在早期被广泛的使用。

2023-10-10 09:42:40 61 1

原创 学习笔记2:渲染实践

1.游戏引擎的设计与硬件体系结构设计有着深刻的联系2.采用子网设计来支持多物料模型3.使用剔除算法绘制尽可能少的对象。4.随着gpu功能的增强,越来越多的工作被转移到gpu中,称为gpu驱动。

2023-10-09 13:52:04 27 1

原创 学习笔记:如何构建游戏世界

一切都是一个物体游戏对象可以用基于组件的方式描述。游戏对象的状态在tick循环中被更新。游戏对象通过事件机制相互作用。游戏对象在场景中被管理,具有有效的策略。

2023-10-08 14:09:28 34 1

原创 游戏引擎架构分层

引擎是用分层结构设计的。较低级别更稳定,较高级别更可自定义。虚拟世界是由一组时钟组成的。

2023-10-08 13:07:54 55 1

空空如也

空空如也

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

TA关注的人

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