ProjectS中的GPU Driven
架构
前阵子敲定了ProjectS GI方案的大体架构,但只对着那几个Cube可看不出落地效果,也没法做针对性的优化,所以准备启动地形相关的开发工作
立项之时就考虑到美术成本问题,所以采用程序化生成作为构建ProjectS世界的主要手段,程序化生成意味着大量重复instance和大地形,这时候就得利用GPU Driven来作为整个PCG系统的底层支柱之一了,我们常说的GPU Driven包括以下几个方面
地形渲染
制作
Houdini 生成高度图+Mask VS 直接生成Mesh
Houdini生成高度图+Mask方案对于Houdini来说更加轻量,不需要处理地形Mesh
直接生成最终Mesh可以离线对Mesh做处理,包括岩壁重展UV,LOD计算等
但对于ProjectS来说,没有太特殊的需求对Mesh做处理,一些岩壁拉伸问题也可以通过处理贴图渲染进行解决,最终选用高度图方案
渲染
DrawInstanceIndirectly通用Quad Mesh + LOD + 高度图采样 实现地形渲染 VS Mesh Cluster Rendering + LOD 实现地形渲 ...
梦中酒
我做了一个梦
我是一位书生
梦里似有一壶酒,不见其形,却感受得到它的悠然与清香
听人说,这酒产自故乡,但如今远在异乡
这股清香,一直陪伴着我,在疲惫不堪的时候,我把它当成一种抚慰
后来,我对它愈加喜欢了,我付出的越来越多,用尽全力去了解它,只想永远拥有它
但,酒这事物,越沉醉,越伤身
它总是懒得回应我,无论我再怎么苦苦哀求,它只愿意给我它的清香
哪怕一滴一毫的壶中酒都不愿予我
但,我对它依赖的太深了,我想要更多
它说,让我看看你的模样
我便决定踏遍天涯去找寻它的踪迹
找寻它的路上,太阳是暖的,风是甜的,就连凌晨的星空也是美的
见到它的那刻,我顿住了,它是凛冽的,热辣的,但也有那熟悉的清香
这样的它,让我沉醉
我陪它走了很久很久,我们都很开心,像是久别重逢的新人
它就在我身边,这让我感到从未有过的安心
趁着满天星辰,我问它,能否给我更多
恍惚间,我看它稳了稳身形,酒盖似也紧了些,我心中悲然,这应是它的回答
翌日,我早早来到约定的地点
这里有春天的微风,慵懒的暖阳,翠绿的湖水,簌簌作响的树叶
我们依旧走在路上,但除了熟悉的清香,那疏离的感觉,把我一步步的推往绝望
我陪它走了很久很久,走 ...
ProjectS中的AI转向系统(Context Steering)
前言
前阵子在处理ProjectS中的AI行为时,发现怪物AI规划出的行为很容易造成怪物重叠,这归根到底是个动态避障问题,而当前游戏AI有以下几种常见动态避障算法:
VO : 提出速度域的概念,Velocity Obstacle 就是VO的由来。通过相对位置,并从自身出发考虑一个安全的移动方向,即避开VO区域(速度危险区)。但在移动过程中会出现抖动。原因就是反复计算安全区,当第一次避开危险区到达安全区之后,发现最佳移动方向(不一定安全,一般指朝向目标点方向)可能不再危险,就将移动方向转回来,结果发现其他寻路对象也这么考虑,也将移动方向转回来,所以第三次就又将方向转向其他方向。由此引发了移动时的方向抖动
RVO: 在VO的基础上,每次转动方向时,只转动计算出来的变化量的一半。从数学计算角度去减少出错(抖动)概率
RVO2/ORCA: VO与RVO都是在空间计算上来规划一个安全区域,而RVO2则是将其转化成了一个线性规划的问题(即用一个个平面将自己与需要考虑的对象的安全区域分割开来再采取一个共面区域,这个区域就是安全区)
对于这三种算法的详细解析,可参见:GameAIPro3_Ch ...
(译)上下文转向行为驱动的AI移动策略(Context Steering)
本文是对GameAIPro2_Chapter18_Context_Steering_Behavior-Driven_Steering_at_the_Macro_Scale 进行的中文翻译
译文
介绍
在游戏行业中,转向行为(Steering Behaviour)是非常普遍的。他们之所以这么流行,是因为其只需要使用简单组件就可以快速实现核心功能。
然而,转向行为并不适合用于某些类型的游戏。当玩家能够挑选并监控单个实体时,避免碰撞和自然的移动就变得非常重要。为了实现这一目标可能会导致行为组件的膨胀并变得紧耦合,实体运动逻辑也会变得脆弱和难以维护。
在本章中,我们将概述如何识别那些转向行为不太适合的游戏,并提出一种针对这些问题的新方法,它被称之为上下文转向行为(Context Steering)。上下文转向行为(Context Steering Monobehaviours)是小巧的和无状态的(StateLess),并提供任何行为本身所期望的运动约束。当上下文转向行为用于取代游戏F1 2011上的原转向行为时,代码库减少了4000行,但AI在避免碰撞、超车和执行其他有趣的行为方面表现得 ...
游戏设计精粹《五》
游戏设计精粹《总目录》
游戏叙事设计:游戏故事主题设计探讨-50个故事主题设计汇总
文章摘要个人总结
创造游戏重复可玩性的14种方法及解说
文章摘要个人总结
超越罐头:艾尔登法环与下一代开放世界
文章摘要个人总结
辐射挽歌:永远不要背叛你的核心用户
文章摘要个人总结
2022个人年度总结
今年算是颇为平淡的一年,没什么惊喜,也没什么失落,但生活就是这样,我们把这些平淡记下,多年后回首往昔,这些平淡就会成为我们珍贵的回忆与感动的来源
在工作方面,倒真不是我懒,工作总结相关的事情没什么好说的,大家都懂,无非都是些套话,场面话,我也懒得在个人博客里写那些,所以就以总结,记录个人生活经历为主了
一月 归乡
1.25号回到老家的县城,感觉有点饿了,先整碗朝思暮想的大碗米线
老家是一如既往的清冷,不过这种清冷我很喜欢,很安静,窗外的大部分时间都是阳光明媚,冬阳暖暖的
由于只带了个MAC,所以就只是整理了下守望先锋GDC的大纲,一边整理,一边感受着若有若无的家乡冬天特有的冷清,别有一番意味
休整了几天后,手就闲不住了,去村头小卖部买了几盒鞭炮,耍一耍
二月 返途
2月7日,早上5点,天还黑着,就坐着父亲的轿车,准备赶早上10点的飞机,因为要提前两小时值机,所以8点前就要到达机场
一路上倒也平稳,不知不觉就睡着了,忽然感受到一丝冷意,睁开充满困意的眼睛,发现车窗外已经飘起了小雪,觉得有些生气,毕竟在家这么多天连个雪影子都没看到,今天要走了,才开始下雪,都没办法好 ...
ProjectS中的全局光照系统(开发中)
文章已于2024.2.18重写,去掉老旧的传统GI方案,准备全面转向VXGI
前言
一开始还是使用的lightmap+lightprobe的传统GI方案,但其实这套方案在大世界项目中并不适用,主要有以下几个缺陷
数据量大,烘焙慢
动态物体只能接受漫反射信息,不能影响场景和其他动态物体
其中第二点尤其致命
当前较为流行的大世界GI方案有以下几大类
半实时Precomputed Radiance Transfer Global Illumination(PRTGI),半动态GI方案,多为离线烘焙一部分场景光照数据,运行时实时采样进行光照计算
动态漫反射全局光照(Dynamic Diffuse Global Illumination)(DDGI),PRTGI的全实时版本,把烘焙放在运行时,类似的还有SurfelGI
Voxel Global Illumination(VXGI),体素+RayCast流派
其中VXGI是将场景体素化,并在体素存储几何和材质信息,从而实现实时ReLight
我们都知道,对于大世界来说,游戏的寻路和碰撞也是很令人头痛的一件事,尤其是在Unity上
...
以线性时间绘制非分层整齐树的实践与应用
故事还是要从去年春节说起,当时临近除夕实在闲的蛋疼,随意摩挲着MAC唯一比较舒服的触摸板,突然想起我的行为树乱糟糟的布局,就想着能不能搞个自动布局算法,充分利用空间的同时让行为树更加整洁大方,说干就干
吭哧吭哧3天时间(是的,你没猜错,我猪脑又过载了)终于是写完了一版行为树自动布局工具,当时够用了,于是就没管了
前阵子在给 基于行为树的MOBA技能系统:朝花夕拾 · 现代化的动画系统设计与开发 开发Playable Debug工具的时候,需求是横向布局对齐,参考了 Reingold-Tilford Algorithm 进行实现
最近我的运行时节点编辑器依旧有自动布局的需求,本来可以直接复用之前写的节点自动布局算法,但由于运行时节点编辑器和NodeGraphProcessor的节点数据结构天差地别,改起来非常折磨,想到后面可能还有什么地方有自动布局的需求,干脆抽离出一个通用的算法库,同时支持 从上到下,从左到右,从右到左,从下到上的树结构自动布局
说起来有4类情况,其实只需要写一个算法,然后对结果进行旋转 + 后处理即可
这次没有再埋头苦干,而是翻阅了大量资料,找到了一个无论是算 ...
基于行为树的MOBA技能系统:朝花夕拾 · 现代化的动画系统设计与开发
基于行为树的Moba技能系统系列文章总目录:https://www.lfzxb.top/nkgmoba-totaltabs/
今天也是冒着猪脑过载的风险想出了这么个像那么回事的标题,我命令看这个文章的所有人都狠狠的夸标题
2021.6.1,随着我战斗系统系列文章的发布,初版的动画系统也是第一次进入了大家的视野,文章中阐述了Unity动画状态机的缺陷,以及使用Playable API的理由,并且最后使用了 Animancer 作为Playable API的封装,然后在技能配置时进行指定一些动画过渡,Avatar,混合相关的参数
随后在代码里以这种方式进行处理
123456789101112131415161718192021222324252627public AnimancerState PlaySkillAnim(string stateTypes, PlayAnimInfo.AvatarMaskType avatarMaskType = PlayAnimInfo.AvatarMaskType.None, float fadeDuration = 0.25f, flo ...
一次更换电脑机箱的记录
直到今天之前,我都认为机箱空间一般都不怎么影响性能,毕竟还有那种ITX机箱的存在不是?
我的显卡是微星魔龙3060ti双风扇版本,本身的散热是过硬的,但不知怎么,在高负荷的情况下会有很严重的咔吧咔吧的响声,我一直以为是显卡本身的问题,但碍于我没有备用的亮机卡,也就一直没有送去维修。直到昨天,我突发奇想,会不会因为机箱留给显卡本身的散热空间太小了,从而导致积热?这是之前机箱的图
感觉有可能,正好看这个机箱很不爽了,说换就换,今天机箱到了之后,花了一小时把硬件搬个家,这是现在的机箱图,箭头标识的就是留给显卡的散热空间
然后跑了下3D Mark,我泪目了,不论是稳定性还是性能,都全面超越了老机箱,机箱空间真的很重要啊!
GPU稳定性测试对比
旧
新
CPU && GPU分数对比
旧
新