自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 收藏
  • 关注

原创 UE5.2 LyraDemo源码阅读笔记(五)输入系统

从上面的for知道,DefaultInputConfigs变量里配置的IMC如果是空的话是没有添加到SubSystem的,射击游戏里的角色就没有配置,它们的IMC是通过插件方式来添加的,这么说了还有另外一个地方会调用Subsystem->AddPlayerMappableConfig(Pair.Config.LoadSynchronous(), Options)。PMI是跟硬件设备挂钩的配置,PMI里携带IMC,比如输入设备是PC键盘还是手柄类型的PMI,游戏根据硬件设备驱动生效对应的PMI。

2023-08-17 19:52:06 707

原创 UE5.2 LyraDemo源码阅读笔记(四)

上一篇(三)讲到在模式玩法UI点击Elimination进入淘汰赛模式。UI选择点击Elimination后,触发蓝图W_HostSessionScreen的HostSession节点,有:调用这个方法切换关卡后,会调用到LyraGameMode.cpp的ALyraGameMode::InitGame(…)方法,也就是又开始重走一遍加载关卡相关内容的流程。

2023-08-08 17:04:37 984

原创 UE5.2 LyraDemo源码阅读笔记(三)

点击进入淘汰赛模式时,W_HostSessionScreen图表里执行到PushContentToLayerForPlayer节点,只是先加载一个转圈圈的背景黑色的等待Loading,而真正加载对应的下一关立绘的LoadingUI虽然已经在上面讲过的PrepareToEnterUserFacingExperience设置,还还没真正进行加载和现实。Experience=B_ShooterGame_Elimination",因此,将会加载对应的蓝图类B_ShooterGame_Elimination。

2023-07-03 18:18:20 932

原创 UE5.2 LyraDemo源码阅读笔记(二)

来看到关卡L_LyraFrontEnd下的蓝图节点B_LoadRandomLobbyBackground,打开它的蓝图,这个蓝图功能比较容易看得出来了,这里对数据资产ShooterGameLobbyBG里的BackgroundLevel字段里的大厅关卡进行加载,并打开LoadingUI。其中,L_LyraFrontEnd是要进入的关卡,?在这个方法里,在各种场景方式下,决定了进入新关卡时创建哪个蓝图类,包括在编辑器启动游戏时的默认蓝图角色B_LyraDefaultExperience。

2023-06-29 20:35:46 1112

原创 UE5.2 LyraDemo源码阅读笔记(一)

GameMode:默认模式>默认游戏模式>选中B_LyraGameMode。启动关卡:默认地图>编辑器开始地图。GameFeature:启动插件:编辑/插件,在插件列表中选中GameFeature和Modular Gameplay。创建GameFeature:编辑>插件>+添加>游戏功能(GameFeature,适用C++)保存路径不能更改:真要改同时要去AssetManager更改对于的路径。GameFeature入口:默认下GameFeature插件会加载所有的自定义GameFeature功

2023-06-28 10:30:21 570 1

原创 Unity基于GraphView的行为树编辑器

Unity基于GraphView的行为树编辑器

2023-02-10 16:43:47 2525 2

原创 UE5+VS2022编译Lyra实例项目

UE5+VS2022编译Lyra实例项目

2022-12-20 23:38:56 2103

原创 基于物理的渲染理论基础(PBR渲染)

基于物理的渲染,通俗一点说就是根据现实环境上光是如何照到物体,然后物体如何把光的颜色反射到人的眼睛的过程,而游戏中基于物理的渲染就是通过数学公式建模的方式来模拟(只是模拟并非完全准确)这个过程,从而达到更接近现实世界的渲染效果,显得画面更逼真。从上面这句话的描述得知,整个物理渲染其实就用一句话最简单的话总结就是:、求光从某个方向照射到物体后反射出来到肉眼的光。用更具学术性的话语说就是:求物体的双向反射分布函数,即BRDF。因此,要在渲染上实现上面这句话,就要求我们去解开这些问题:1、光是什么,如

2021-12-12 14:32:54 1351

原创 ORCA(RVO2)算法优化整理版

在一个2D平面R2R{^2}R2上定义一下内容:(速度:有方向有长度即向量。速率:无方向有长度即常量。)AAA : 机器人A。外部属性:PAP{}{_A}PA​ : 机器人A的位置(机器人形状的中心点)。rAr{}{_A}rA​ : 机器人A形状的半径。vA{}{_A}A​ : 机器人A当前速度。内部属性:vAmaxv{^{max}_A}vAmax​ : 机器人A的最大速率(常量)。vApref{^{pref}_A}Apref​ : 机器人A的最倾向速度。vAnew{^{new}_A}A

2021-12-11 11:14:31 12879 9

原创 Unity URP渲染管线下体积光的实现

随着手机硬件的提高、主流手游厂商也逐渐以3D游戏为主,游戏也开始更注重3D场景渲染氛围,对渲染技术的要求也越来越高,PBR渲染、环境光遮蔽、阴影优化、场景反射、体积光等华丽的效果也逐渐成为优质画质手游的标配,特别是去年《原神》的大火、用上了上了各种对于手游来说“高大上”的渲染技术,也让很多小游戏公司开始意识到要积累3D渲染技术。作为场景氛围渲染上的利器效果之一的体积光。在《原神》上当然有使用游戏《Inside》甚至从头到尾都有体积光的运用、整个游戏中营造出诡异的氛围。因此,参考了一些资料,在Uni

2021-09-12 10:52:30 2840 2

原创 xlua使用VS2019编译第三方库lua-protobuf

xlua github地址lua-protobuf github地址xlua官网编译第三方库教程xlua作者编译好第三方库的项目示例官网教程是讲了主要部分,没有环境搭建等步骤。之前用VS2017编译过xlua第三方库lua-protobuf,之后再编译一次,步骤有些忘了还是做个笔记。步骤一:1、下载xlua项目和lua-protobuf项目,将lua-protobuf放到xlua项目的xlua/build文件夹下:2、打开xlua/build/CMakeLists.txt,如图加入#b

2021-02-25 17:50:05 1580

原创 基于物理的体积光实现

序言在上一个项目中,美术的同学有在场景中实现体积光的要求,当时因为时间紧迫关系,第一反应就是在Assetstore找插件,找了一阵没找到适合的插件,后来使用了网格简单实现。再后来然后注意到github上Unity有一个VolumetricLighting的实现,好开心啊果断clone下来,打开Unity一看,效果大体还可以,其实却有好多细节没有实现。阅读了一阵 VolumetricLighting的 源码,发现它只支持延迟渲染,不能用于移动平台,除了AreaLight其它类型Light没有实现阴影体积

2020-11-25 22:57:42 1247 1

原创 物理渲染数学(s2013_pbs_physics_math_notes)

资料来自:s2013_pbs_physics_math_notes.pdf物理渲染数学本章节课程笔记,我们将回顾物理基础着色背后的基础知识模型,首先是对物理基础的事实性描述,然后是描述一些相关的数学模型,最后讨论如何试用这些数学模型实现着色。物理着色:着色背后的物理现象是光与物质相互作用有关的物理现象。理解这些现象,有助于对大自然的光有个基本的理解。图1 光是一种电磁横波光是一种电磁横波,这意味着它在垂直方向上振荡-与它的传播有关(见图1)。因为它是一种波,光的特征是它的波长从波顶到波谷的距离

2020-09-10 21:54:48 1227

原创 Unity景深Depth of field优化,得到清晰边界

Unity景深模拟的实现大都是,1、先获取屏幕后期纹理,然后复制出来进行高斯等方式模糊。2、 再根据场景物体的深度纹理, 在着色器中对景深需要清晰的目标为切割获取0-1的深度插值。3、将屏幕后期模糊过的纹理和原本后期纹理根据插值进行混合模拟出景深效果。当然还有其他更真实的基于物理的形式实现,但这种实现更真实,但也更吃性能。然而模拟景深的效果,网上也有不少例子。但他们的实现,因为是2章纹理混合差值,混合像素, 多数导致清晰物体轮廓会污染背景模糊的颜色,导致聚焦的清晰物体和身后的背景模糊色有一层混合色

2020-08-29 17:33:16 4563 3

原创 Unity Bloom更可信的实现

Unity Bloom的效果实现网上也有蛮多例子,但它们多数都是传承与高斯模糊,用一个限定的阀值,提取出屏幕上超过阀值亮度的像素,用卷积核运算对周围像素按照一定的比例差值颜色值叠加,这种实现方式性能可以。但在配合HDR实现发光效果其实并不理想,因为太粗鲁的将高亮度像素和它们的邻居卷起来叠加,会误伤了不少应该在较暗区域的像素,较暗区域被高亮度区域过度污染了。表现为如场景上几个招牌大字霓虹灯等,灯的轮廓和周围较暗的区域混在一起,过于浑浊,丢失了霓虹灯管本应清晰的轮廓。包括《xxshader》书籍上的bloom

2020-08-29 17:32:49 836

原创 Unity Gerstner Waves水面波浪

根据《GPU Gems》的Gerstner 公式,实现水波的效果。参考文档地址 https://developer.nvidia.com/gpugems/gpugems/part-i-natural-effects/chapter-1-effective-water-simulation-physical-modelsGersterWaves公式定点偏移:法线计算:波长和速度的关...

2020-02-05 14:21:44 2060 1

原创 Unity HilightingSystem屏幕后实现物体外发光描边效果

Unity实现物体外发光描边效果方式有好几种,如重叠放大模型描边Pass、卷积核描边、屏幕后处理等。HIightingSytem使用了屏幕后期效果实现,效果如下:整理出核心代码如下,主要分为4个步骤。1 ,根据场景上所有需要描边的物体轮廓,将它们画到一张RenderTexture上,其中黑色部分A通道值为0。实现着色器为HighlightingOpaque.Shader。2,将Rend...

2020-01-29 23:18:35 2512

原创 Unity lua行为树实现(可实现rpg挂机自动战斗)

在使用Unity开发手游项目中,用Lua作为热更脚本时,也许有的RPG项目会有连战斗也要求热更,对于角色挂机自动战斗,Unity有行为树插件Behavior Designer可以实现,但不能实现战斗逻辑热更,所以我用Lua对着Behavior Designer重新实现了部分基础功能,这样,使用Lua版的行为树实现挂机自动战斗,就可以热更啦!前提说明: 1,本文假设读者对树插件Behavior...

2020-01-06 10:15:13 7205 2

原创 lua puremvc UI框架(unity)

Unity中使用lua来做UI部分开发时,如果项目规模较大的话,整一套合适的UI框架,提高共同开发效率和保证代码质量,统一规范开发人员的代码还是有必要的。避免各自关门按自己的风格行事,导致项目代码风格各异,模块功能代码冗余杂乱,诡异bug增加。puremvc就是mvc框架中的一种,是前辈大佬们多年经验的结果,也发展了很多个编程语言版本,但一直没有lua版,所以使用lua按照puremvc c#版...

2019-12-23 23:08:05 1996

原创 跨平台灵活的导Excel表工具egen

一款高性能的导Excel表工具:egen特色功能:别名:数值填写支持别名,如填表的int类型内容可以是别名中文,生成代码时会自定替换成真正的值,方便阅读,避免数据量大时阅读混乱。嵌入外表:填表时如果引用到别的表定义的数据,类型一栏中只需“Excel文件名.表名”,然后在值栏中填写对应的外表id即可。避免程序读表时各种乱跳获取id去查表。支持枚举定义:避免还得手动写各种注释0、1、2等各...

2019-12-14 08:40:00 723 1

原创 Unity UGUI ScrollView性能优化,滑动列表的item/cell重复利用

unity中利用ugui制作scrollview有多个格子滑动时,最直接的做法是创建对应数量个格子节点,利用GameObject.Instanate创建节点本身就是性能开销很大的,如果有500个,1000个或者更多数据要显示,要创建这么多个节点,那么这卡顿一定很明显,这个数量级用这个做法实为下策。如果接触过安卓/iOS原生app开发的应该记得它们的Scrollview / Tableview是有...

2019-11-10 09:33:12 5140 3

原创 用熵值法求对战游戏结束后玩家之间的评分

熵是对不确定性的一种度量。信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。目前已经在工程技术、社会经济等领域得到了非常广泛的应用。熵权法的基本思路是根据指标变异性的大小来确定客观权重。参考数据:https://login.sina.com.cn/sso/login.php?useticket=0&returntype=META&service=blo...

2019-10-23 09:57:56 515

原创 laya屏幕UI适配相对位置

在使用laya制作手机端小游戏时,有时希望某个UI相对于屏幕底部等位置保持一定的距离,可以在layaIDE下如此设置:如:保持一个按钮在任何分辨率手机下总是距离底部100个像素分辨率。仅以scaleMode="fixedwidth"举例,其它适配方式类推。此时编译运行发现手机不同分辨率屏幕下未能与底部保持一致。因为这个相对位置bottom是相对对象是Scene的宽高,而Scene的宽高是...

2019-07-19 23:17:25 1899

原创 docker构建golang分布式带依赖库项目镜像

用了golang一阵子,然后自己琢磨着尝试写了个分布式的游戏服务器。突然想到要把它部署到docker上,网上查看了别人的一些经验,发现大部分都只提到简单的将单个golang文件main.go添加到docker上,然后运行,洋洋洒洒几行命令后完事了没了,跑了。然后,遗留了一些耐人寻味的问题没有提到,如,docker里依赖的第三方库找不到如何解决,分布式多个子服务器的Dockerfile如何解决等...

2019-06-13 13:08:27 1367

原创 二分法查找

二分法查找用于大小有序数组,对于包含n个元素的列表,找到目标值最多只需要Log2nLog{_{2}}^{n}Log2​n步,而简单查找需要n步。举例,从数组中找出45在数组的索引,数组中没有45则返回-1:using UnityEngine;public class BinarySearch : MonoBehaviour{ [ContextMenu("Do")] priv...

2019-05-01 19:25:18 157

原创 导航动态避让算法RVO的优化ORCA(Optimal Reciprocal Collision Avoidance)

来源于文档的主要内容:本文要解决的问题:n(n>0)n(n>0)n(n>0)个个体导航向目标点移动过程中,对于其它个体或者障碍物进行动态避让,并寻找最佳路径向目标点移动。我们在本文中讨论的问题正式定义如下:在一个共享的空间环境下有n(n>0)n(n>0)n(n>0)个机器人,为了简单起见,我们假设机器人都是圆形,空间环境则...

2019-04-19 12:44:08 25258 14

原创 Laya2.0 实现模拟物体影子shader

LayaAir中开启实时阴影性能消耗偏高,如果美术要求不那么逼真,那么物体可以用shader添加一个pass来模拟影子,效果整体可以接受,可以通过调整参数修改物体shader渲染影子的长短、方向、颜色等。效果如下,物体偏亮,因为我使用了半兰伯特光照模型。上代码:ShadowMaterial.tsexport default class ShadowMaterial extends Laya...

2019-04-10 09:16:14 4971 6

原创 Unity 的CommandBuffer基础

CommandBuffer,上 官方文档。依照官方解释:CommandBuffer携带一系列的渲染命令,依赖相机,用来拓展渲染管线的渲染效果。而且可以指定在相机渲染的某个点执行本身的拓展渲染。如下图,我们可以根据参数指定CommandBuffer在绿色的点上添加执行命令。Command buffers也可以结合屏幕后期效果使用。那CommandBuffer是个什么鬼,先来实现一个最简...

2019-03-25 15:09:35 19060 3

原创 Unity shader的StencilTest、ZTest与半透明渲染

着色器完成顶点编程和片元编程操作之后得到的颜色值,最后像素能不能够渲染出来还要经过最后一步逐片元操作,其中包括模板测试,深度测试等,只有通过了测试的像素点颜色才有资格进入颜色缓冲进行覆盖写入或者与已有颜色进行混合,从而被GPU渲染出来进入我们的视野。其实Stencil Buffer和Z Buffer就是一类东西,其目的都是为这个像素点的颜色缓冲区值服务,不过是其记录的数值作用目的不同。模板缓...

2019-03-24 11:45:02 1755

原创 unity ugui自定义Text字体描边优化性能

**在unity的ugui的用于Text描边的组件outline中,其中的实现是将字体copy出几份往外放置形成背景黑边,随之带来的是性能的高消耗。如果是一两个Text描边还好,如果同屏有大量Text在使用其在描边时,其性能消耗提高十分明显,甚至直接影响到了游戏FPS。因此,同屏Text描边多时有必要优化一下,因此写一个可以实现Text描边的shader。一样的道理,shader中有2个Pas...

2019-03-22 10:39:08 18190 10

原创 Unity使用波函数坍缩 (Wave Collapse Function)算法生成随机地图

List item在游戏领域和人工智能领域有一个随机生成地图用的比较多的算法叫做波函数坍缩 (Wave Collapse Function)算法,这个算法可以根据自己定制的规则生成随机地图。根据波函数坍缩算法的源码 Wave Collapse Function C#版,我将源码修改适配到了Unity上使用。这种随机生成地图或者说图片纹理,在做Roguelike游戏地图或者生成地板纹理横版...

2019-03-20 19:48:24 12688 10

原创 Unity打包AssetBundle自动分析资源依赖关系(包括UGUI图集打包)

前提说明:本文只是针对Unity5.x及以上版本打包AssetBundle。Unity5.x虽然说打包时会处理好资源的依赖关系,但前提依然要我们设置好目标资源的AssetBundleName,如果设置资源AssetBundleName时忽略了资源之间的依赖关系,那么打包AssetBundle时,依然会产生重复打包的资源,所以我写了一套脚本来自动分析资源的依赖关系,并根据资源的依赖关系来设置A...

2018-02-25 21:58:19 17704 2

原创 Json生成Lua Table工具

最近参与一个Unity手游项目的前端程序开发,主要使用lua语言,项目之前有了成型的服务器,包括策划配置好的数据,虽然策划配置数据使用的是Excel表格,但一开始没按照可Excel直接生成Lua表的格式去配,所以Excel表直接生成Lua代码的路是走难走得通了,但Excel却可以生成Json格式文件,那么我依然可以使用Json来生成Lua代码。 所以用Python写了一个Json生成Lua

2017-02-10 21:46:18 3117

原创 Unity关于2D角色序列帧8个方向动作资源优化

前提:这里使用的是Unity内置的Animator制作2D序列帧动画,不介绍制作过程。 在用Unity制作2D游戏时,如果动画是用图片序列帧来做,那么有的游戏一个角色动作通常会有八个方向,所以一套动作的图片资源是非常多的。 有些角色动作如向左走和向右走的图片是左右镜像对称的,因此可以只用向左走反转Y轴坐标180度来表示向右走的动作。 如此算来,可以省去8个方向中的3个有镜像对称

2016-12-18 22:11:30 11553

原创 MySQL5.6设置Win下设置大小写敏感

MySQL5.6设置Win下忽略大小写最近折腾服务器,使用MySQL5.6,并要求设置成Win下忽略大小写。我按照网上的做法:    1.用ROOT登录,修改/etc/my.cnf   2.在[mysqld]下加入一行:lower_case_table_names=1But,对MySQL5.6不起作用。解决方法:后来在Workbench上工具栏上Server->Option Files

2016-11-03 14:55:44 3557

原创 安卓Eclipse工程导到AndroidStudio问题和导出jar包

主要4点: 1,AndroidStudio模拟器无法成功启动; 2,安卓BuildTools版本找不到; 3,jar包引用导致的错; 4,如何导出jar包。一,模拟器无法成功启动: 安卓模拟器开启失败,log如下 如log所说,需安卓intel的HAXM,其实在安卓SDK文件夹下就有,不用再下载, 就是这个玩意,点击next安装完成后就可以正常打开模拟器了。 是否都安装成功可使用

2015-10-07 20:02:54 927

原创 <Stealth>游戏中的动画与寻路控制

最近玩了下Unity AssetStore上《Stealth》游戏,感觉很有意思,所以花了好些时间来读它的代码,感觉最让我值得学习的是其中机器人守卫的动画与寻路控制,所以记录一下:其中大体思路是: 敌人按给定的四个点巡逻,如果玩家进入视线范围内就转身停下,然后追赶或者射击玩家。敌人守卫使用了带位移的动画,而其寻路导航却是用了NavMeshAgent。 所以做法是: 位移: 不直接使用动画所带

2015-08-13 12:03:44 2000 1

原创 iOS游戏IAP数据服务器验证

我上一篇博客《为iOS应用/游戏内建购买项目(IAP)》对于CP有自己游戏服务器的从安全性来讲并不适用,有自己服务器则需要进一步对数据进行校验。如果CP具有自己的游戏服务器, Apple建议在服务器端存储产品ID,而不要将其存储在客户端本地。 这样就可以在不升级程序的前提下添加新的产品,这只需要我们向客户端发送哪个产品的ID。如果要申请商品ID,可参考《为iOS应用/游戏内建购买项目(IAP)》

2015-08-10 12:23:58 2901 3

原创 DOTween教程

DOTween起始上手起来很快,当然前提也是用心看一下哈。 可以在Unity AssetStore下载得到。 使用方法: 准备:在导入DOTween后,你需要设置dotween额外的库设置基你的Unity版本。Tools—–>DOTween Utility Panel——>点击SetupDoTween即可。DOTween只是为了对应Unity的版本不需关心更多。一,最先简

2015-08-06 13:34:39 24190

原创 Unity自定义窗体插件工具

模拟一个打包游戏工具吧。 但只有UI,并不具实际的打包游戏功能,自己可以扩展的,把具体功能加进去。 这个类一定要放在Asset下的任何一个Editor文件夹才生效。using UnityEngine;using System.Collections;using UnityEditor;using System.Collections.Generic;//这个类只实例化一次后,将序列化

2015-07-31 17:16:45 1400

Json生成Lua代码工具

Json文件一键生成Lua代码文件工具,需安装python27

2017-02-10

空空如也

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

TA关注的人

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