【GDC】守望先锋的游戏架构和网络代码
【GDC】守望先锋的游戏架构和网络代码在完成了上一个项目的网络部分后,想着在网上找找相关的资料,结果意外发现了我最喜欢的守望先锋的GDC。这篇演讲可以说是真正的宝藏,虽然并未完全揭露守望先锋的优秀代码是如何写成的(事实上这里只展示了冰山一角),但是看到有这种优秀的程序员为其努力,那结果也是理所当然的。 这篇演讲主要包含了两大部分:守望先锋的ECS架构,以及网络代码。而在网络部分,则还是主要围绕着两大问题:预测回滚,以及服务器回溯。事实上,在任何网络游戏中,网络部分的主要工作都围绕着这两点展开,而最困难的问题则是如何在这两个基本思想下进行性能和游玩体验的优化。虽然是2017年的演讲,但是我认为其内容直到今天都值得学习。 翻译视频链接:【【青幻译制】GDC讲座系列之三 守望先锋的游戏架构和网络代码】 https://www.bilibili.com/video/BV1p4411k7N8 1.ECS架构1.1...
【UE5】多人联机TPS游戏开发(四) —— 延迟补偿
【UE5】多人联机TPS游戏开发(四) —— ...
【UE5】多人联机TPS游戏开发(三) —— 射击游戏核心
【UE5】多人联机TPS游戏开发(三) —— 射击游戏核心 这一部分开始接近一个射击游戏的核心功能,包括HUD、开火、弹药,以及各种武器的实现等。 同时,在这一部分中也会开始通过Gameplay框架来实现游戏玩法的管理,以及使愈发复杂的游戏功能变得更加有条理。之前只是通过官方文档死记硬背,完全无法理解Gameplay框架到底是干什么的,而在实际上手之后才发现,Gameplay框架只是一些引擎提供的类,只要先了解这些类大概的作用,在有实际需求的时候自然就知道要用哪些类了。这个时候再去学习就比较轻松了。 1.HUD在本项目中,主要通过HUD类来管理各种UI,而HUD类又由玩家控制器来进行控制。 创建一个控件类CharacterOverlay用来显示玩家的主UI。从最基础的血量显示开始。 包含两个和控件蓝图绑定的元素。 12345UPROPERTY(meta = (BindWidget))class UProgressBar* HealthBar;UPROPERTY(meta = (BindWidget))class UTextBlock*...
【UE5】多人联机TPS游戏开发(二) —— 基础框架
【UE5】多人联机TPS游戏开发(二) —— 基础框架 终于要正式开始游戏的制作了。在这一部分中,将进行射击游戏的基本框架的搭建。 这部分内容的目标是完成射击游戏的基础网络框架搭建。虽然这些步骤看起来有些“公式化”,但它们实际上奠定了整个多人游戏的网络底层环境。 这部分有两个首次接触的多人游戏中的重点:复制和RPC。这两项是多人游戏最核心的同步机制。我们需要在各种需要同步的地方使用这两个功能,在实现同步功能的同时尽可能地节省网络带宽资源。 除了上面这两个知识点在遇到的时候会有比较详细的解释,其它部分基本上就一笔带过了,毕竟这个项目还有很多别的要讲呢。 1.安装联机插件上一部分中,我花了大量的精力制作了一个用于多人联机的UE5插件,是时候让它发挥作用了。 创建一个新的空项目,将打包好的插件文件复制到正确的位置: 进行一些常规配置: NetDriverDefinitions:指定 UE 在多人模式下使用 SteamNetDriver 作为底层网络驱动。它利用Steam的中继服务器(Steam...
【UE5】多人联机TPS游戏开发(一) —— 制作联机插件
【UE5】多人联机TPS游戏开发(一) —— ...
【UE5】GAS学习记录 —— 入门
【UE5】GAS学习记录 —— 入门 视频教程:https://www.bilibili.com/video/BV1Jx4y1Z7ig/,根据自己的理解和想法进行了一定优化和更改。 本文主要聚焦于GAS框架下内容的学习记录,项目中其它内容,如敌人AI、动画、UI等不进行详细描述。 1.基础知识目前UE引擎已经支持直接为Actor添加能力系统组件,比以前方便了很多。通过GAS系统,我们可以用更加合理和方便的方法去实现角色的各种能力(攻击,技能等)以及属性(生命,魔法等),包括各种技能的消耗、冷却、使用条件等。 想要使用GAS组件,需要先开启Gameplay Abilities插件。 2.普攻这里将普攻视作一个技能实现来对GAS系统进行初步的了解。 2.1...
【游戏不锐评】VA-11 Hall-A Cyberpunk Bartender Action —— 调制饮料,改变人生
【游戏不锐评】VA-11 Hall-A Cyberpunk Bartender Action —— 调制饮料,改变人生10/10 这个游戏唯一的缺点就是太短了。如果可以,我想玩一辈子。 欢迎来到VA-11 HALL-A本作的背景是某个平行世界的207X年。故事发生在罪恶之城Glitch City的贫民窟附近的一家濒临倒闭的酒吧:VA-11...
【GAME101】图形学学习记录——光线追踪
【GAME101】图形学学习记录——光线追踪阴影映射(Shadow...
【GAMES101]图形学学习记录——几何
【GAMES101】图形学学习记录——几何在现实生活中,物体有各种各样的形状,在这一节中,我们将学习如何在图形学中表示这些不同的形状。 隐式和显式几何表示隐式几何表示只包含构成几何形状的点满足的关系,不包含这些点的具体位置,通常为一个函数。例如一个球的隐式表示: x^2+y^2+z^2=1通常用以下方式表示: f(x,y,z)=x^2+y^2+z^2-1=0隐式表示很容易判断一个点在不在几何平面上,但很难找出几何平面上有哪些点。 显式几何表示直接将几何形状上的所有的点都表示出来,或者通过参数映射的方法定义的表面。参数映射的解释如下: 显式表示很容易判断哪些点在平面上,但很难判断一个点在平面上,平面内还是平面外。 不同的隐式表示之前所说函数形式的隐式表示虽然能表示出一个几何图形,但我们很难直观地通过一个复杂的函数知道这个几何图形的形状。以下是一些其他的隐式表示方法。 CSG(Constructive Solid Geometry):通过对基础的几何体做一些简单的布尔运算来表示复杂的几何体。如图所示: Distance...
【GAMES101】图形学学习记录——着色
【GAMES101】图形学学习记录——着色(Shading)简而言之,着色就是为物体附上不同材质的过程。 Blinn-Phong模型Blinn-Phong模型简单地展示了一个着色点在受到光线照射时会表现出什么颜色。 输入:观测方向v,平面法线n,光照方向l,表面参数(颜色,反光度等)。 反射在Blinn-Phong模型中,物体在受到光照后展现出的效果由三个部分组成:漫反射,高光反射,环境光照。 漫反射光线照射在物体表面时向四周反射的现象被称为漫反射。公式如下: L_d=k_d(I/r^2)max(\vec n·\vec l) \\ k_d:漫反射系数(和材质对光线的吸收率有关) \\ I:光源的光照强度 \\ r:光源到着色点的距离 \\镜面反射当我们处于特定的角度观察较为光滑的物体时,会看到物体表面会有明亮的高光,这就是镜面反射产生的效果。 特定的角度为当观察方向(v)和镜面反射的方向(r)足够接近时(范围由材质决定)。 计算v和r的距离较为麻烦,因此我们可以用半程向量(h)和平面法线(n)之间的距离来代替。 半程向量的计算公式以及高光反射的计算公式。 \vec...