自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Unity ILRuntime 实战教程系列

有个小技巧,你打开标准的Unity项目工程,在” Assembly-CSharp”这里的引用就能看到我们使用的Unity的.dll, 例如我们要使用动画播放组件Animation, 它在UnityEngine.AnimationModule.dll里面,你就可以复制路径,找到这个.dll,然后把这个.dll拷贝到”逻辑热更项目”的UnityDlls里面,然后在。,同时把unity引擎里面的.dll的库添加引用到逻辑热更项目中,这样我们在开发游戏逻辑的时候就能直接引用到Unity的API和相关的智能提示。

2023-10-23 17:05:21 139

原创 Unity 如何打造”大厅+子游戏”架构

主框架工程其实就是整个游戏的主体,包括对子游戏提供的各种功能服务+热更新框架主体+大厅功能的逻辑(大厅也可以看作是基于框架的一个”游戏”), 主框架内置好Lua热更新机制,同时提供支付,广告等SDK的服务支撑,主框架工程中Lua相关的包括大厅,也可以热更,C#编写的不做到热更新。在主框架工程开发”大厅的逻辑功能”,做好加载子游戏的lua脚本机制,当用户点击了某个子游戏,调用增量下载更新子游戏,按照子游戏的入口规则加载lua脚本,进入子游戏后,就有子游戏自己来加载自己要的资源。

2023-10-23 16:59:36 109

原创 科普:自研操作系统到底有没有技术难度?

1: 操作系统内核: 选择基于开源的Linux内核, 所以Android的内核所有的改动都要无条件开放出来,对于商业公司来说内核开源其实也无所谓,每年很多大公司对Linux代码贡献巨大,看一家公司有没有在用心的研发操作系统,只要看每年Linux内核代码贡献量的排名。用开源的基于GNU/GPL 协议的gcc的实现。比BSD更加的宽松,可以自由的使用与发布,只要求保留源码与二进制中的版权与许可声明,使用MIT开源协议的代码库可以自由的修改,使用与分发,同时也能很好的保护商业利益与机密。

2023-10-23 14:31:01 127

原创 网络游戏开发系列2

NPC战斗角色也是类似的。回合制游戏首先是玩家的战斗匹配,对于回合制游戏而言战斗可以分为两种,一种是玩家与系统之间的PK,比如做某个任务,PK系统中的某个角色, 另外一种是玩家与玩家之间的战斗匹配。在做玩家匹配战斗的时候,如果是按照系统规则,通过系统来匹配对手,一般我们在服务端会设计一个等待列表,等待列表就是按照策划提供的规则来进行分类,比如新手场,高手场等。其实这里的本质都是一样的,唯一的普通是玩家与系统之间的pk,系统角色的操作是由后台系统的规则控制的,玩家与玩家PK,玩家的所有操作来自于网络客户端。

2023-10-19 15:11:05 64

原创 网络游戏开发系列

只要是网络游戏,涉及到服务器与客户端同步的游戏,都可以使用状态同步,举几个状态同步的例子,如《魔兽世界》,腾讯《吃鸡》,《自走棋》等大部分的多人在线的网络游戏都是用状态同步来做的,换句话说网络游戏中除了少数人对战(5v5, 10v10)的Moba类,FPS类等会用帧同步以外,其它的都是状态同步。Step2: 服务端接收到这个事件,做合法性检查(比如操作的合法性检查, 目的地坐标范围合法性, 玩家在A点,导航去到千里之外的B点,距离太远,可能有外挂的嫌疑),检查通过后再处理。世界就会创建一个这样的数据对象。

2023-10-19 15:00:39 81

原创 游戏程序员如何选Offer

24 ~26岁经过3年的专业练习有了一定的专业程度,很多程序员开始放松对自己的要求,很多程序员只关注技术,其实这个时间段对我们后来的职业生涯也是很关键,对内自己删除的,要学会用管理来提升自己与团队的效率,对外要从整个行业去思考问题,积累行业思维,多和其它部门的负责人交流学习,从产业与行业的高度去思考如何做好的项目,如何盈利等。静下心来好好学习,从人生来看,这段时间是大部分人自由时间最多的时候,父母还年轻,自己没有成家,没有小孩,还有很多的精力提升自己,所以这个阶段的注重点,跟对人,好好做事。

2023-10-19 14:49:17 34

原创 程序员性能调优(三)之内存篇

比如一个算法是用递归写的,由于递归的层次比较深,导致栈溢出,这时候我们可以减少栈的内存使用或调整编译器来配置更大的栈。答案是不会,因为进程A内存泄漏,进程A中泄漏的内存不能用了,一段时间后,OS会判定 进程A泄漏的内存块对应的物理内存页长时间没有用,当物理内存吃紧的时候,会把这个物理内存页判断为”长时间不用”的物理内存页,就把泄漏对应的物理内存页的数据交换到磁盘,然后释放物理页给其它的进程B使用,所以进程A的内存泄漏,不会从根本上影响其它进程的内存使用(OS做内存页交换的开销肯定会有)。

2023-10-19 14:38:43 57

原创 PBR物理光照计算公式推导详解

PBR物理光照Shader很多游戏引擎已经自带了,但是我们在定制渲染管线,优化渲染效果与修改Shader的时候需要对这些理论做一些基本的了解,才能修改的得心应手,今天我们对PBR物理光照的基本公式的原理来做一次数学推导,帮助大家掌握PBR Shader的基本计算原理,为后续做优化和定制做好准备,而这个也是面试时候必备,正在面试的同学可以来刷下这个文章。在物理书讲反射与折射的章节上我们学过,在一个反射面上,当入射角度越“倾斜”,反射的光线越多,折射的光线越少,入射角度越“直”,折射的光线越多,反射的越少。

2023-10-19 14:33:40 111

原创 Unity 如何使用”左右互博”强化训练游戏角色的AI

现在ChatGPT非常的火,大家都使用大数据模型来生成内容,后续机器人,仿真机器人的行为控制,也将会是AI领域很火的一个方向之一,这个方向就可以和游戏高度契合,游戏通过3D角色来仿真,通过训练AI行为来控制机器人的一些动作与决策,今天我们以”足球游戏”为背景,来详细的讲解,如何基于 “左右互博”强化训练,让两对机器仿真的足球队员来进行智能的经行一场AI比赛。我们在自己的电脑上训练,由于硬件的限制我们不能有太多的模型数据输入维度,我们用自己的电脑来训练尽量用一些关键的一些核心维度,来达到我们的训练目标。

2023-10-18 11:25:46 164 1

原创 Unity DOTS中ECS核心架构详解

根据ArchType的组件组合,我们就可以计算出它们一共所需要的内存大小,我们就从Chunk中固定分配对应的内存大小就可以了,这样Entity对应的所有组件内存非常高效的分配与释放,同时每种Chunk只存放一种ArchType类型的内存块,每次分配的内存大小都是一样,这样可以避免内存碎片。Entity中的所有组件组成的内存块看作的这个类型,我们叫做ArchType。上文提到,Entity中的所有组件数据是排布在一块内存里面的,每一种不同的排布,就会对应一种"类型"ArchType,这样保证了Entity。

2023-10-18 10:55:46 94 1

原创 Unity ECS最新DOTS环境搭建教程

b: entities.graphics包(必装): 包名为com.unity.entities.graphics,在package管理器中输入包名完成安装,它负责Entity的渲染,将Entity渲染相关数据提交给基于SRP的渲染管线。安装好entities包后,在Pacakges的entities的文件夹下可以看到有一个Document~的文件夹,它是当前DOTS版本的文档,我们可以从里面拷贝出来,作为离线文档来看。平常在手机上也可以看。其它的一些基于ECS的库根据自己的实际需要安装好即可。

2023-10-18 09:42:18 213

原创 Unity DOTS World Entity ArchType Component EntityManager System概述

运行的时候,Unity会创建一个默认的世界出来,并把每个system加入到这个默认的世界,如果你想要添加一个system,在运行的时候就加入到默认的World里面,你只要实现IcustomBootstarp接口。分配的时候,首先会分配16K大小的Trunk, 然后每种ArchType会对应一个size,一个Trunk只会分配同一种类型的ArchType,这样可以更高效的做好内存释放与分配。每个World,包含了自己的所有的Systems, 并负责System的迭代计算。

2023-10-18 09:39:15 43 1

原创 Cocos Creator 3.0基于PBR的物理渲染详解

常用的技术就是法线贴图,美术会建一个高精度模型,原来的一个三角面内,在高模下有更多的三角形面,就有更多的顶点的法线,把这些法线数据存到纹理贴图里面,这样低模下三角面的每个点来获取法线的时候,就不用通过插值,而是从高模的法线贴图里面获得法线数据,这样可获得更好的光照细节。一种是反射度与光泽度。什么是环境遮挡,举个例子就明白了,如下图有一个陶瓷瓶,我们从瓶口看下去,由于瓶口小,会遮挡底部的部分反光,我们从上往下看,看底部应该有点看不到底的感觉才更真实(左右图的瓶底对比, 右边看不到底部,比左边更真实)。

2023-10-17 14:04:30 164

原创 3步教你学会cocos creator 物理引擎

contact: 获取碰撞信息对象, self发生碰撞的自己的碰撞器组件实例 , other发生碰撞的别人的碰撞器组件实例,注意,一定要把代码写入onLoad函数里面,开启物理引擎,配置调试区域,设置物体重力, 不能在start里面;onBeginContact(contact, self, other): 碰撞开始。onEndContact(contact, self, othe): 碰撞结束。通过碰撞器组件实例,可以获得节点,碰撞的节点 other.node等。(2) 给节点上添加物理形状:如图;

2023-10-17 13:59:53 320

空空如也

空空如也

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

TA关注的人

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