游戏引擎
文章平均质量分 68
弟炜啊
这个作者很懒,什么都没留下…
展开
-
图像渲染 抗锯齿
锯齿的产生图形渲染中的锯齿是指在渲染结果图像上颜色剧烈变化的区域出现锯齿状一样的斑纹的现象。在图像色彩边缘线上,由于边缘两边的颜色差异很大,这样的现象特别明显。锯齿现象本质上是因为不同频率信号之间转换之后造成的数据失真。因此锯齿现象也被称为走样(Aliasing)。常见的走样有几何走样,着色走样、动画走样。消除锯齿现象的技术就是抗锯齿,也被称为反走样(Anti- Aliasing,AA)。抗锯齿就是通过一些手段来重构丢失的信号。我们通常用的抗锯齿算法实际上是降低锯齿,并非消除锯齿。抗锯齿算法原创 2021-10-09 13:40:50 · 890 阅读 · 0 评论 -
渲染管线相关
1. 准备好顶点数据和顶点连通性数据。顶点数据包括顶点的位置、颜色、纹理坐标、法线等数据,而顶点连通性数据则是描述顶点之间如何连接组合的数据,如这边两个顶点是连成一条线,这边三个顶点组成一个三角形。2. 将第一步获取的顶点数据进行处理,包括顶点位置变换,顶点光照计算,生成纹理坐标等操作,处理完后输出到下一步。(顶点着色器负责阶段)3. 根据上面提供的顶点数据和顶点连通性数据,将点连成线,线连成面。把零零散散的顶点组装成一个一个的图元,并且将图元进行栅格化,即处理成一个一个的像素格子,并且决定了每个像原创 2021-10-09 13:34:29 · 176 阅读 · 0 评论 -
Lua快速入门
为什么用Lualua是一门非常简单,易于上手的语言。它的简单可以从两个方面来说,一是嵌入宿主语言非常简单,另一方面,对开发者友好,语法简单,完全过程式,没有繁重的OOP负担。对于端游,脚本是锦上添花的东西。但是到了手游时代,脚本就是刚需。因为客户端发一个安装包很麻烦,在ios上每次更新都需要提交给苹果爸爸审核,审核通过以后才可以发出来给用户下载,这个时间很长且不可控。一个安装包很麻烦,在ios上每次更新都需要提交给苹果爸爸审核,审核通过以后才可以发出来给用户下载,这个时间很长且不可控。Lua原创 2021-10-09 13:32:40 · 1685 阅读 · 0 评论 -
游戏内存管理
游戏内存中会出现的问题内存泄露忘记回收内存,函数退栈导致丢失了指针,就再也找回不了new的内存地址,这时内存一直就会被占用着。内存碎片由于对堆内存的分配/释放的顺序是随机的,导致申请的内存块随机分布于原始内存,倘若分布不是连续的(随机顺序往往导致多个内存块都是相隔开的),那么便会产生“洞”。随着时间推移,堆内存越来越多出现这些“洞”,导致可用的自由内存块被拆分成多个小内存块。这就导致即使有足够的自由内存,分配请求仍然可能会失败。内存页切换问题虚拟内存系统把不连续的物理内存块(即原创 2021-10-09 12:08:57 · 308 阅读 · 0 评论 -
游戏寻路算法
A*算法从起点A开始,并把它就加入到一个由方格组成的open list(开放列表)中。这个open list有点像是一个购物单。当然现在open list里只有一项,它就是起点A,后面会慢慢加入更多的项。Open list里的格子是路径可能会是沿途经过的,也有可能不经过。基本上open list是一个待检查的方格列表。 查看与起点A相邻的方格(忽略其中墙壁所占领的方格,河流所占领的方格及其他非法地形占领的方格),把其中可走的(walkable)或可到达的...原创 2021-10-08 23:05:16 · 129 阅读 · 0 评论 -
碰撞检测相关
游戏中碰撞检测分为两个阶段:broad phase 和 narrow phase。接下来要介绍的就是broad phase。在broad phase这个阶段,我们的主要任务是将屏幕上的物体进行筛选,筛选出最可能发生碰撞的物体集合。我们就需要一个这样的算法去将屏幕上可能和不可能发生碰撞的物体区分开来。碰撞检测_WADE-CSDN博客_碰撞检测四叉树四叉树是一个每个父节点都具有四个子节点的树状数据结构。我们将屏幕划分为四个区域,用于区分处于不同位置的物体,四叉树的四个节点正合适表示这四个区域。方便原创 2021-10-08 22:54:04 · 385 阅读 · 0 评论 -
凸包算法(Graham扫描法)
凸包算法(Graham扫描法) - 程序员大本营时间复杂度:O(n㏒n)思路:Graham扫描的思想是先找到凸包上的一个点,然后从那个点开始按逆时针方向逐个找凸包上的点,实际上就是进行极角排序,然后对其查询使用。步骤:1.把所有点放在二维坐标系中,则纵坐标最小的点一定是凸包上的点,如图中的P0。2.把所有点的坐标平移一下,使 P0 作为原点,如上图。3.计算各个点相对于 P0 的幅角 α ,按从小到大的顺序对各个点排序。当 α 相同时,距离 P0 比较近的排在前面。例如...原创 2021-10-08 22:44:41 · 255 阅读 · 0 评论 -
面向数据编程
面向对象编程层层抽象造成臃肿,导致运行效率降低,而这是性能要求高的游戏编程领域不想看到的。面向过程:建立解决问题所需的各个步骤(函数)。面向对象:建立解决问题所需的各个模型(类)。面向数据:考虑数据的存取及布局(数据)。值得一说的是,面向过程和面向对象都是解决问题的一种方法,而面向数据只是一种优化的设计思想,而非解决问题的方法。冷数据/热数据分割我们希望CPU缓存存储的是经常使用的数据,而不是那些少用的数据。这就引入了冷数据/热数据分割的概念了。热数据:经常要操作使用的数据,我们一般可原创 2021-10-08 22:13:19 · 2809 阅读 · 1 评论 -
ECS设计框架
ECS,Entity(实体) Component(组件) System(系统),是一个gameplay层面的框架,它是建立在渲染引擎,物理引擎之上的,主要解决的问题是如何建立一个模型来处理游戏对象的更新操作,是对数据集合的操作。Entity(实体),有点类似于Unity中的Game Object,在ECS中,它仅仅是一个Component(组件)的组合,不具有任何代表意义,它的意义就在于对其上的Component(组件)进行生命周期管理。 Component(组件)是一个只包含数据的组件,将每个可能单原创 2021-10-08 21:52:34 · 1119 阅读 · 0 评论 -
UE4中基本术语
Actor可以更新的一组组件可以放在世界中的物体Controller没有物理表现的Actor,可以控制PawnPawn可以接受Controller输入的ActorCharacter是一个可以行走、跑、跳等行为的PawnPlayerController用于控制玩家角色AIController用于控制AIUObject所有对象类的基础类(不是所有类的基础类)AActor所有Actor类的基础类...原创 2021-09-11 23:13:56 · 1051 阅读 · 1 评论 -
UE4网络同步
什么是网络同步多人游戏里面需要把某个玩家操作的结果通知给其玩家,这个通知的过程就是同步,再放到局域网或者广域网中进行,就是网络同步了。中介转发中介转发就是客户端/服务器模式(C/S),添加一个服务器作为中介节点,每台客户端只与服务器建立连接,客户端与客户端彼此独立,服务器负责转发消息。这种架构的复杂度仅为O(N),维护起来也方便。帧同步与状态同步帧同步是服务器将某个玩家的输入直接转发给其他玩家,自己不做处理。理论上所有客户端都以相同的初始状态开始,只要收到的输入相同,那么每时每刻的状态都原创 2021-09-11 22:52:22 · 2135 阅读 · 0 评论