![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
游戏开发
文章平均质量分 83
Clank的游戏栈
精通各种游戏开发技术、C# JAVA C++ 底层架构技术。
展开
-
URP渲染管线光照机制剖析
游戏引擎把所有主光源的颜色值叠加好以后,传递给URP的Shader,把所有Additional Lights的光源数据传递给 URP的Shader, URP Shader 获取光源数据,用来做光照计算,来着色, 而向前渲染管线是每个重要光源经过一次pass计算,来叠加到最后得颜色,这样做得有点是可以任意数目的光源与光照计算,缺点是多次绘制性能受影响。(2) 传统渲染管线,采用是逐顶点光照,还是逐像素光照,都是由Shader的实现来决定,而URP把这个开关放到了光源这边,这样方便我们进行响应的配置与调整。原创 2023-02-23 10:44:33 · 466 阅读 · 0 评论 -
横板格斗类游戏实战:战斗核心玩法
游戏开始后,根据关卡,生成游戏地图,生成怪物。升级玩家对象,同时生成游戏的操作UI,游戏的UI,分触摸操作+键盘操作。触摸操作用摇杆+按钮,键盘操作用方向键与技能按键,每个技能上有个字母,表示的是放这个技能的键盘对应的按键,如上图的K,H,Y,O。上一节讲解了游戏的周边,如登陆奖励,任务,商店等,本节来分析游戏战斗中的一些核心的玩法。通关当前章节后,可使用恶魔之印挑战恶魔模式,主要装备来源。今天的游戏玩法介绍就到这里,下一节讲解游戏的数值与策划表。每个小节,打完小怪后,会有一个打怪镇守。原创 2023-02-20 09:25:29 · 464 阅读 · 0 评论 -
横板格斗类游戏实战:核心玩法介绍(一)
每日登录奖励”是运营拉升用户活跃度的一种手段,连续不间断登录,奖品越来越大,对玩家越来越有吸引力,使得他每天都习惯性的来登录一下领取奖励,是一种典型的运营活动。“宝箱抽奖”:通过抽奖活动,提升用户的活跃度,同时通过抽取奖品获得奖励,这里还引入广告,用户看完广告以后获得更多的抽奖的权力等。大厅的主要功能与游戏的周边以及游戏的基本的逻辑关系本节就给大家介绍到这里,下一节介绍游戏战斗中的核心玩法。我们先来看游戏大厅的基本内容,游戏的所有入口都在里面,如图2-1所示。原创 2023-02-16 09:03:26 · 457 阅读 · 0 评论 -
Cocos Creator 3.x开发《切水果3D》
每个水果的结果都类似,如下图榴莲这个水果, 根节点durain下面durain01, durain02两个节点,这两个节点分别表示水果切开后的两个模型节点,另外一个子durain节点是整体的水果的节点。在这个项目种的一个核心的实现就是生成水果与抛出水果,我们先来看生成水果,我们做一个GameMgr的脚本用来管理整个《切水果》的逻辑。我们刚开始做项目的时候,首先要准备好项目的资源,一个游戏项目包含的资源大致分为:3D场景, 3D角色,3D粒子与特效, 游戏音乐音效,2D UI界面, 游戏数据配置表等。原创 2023-02-13 09:21:46 · 869 阅读 · 0 评论 -
游戏服务器性能测试分析实战
问题5, 测试服务端请求Redis的情况,彻底排除掉Redis的影响,因为本次的性能测试请求与Redis有关。遇到这类问题,我们首先要做问题分析,在处理问题之前,一定要了解清楚并发时候的服务端技术架构组成,以及相关信息,然后再对问题做出对应的判断与调试。今天的分享就到这里了,问题比较简单,但是分析的思路值得推荐给大家,所以我就写了这个文章,关注我,可以获得更多游戏开发的文章与教程。经过上面的调查,我们总结了一下相关的情况,单次访问Redis正常,从请求到返回耗时大约是40ms, 说明整个链路没有大问题。原创 2023-02-09 20:10:37 · 849 阅读 · 0 评论 -
cocos creator新手教程:第003节3D模型的基本概念
美术交付的时候就包含了 fbx模型文件与模型的纹理贴图,当然还有其它的一些细节增强的贴图,如法线贴图等,fbx存放的是模型的顶点数据等,纹理贴图就是物体的表面颜色。模型动画其实就是模型的顶点在一段时间内的连续变换,比如一组待机动画,哪些顶点会动,如何动,每个顶点在动画中每一帧的的位置如何,这样每一帧,顶点的位置不一样,然后把每一帧播放出来,计算出顶点在这一帧的位置(动画采样), 每一帧,顶点的位置不同,人眼会把每帧的相关形状补间起来,形成了动画的感觉,叫做。模型中顶点的坐标我们又叫做顶点的模型坐标。原创 2023-01-14 09:11:46 · 1379 阅读 · 0 评论 -
Unity基于状态机的架构与设计
如上面的代码所示, 当状态机执行NodeInit节点状态的时候,会初始化时调用OnEnter接口, NodeInit的OnEnter接口中,调用了Init函数来做初始化,首先会创建一个UIRoot, 然后把资源加载界面显示出来,完成资源加载后,进入到登录逻辑节点场景,注意这里,状态机就由原来的NodeInit切换到NodeLogin状态机节点。有了上面的分析,我们对状态机就了解的很清楚了,自然设计一个状态机用来控制游戏的跳转控制逻辑就是非常简单的事情了,我们把游戏中的基于状态机的控制分成。原创 2023-01-09 08:59:44 · 797 阅读 · 0 评论 -
cocos creator:第002节创建项目与显示第一个物体
场景创建完成以后,我们创建一个3D物体到游戏场景中,游戏引擎内置了一些标准的几何体,比如立方体(Cube), 球体(Sphere)等,所以我们先创建几何体放场景中显示出来,我们来创建一个Cube吧,在场景编辑器中,鼠标右键”创建/3D对象/Cube立方体”,场景中会创建一个Cube的节点出来,ctrl + s保存以下当前的场景改变,双击以下当前的的”Cube”节点,这样编辑器中央就会对准 刚才创建出来的Cube物体,如下图所示。,这样你编辑的是哪个场景,预览运行的就是哪个场景。原创 2023-01-05 08:14:13 · 288 阅读 · 0 评论 -
初识Cocos Creator
并把这个游戏引擎项目开源,叫做cocos2d-x。刚接触Cocos家族的时候,会有很多个Cocos的版本与分支,比如Cocos2d, Cocos2d-x, Cocos Creator 1.x, Cocos Creator 2.x, Cocos Cretor3D, Cocos Creator 3.x, CocosDashboard, 等我们先把Cocos 的主要产品脉络梳理一遍。如果2D/3D选错了,其实也不要紧,编辑的时候是可以切换的,只是2D项目默认进去是2D相关的设置,3D默认进去是3D相关默认设置。原创 2023-01-04 08:58:06 · 517 阅读 · 0 评论 -
Cocos Creator 常见错误排查方法
很多初学者就会怀疑人生了,其实这个时候往往是一个组件类的N个实例导致的,都会跑update的打印代码,但是由于他们是不同组件实例,所以导致数据不同,一个组件实例的数据是正常的,一个是异常的,我们只要找出异常数据的组件实例就可以了,如何找呢?打印一下组件所在节点的名字,看下这个错误异常数据的节点的名字是谁就可以了。从每个API的函数的名字,表示的是这个函数的功能与作用,每个参数的名字,表示的是传入的数据类型等,返回值说明能告诉你这个函数的返回值,通过多阅读API接口来提升自己的处理问题的能力。原创 2023-01-02 09:29:49 · 1997 阅读 · 0 评论 -
Unity 搭建ILRuntime开发环境
有个小技巧,你打开标准的Unity项目工程,在” Assembly-CSharp”这里的引用就能看到我们使用的Unity的.dll, 例如我们要使用动画播放组件Animation, 它在UnityEngine.AnimationModule.dll里面,你就可以复制路径,找到这个.dll,然后把这个.dll拷贝到”逻辑热更项目”的UnityDlls里面,然后在。,同时把unity引擎里面的.dll的库添加引用到逻辑热更项目中,这样我们在开发游戏逻辑的时候就能直接引用到Unity的API和相关的智能提示。原创 2022-12-29 09:10:43 · 731 阅读 · 0 评论 -
Unity_IL2CPP常见问题分析
Unity 编辑器模式下是采用.net 虚拟机解释执行.net 代码,发布的时候有两种模式,一种是mono虚拟机模式,一种是il2cpp模式。由于Android/iOS不同的版本对编译器(NDK/xcode)的版本要求也是不同的,而大多数同学下载的NDK/xcode 是网络上的一个版本,不一定匹配上unity 编译Android/iOS时对应的版本,所以如果在发布il2cpp模式过程中,当我们遇到编译错误的时候,首先先编译空项目,看看是不是NDK,SDK,xcode的版本不匹配导致的。原创 2022-12-28 09:37:23 · 3034 阅读 · 0 评论 -
从FrameDebugger看Unity渲染
FrameDebugger显示渲染有3个部分,第一个是Camera.Render, 表示的是基于场景中的摄像机引起的渲染。Unity内置渲染管线是基于摄像机来进行渲染的,每个摄像机按照摄像机的渲染顺序来依次渲染,渲染完一个摄像机,再渲染下一个摄像机。在摄像机范围内的物体会被Unity渲染,不在摄像机范围内的物体,是不会被摄像机渲染的。今天的FrameDebugger与渲染的分享就到这里了,关注我们,获取更多的渲染优化相关的教程与知识。原创 2022-12-27 08:46:39 · 1204 阅读 · 0 评论 -
BEPU物理引擎碰撞系统的架构与设计
物理Entity有一个Specific列表保存了一些物理的Entity实例以及与这些Entity实例的碰撞规则,如果碰撞对中的Entity实例在这个表中,就返回这个表中的碰撞规则。延后决定,一个比较特殊的状态,上面说了有3个地方可以决定碰撞策略,如果某一个地方没有碰撞策略,就返回CollisionRule.Defer,进入到下一个地方。,使得物理Entity与周围的物理环境产生碰撞时,如何灵活的控制物理碰撞,本节給大家详细的讲解BEPUphysicsint 物理引擎内部是如何管理与控制碰撞规则的。原创 2022-12-22 08:56:03 · 744 阅读 · 0 评论 -
重构物理Entity架构,支持更多的形状
而且其它的形状的物理Entity,除了形状创建会不一样,其它基本一样,所以我们调整一下设计,把PhyBoxEntity与物理形状相关的代码放到PhyBoxEntity里面,与形状无关的物理Entity的基本功能,我们放到PhyBaseEntity里面,然后让具体的形状在扩展的时候继承PhyBaseEntity即可。本节来从新调整设计,让物理的Entity基本操作与物理的形状分离,支持更多的物理形状,支持物理entity与Unity物体位移与旋转同步。3: 编写其它的形状的物理Entity;原创 2022-12-20 08:57:43 · 565 阅读 · 0 评论 -
基于Unity整合BEPUphysicsint物理引擎实战
我先查找名字benchmark的意思,benchmark的英文有类似单元测试,实例代码的意思,所以这两个文件夹下的代码应该是供我们整合到项目做的实例参考,可以阅读里面的源码,但是不用放Unity源码编译。这里还有一个问题,就是物理Entity的大小设置无法像Unity自带的物理引擎一样,可视化编辑,其实这个问题很好解决,我们的策略是添加Unity对应的物理碰撞器组件 (如: BoxCollider),利用Unity做好的功能特性来编辑物理Entity大小与中心,运行的时候读取数据即可。原创 2022-12-19 09:12:45 · 1000 阅读 · 1 评论 -
BEPUphysicsint碰撞事件详解
每个可碰撞的物理Entity的有一个Collidable 对象,通过访问它的CollisionInformation属性就能获取得到,每个Collidable 都有一个自己的ContactEventManager, 通过访问Events 的每个Event的属性,就可以往里面添加回调函数,就可以获得该事件。本文主要详解由物理碰撞所导致的事件。物理事件的回调函数,都是物理引擎执行中回调的,有可能有些操作会改变物理引擎运行环境的Context,导致不安全的操作与异常,如何在回调函数中正确的安全的处理呢?原创 2022-12-16 09:14:13 · 494 阅读 · 0 评论 -
BEPUphysicsint定点数3D物理引擎使用
物理世界创建出来后,目前世界是空的,没有任何物理Enity,接下来就是往物理世界里面放一些物理的Entity。物理事件包括了触发与碰撞。世界创建后,需要模拟迭代物理计算,所以在游戏框架中的某个Update/FixedUpdate的地方来迭代物理世界,代码很简单,调用space的Update接口就可以了。在很多物理Entity中,有一个比较特殊,叫做StaticMesh, 一般我们用来模拟复杂物理环境,它的本质就是根据3D物体的Mesh来创建一个物理Entity出来,形状和3D Mesh一样。原创 2022-12-15 09:18:16 · 569 阅读 · 0 评论 -
BEPUphysicsint定点数3D物理引擎介绍
如果我们的物理引擎使用定点数计算,最后虽然将定点数转化为Unity Transform的相关浮点数显示物体位置,但是最终在决定物理碰撞,游戏事件中, 物理移动中都是定点数化后的整数运行,所以这样就做到了物理引擎迭代的确定性。, 那么1.2对应的定点数为12, (定点数是对应的小数扩大10倍后取整), 如果确定精度是小数点后2位,那么1.2对应的定点数位120(定点数是对应的小数扩大100倍)。帧同步的游戏中如果用物理引擎,为了保证不同设备上的结果一致,需要采用定点数来计算迭代游戏过程中的物理运算。原创 2022-12-13 08:50:13 · 700 阅读 · 0 评论 -
Unity Mesh切割算法详解
比如3D切水果, 在地图的城墙上挖一个洞,今天给大家来分享一个Mesh切割的算法,帮助大家解决项目中需要用到的Mesh切割的问题。在详细的讲解Mesh切割算法之前,先给大家讲解一下一个模型的Mesh数据主要包含哪些部分,等下生成新的Mesh的时候,我们知道每一部分的数据都代表什么。根据切割面,来将物体分成正向部分与反向部分,切割物体后,平面上面的是正向部分(Positive),平面下面的是反向部分(Negative)实例化一个新物体,将切割后的2个Mesh,一个复制给原来的节点,一个复制给新创建的节点。原创 2022-12-09 08:50:33 · 881 阅读 · 0 评论 -
3D游戏开发中的矩阵详解
矩阵很多同学没有接触过,所以感觉很难,很复杂,其实只要学过矩阵的同学都知道,矩阵运算并不难。今天我们给大家讲讲游戏开发中的矩阵的运算。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。1:矩阵是什么?上述变换中,xb 是由xa, ya 经过线性运算而得到得。如果xb = A*xa^2 + B*ya + C,这样就不是线性变换了。数学前辈们为了描述上面的线性变换,发明了矩阵,把上面的变换标记为:上面的变换,(xa, ya)通过矩阵原创 2022-12-07 08:58:33 · 338 阅读 · 0 评论 -
Unity手机游戏发热发烫优化指南与技巧
Unity手机游戏发热发烫优化指南与技巧很多小伙伴做完游戏后,发布到Android,运行,游戏很流畅,也不卡顿,但是跑一会游戏,手机就发热,发烫。客户提出需求,能否让它不发烫? 本文从以下3方面来分析手机发烫的问题,给大家提供一个解决此类问题的通用思路:对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。手机可以理解为是一台小型的电脑, 里面运行了很多app。CPU处理完数据和事件后,如果没有任务要处理了,就会休眠下去, C原创 2022-12-05 09:47:33 · 1836 阅读 · 0 评论 -
在校学生如何做Unity独立游戏?
由于MMORPG等多人同时在线的游戏都会有AOI的区域,就会频繁有网络玩家进入AOI区域与离开AOI区域,这样就会导致在客户端频繁的创建与删除一个网络玩家对象节点,所以一般我们会基于内存池来管理玩家对象,这样让玩家对象能快速的创建与删除。Unity多人同时在线的游戏会有很大的地图,大量的玩家同时在线,以及玩家会有不同的游戏职业,这样众多的玩家游戏角色我们客户端应该如何来设计呢?大型多人同时在线的游戏会有大量的玩家创建与删除,同时有大量的数据过来,我们在处理网络数据的时候要做好状态的日志,方便我们分析。原创 2022-10-12 13:37:41 · 394 阅读 · 0 评论 -
游戏程序员如何正确的写简历
面试的时候,HR会打印你的简历,先和你聊下基本的情况,安排做一些面试题(如果有),然后就是主管出来对你做技术面试,这个时候主管会把你的简历从头到尾的看一遍,看看你擅长哪些技术,在哪些公司, 有哪些从业经历, 通过你的从业经历,来面试你是否真的都做过,经历过,从面试的过程种了解评估你的能力。所以基本信息里面要写期望薪资,期望薪资的写法也有技巧,你换工作最想拿到的薪资是多少,你就写为最低的薪资,最高的薪资基于最低的薪资高个3000块钱左右,比如你到这里工作至少要15K,那么你就可以写15~18K。原创 2022-09-28 14:00:15 · 2173 阅读 · 0 评论 -
Unity ILRuntime热更新开发原则与接口如何绑定
上一节我们讲解了ILRuntime热更新的技术原理,根据技术原理来搭建ILRuntime的开发环境。对ILRuntime有初步的了解,并且安装了ILRuntime的运行环境与实例化了ILRuntime解释器,创建了生成.net字节码的.dll逻辑热更项目, 并把.dll生成到Unity项目的StreammingAssets下方便运行时加载,而热更新能够热更的就是逻辑热更项目生成的.dll。本节分析ILRuntime基本开发原则与如何做到接口绑定,能使得逻辑热更项目直接调用Unity的引擎API。原创 2022-09-19 13:41:29 · 1040 阅读 · 0 评论 -
杂谈各大游戏引擎优缺点
Flash转H5,商业上不上太成功,后来随着h5的发展,直接转为H5 3D游戏引擎,是最早在H5上跑出大型商业3D游戏的H5 3D引擎, 在H5 3D这块积累了很多经验和成熟上线的产品案例,现在80%左右的3D微信抖音oppo vivo小游戏都是laya引擎做的。白鹭游戏引擎对于H5游戏是有着不可磨灭的贡献,它是最早的H5游戏引擎,它里面的很多工具非常好用,到现在还被其他的引擎使用,比如骨骼动画工具,DragonBones被广泛引用到游戏开发中。(2) 引擎开发2D游戏经过大量验证,非常适合2D游戏开发。原创 2022-09-14 14:12:44 · 2349 阅读 · 0 评论 -
Unity学习资源(超全)汇总 基础+项目+进阶+面试
官方资料Unity安装及规划Unity 基础案例教程Unity框架设计篇Unity热更新+AI专题Unity Shader进阶视频教程Unity性能调优【性能优化】视频教程Unity 网络游戏同步视频教程Unity 游戏开发之面试专区视频教程(API 详解)(官方视频教程,适合英语好的同学)原创 2022-09-06 14:40:34 · 2677 阅读 · 1 评论 -
unity游戏开发中的随机算法
如果触发眩晕成功,则概率重新从8.5%开始递增计算。第一次触发眩晕概率为8.5%第二次为17%,以此类推递增。关于如何使用这上述C系数。原创 2022-09-06 09:31:29 · 1263 阅读 · 0 评论 -
横板格斗类游戏实战:事件订阅与发布系统
一个查找还好,要是多个地方需要改变数值,多个节点都需要被改变,玩家战斗逻辑,不可能每个节点都去找一下,然后设置一下,这样也不灵活,也不方便扩展。当events_map里面有数据的时候,数据结构如下: { “事件名字1”: [监听者1{caller, func}, 监听者2], “事件名字2”: []}玩家在游戏战斗过程中,被某个怪物把血打掉了,然后界面上的UI血条的数值就要发生变化,如图: 1.7-1。当我们要监听某个事件的时候,传入事件的名字,回调时的this对象(caller), 回调函数func。原创 2022-09-05 09:49:36 · 487 阅读 · 0 评论 -
最新Unity如何打包发布到Android
我们可以去掉Android NDK Installed with Unity 这个勾选框,选一个NDK的文件夹,如果NDK的版本不匹配,就会提示你它需要的对应的NDK的版本号, 如上图为19.0.5232133, 这个时候我们就可以到网络上去下载大的版本号为NDK 19的版本。我们要打包发布哪个Unity版本的项目的时候,就安装对应Unity版本的开发环境,点击右边的设置图标,然后选着”添加模块”菜单,勾选Android,这样JDK,与SDK,NDK就已经选好了。环境安装好后,打包一键就可以完成。...原创 2022-09-01 09:24:13 · 2873 阅读 · 0 评论 -
横板格斗类游戏实战:UI框架的制作
很多UI框架的同学,还要设计什么红点系统,什么弹窗系统,其实大可以不必,UI框架做到上面那一层就可以了,至于具体的弹出式对话框怎么做,如何做,基于上面的机制来实现对应的策略就可以了,所以我们做UI框架不做这些策略,具体的什么红点提示这些,我们放到游戏逻辑层去做,当作普通的开发需求就可以了。如何方便的把UI的结果显示到对应的组件上,这个就更简单了,因为我们显示UI结果的几个组件我们可以在初始化的时候,写好对应的成员,初始化的时候,把组件获取到,后面只要显示数据到这个组件,直接操作就可以了。...原创 2022-08-31 09:17:29 · 421 阅读 · 0 评论 -
横板格斗类游戏实战:定时器Timer模块设计
启动一个定时器,new TimerNode对象来放入定时器管理迭代,取消一个定时器,就把这个从管理列表里面移除,注意不要马上移除,只是做个标记,而是在update里面统一移除(这样可以避免再定时器回调中删除另外一个定时器对象,从而改变了定时器遍历的TimerNode数据,导致出问题)。(2) Cocos Creator做帧同步的时候,业务逻辑都要有服务器帧事件来驱动,所以这个时候推荐游戏逻辑的定时器也要基于服务器帧事件的入口来迭代,如果有自带的定时器不方便。基于这两点考虑,我们决定自己来实现定时器模块。..原创 2022-08-29 10:08:33 · 508 阅读 · 0 评论 -
Unity UGUI开发规范
今天给大家分享Unity UI开发相关的一些编码和规范,有了这些指导规范,帮助你的项目获得更好的性能,少走弯路。Unity GUI(也被称为UGUI)经常是项目性能问题的来源。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。考虑使用多分辨率和宽高比大部分情况下,我们一套UI,能基本全部适配好,Unity UI让建立一个可以适应不同分辨率和宽高比屏幕调整位置和缩放UI很简单。...原创 2022-08-26 13:56:52 · 515 阅读 · 0 评论 -
Unity ECS 内存分配器原理详解
大量的Entity的创建与销毁,大量不同类型的数据对象交叉创建,很容易造成内存碎片。而这一小块内存,无法分配给当前系统的任何一个对象,这样,这小快内存就再也无法使用了,造成内存碎片,随着系统不断运行,随着更多大量的创建与释放,内存碎片越来越多,分配/释放效率也越来越低。Entity的内存分配与内存布局, 在创建Entity的时候,ECS系统就会注意Entity的内存对齐,同时也会注ComponentData在Entity里面排布的内存对齐,如果没有对齐,就会空一些出来。高效的内存模型与布局如何实现?原创 2022-08-24 09:16:07 · 361 阅读 · 0 评论 -
Unity Mesh切割算法详解
对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,源码素材获取 欢迎你来交流学习。(图1)如何接受玩家的触摸操作,生成切割面做模型切割的时候,我们首先要根据玩家的触摸操作来生成一个切割平面。如图1所示,根据玩家的黑色的划线,我们要基于黑色的划线来生成一个切割平面。主要的步骤如下:(1) 获取起点的屏幕坐标,并结合3D摄像机,把起点的屏幕坐标转到摄像机的视口坐标系下。if (!}...原创 2022-08-19 09:02:40 · 3308 阅读 · 2 评论 -
RVO实战系列:RVO动态避障技术方案介绍
它有两个版本,一个是C++版本,一个是C#的版本,所以基本上RVO的这库可以用到任意的游戏客户端或服务端种,比如JAVA的服务端,我们可以用C++的版本来做native调用即可,也可以直接翻译C#代码为Java,这个工作量比较小。我们在开发游戏的时候经常会遇到这样的问题,当我们寻路的时候,其它人也在寻路,如何避免不从其它人的位置穿过。本节我们来介绍一些Unity 实现RVO的相关资料,后续在详细的讲解ROV算法的原理。今天的RVO的介绍到这里了,关注我们,后续更新RVO实战系列,让你的游戏能动态避障。...原创 2022-08-18 09:13:00 · 3410 阅读 · 0 评论 -
Unity多人同时在线海量玩家角色的架构与设计
由于MMORPG等多人同时在线的游戏都会有AOI的区域,就会频繁有网络玩家进入AOI区域与离开AOI区域,这样就会导致在客户端频繁的创建与删除一个网络玩家对象节点,所以一般我们会基于内存池来管理玩家对象,这样让玩家对象能快速的创建与删除。Unity多人同时在线的游戏会有很大的地图,大量的玩家同时在线,以及玩家会有不同的游戏职业,这样众多的玩家游戏角色我们客户端应该如何来设计呢?大型多人同时在线的游戏会有大量的玩家创建与删除,同时有大量的数据过来,我们在处理网络数据的时候要做好状态的日志,方便我们分析。...原创 2022-08-17 08:51:59 · 748 阅读 · 0 评论 -
Unity 框架如何做好资源管理
加载的时候,使用UnityWebRequest加载StreammingAssets目录下的ab包。Unity 自己推出了基于Addressable的资源管理,本质上和我们上面的AssetsBundle系统类似,有兴趣的同学可以关注一下这个模式的资源管理的发展。作为架构师,在开始动手之前,先分析清楚需求,你才能设计出合理的方案,我们来分析一下Unity资源管理都有哪些需求,把需求想清楚了,设计是自然而然的事情。每次打包的时候,你知道打的是哪个平台,哪个渠道哪个版本的资源包,输出的时候也分平台分渠道。...原创 2022-08-12 09:36:25 · 407 阅读 · 0 评论 -
网络游戏协议:基于Protobuf的序列化与反序列化
每个复杂的数据对象的内部结构都是开发者定义的,所以这块必要更具应用有多少个对象,来编写函数实现,而这些函数可以调用基本数据类型的编码函数,最后组合成byte[];(5) 开发者只需要将要序列化/反序列化的数据对象定义到协议文件,然后运行编译器生成协议文件对应的目标编程语言的代码, 就可以使用里面的类与对象了。解码也类似,基本的数据类型,可以实现一次解码函数,复杂的对象,都是由开发者自己调用基本数据类型的解码,一个个的解码出来。我们先来通过一个简单的案例,来讲解二进制序列化与反序列化的基本原理。...原创 2022-08-11 09:51:45 · 583 阅读 · 0 评论 -
那些事情是用Unity开发项目应该一开始规划好的?如何避免后期酿成巨坑?
2) 使用自己实现的加密解密算法,比如,采用二进制亦或来做加密解密,比如,加密定一个二进制掩码mask, 让每个字节都异或这个mask,得到一个新的数据,这样资源就不能被直接识别出来,使用资源得时候,再把加密数据异或一次mask在解密回来到项目中使用。分析完加密解密算法以后,接下来我们就来看下如何加密我们的资源,先来介绍第一种方案,打资源包的时候,加密单个的资源, 把加密后的数据打入到资源包。等,静态分析代码找到密钥对应的字符串,有了密钥,你用的是标准库,一下加密资源就破解了,分分钟你的资源就被破解了。..原创 2022-08-10 10:10:02 · 218 阅读 · 0 评论