夜琉殇 夜琉殇
关注数: 73 粉丝数: 107 发帖数: 7,759 关注贴吧数: 26
“若是敌不住,便教杀了” 很多人拿黑神话二郎神的一句台词来讲歪理,什么黑神话抗住了说明质量过硬就算黑也没有伤害,你扛不住说明质量有问题,好一个没有伤害,人家只是血厚不代表没有伤害啊!有没有想过如果没有那些带节奏的,黑神话可以取得更高的成就,好像国产游戏理所应当经受这样的拷问,就问你凭什么?凭什么要接受更高更严酷的标准,谁定的?游戏有问题是可以骂,但是你敢像骂国外游戏那样对待国产吗?或者打个比方,如果黑神话是索尼或者任天堂做的,信不信ps5吧那群人会沐浴更衣跪下来玩! 国外游戏做的再烂都有人吹,有优点吹优点,有缺点就无视,塞一堆丑八怪人物恶心小游戏都能甘之如饴,到国产就是高标准高要求,你敢说好大帽子就扣过来了。 无非就是国外那套策略,自己定一套标准要别人遵守,让别人难以实现然后自己偷偷另一套标准,这样就排除了大部分竞争对手,只有那种一切向钱看的超大厂有资格做游戏,不要把黑神话当成普适的范例,黑神话是集中力量办大事产生的难以复制的奇迹,不代表谁都可以这么做。 只有大量中小工作室都能存活,能够受到公平公正的对待,才有可能继续诞生优秀的游戏。 当然很多人就是想宣泄情绪,反正骂国外别人又听不到,骂国内尤其是网友那反馈可太爽了,恨不得给手机调个振动塞下面。
高帧率的谎言,物理帧和渲染帧的关系 首先要了解一个点,游戏的物理帧是固定的帧率,比如UE默认是30帧,unity是50,看游戏类型也可以改,比如FPS游戏会高一些,一般60以上,物理运算需要稳定的帧率,原理我就不说了。而渲染帧是不固定的,看你硬件的性能,如果没有锁帧或者屏幕上限几百帧都可以。 注意:物理帧是固定的,渲染帧从物理帧之间线性插值。 现在做一个思想实验: 假设物理帧是8帧每秒,渲染帧64帧每秒。如图有一个人从A点移动到B点花了一秒,走的是一条直线,物理帧8帧和渲染帧经过的轨迹是一条相同的直线。再看另一种情况,B点绕A点一圈用时一秒,物理帧经过8帧,轨迹是一个八边形。 那么渲染帧的轨迹呢? 渲染帧在两帧之间线性插值,渲染帧并不知道B点实际的路径是按照圆形环绕,渲染帧会在物理帧的八边形的每个边上插值8次,从而生成64帧的渲染画面。 但是路径仍然是八边形,而你想要的实际是一个64边形的路径。 如果你的游戏角色始终直线前进,渲染帧提高会带来明显的流畅感,但如果是曲线前进,渲染并不会让你的物理帧形成的线段路径变得更平滑,而是让线段之间有画面而已。 这就是为什么明明提高好几倍的帧率,却发现画面连续度并没有发生太大的变化,因为游戏中实际很少有直线的路径。 同样的,以前的游戏明明只有30来帧,但是感觉也没什么太大的不适。 我们可以引入一个运算复杂度的概念,渲染帧的插值计算是在两帧之间平均取值,相当于a+(b-a)/f,f是插值段数,而实际应该的物理计算是球形插值 (a * sin((1-t)θ) +b * sin(tθ)) / sinθ,两种计算的方式运算量差异巨大,而显卡是不可能给你做这样复杂的插值计算的。 结果就是,渲染帧并没有百分比还原应该达到的画面信息量,注意是信息量,也就是经过计算的合理的信息,渲染插值得来的信息量是打了折扣的,并且会随着帧率的提高能够增加的信息量越来越小。
动作游戏的AI设计模式 游戏ai的设计模式无外乎三种,动作游戏用的是其中最简单的模式,不是因为简单偷懒,而是动作游戏对性能有很高的要求。 这个模式就是有限状态机,有限就是把可能存在的状态列举出来,但是有限相对的不是“无限”,而是是将有限排列组合成更多的行为模式,这就是另外两种ai的基本思路。 所以很明显有限状态机是一种平行的结构,对象只会存在唯一一种状态,条件符合时才会切换另一个状态。 那这个条件就是读指令吗? 首先做一个思想实验,有很多老头环赛博斗蛐蛐的视频,其中有老头环狮子的战斗,狮子对战其他怪物也是会触发闪避的。 如果狮子需要读指令才触发闪避,难道怪物也会发指令?怪物有手柄吗? 那有人可能会想,加一步判断是不是玩家?或者就干脆让怪物发指令?那不同怪物有不同的需要触发闪避的技能,每个怪物都单独判断一次?那每个怪物需要处理可能需要对战的所有怪物的触发指令,假设每个怪物要对战所有怪物,那需要处理的逻辑数量就是怪物数量的平方! 试问哪个正常程序员会这样写代码? 所以写代码为什么要解耦,就是把各种同类的现象或者行为抽象出来,用父类或者接口去规范,让不同功能之间尽量不是一对一的关系。所有对象都需要遵守同样的规则,同时自身又具有独特性。 基于规范,最简单最合理的做法就是让玩家也是一个状态机,ai逻辑只关注状态机之间的交流,只是允许玩家通过输入指令来控制状态机,反过来状态机不需要监听玩家的指令。同样的逻辑就可以很简单实现玩家控制任何怪物,这就是多态和继承带来的自由度。
解释一下优化的原理以及和引擎的关系 需要详细知识的自己去问AI,也比自己道听途说和脑部好,我这里只从我自己的工作经验简单说下。 首先明确,优化不是具体的某一项或者几项方法,优化是从始至终贯彻在游戏过程中的思想,是抽象的概念,既是架构,也是工作流程,还是代码逻辑,和任何公司或者引擎或者语言都不是绑定的。 常见的几种原理。 常见的做开放世界的方法可以说是拆东墙补西墙,远处的资源精度随距离降低,附近的精度最高,不在视野内的剔除,从四叉树到LOD到nanite都是基于这个原理,这种判断是动态的,本身判断的运算就很多,需要结合多线程和GPU进行优化。 静态处理,静态和动态的区别不是看动不动,而是参不参与实时计算,游戏的逻辑是每帧运行的,不参与计算的计算一次放着就行了,比如灯光烘焙和场景初始化,烘焙本质是用硬盘空间换运算性能,反过来用运算节省硬盘也是一种方法,比如资源复用和实时生成。 合批处理,需要理解渲染管线的流程,CPU要把模型贴图传递给GPU渲染,这样的一次流程叫一次drawcall,这个次数是根据场景里每有一个单独的物体就要进行一次drawcall,drawcall多了会带来很大的性能损耗,所以减少drawcall是重点,结合前面的静态处理,就是把多个不用单独处理的物体合并成一个,一次性发送给GPU,相当于把几十次drawcall合并为一次,是重要的优化方法。 合批处理进一步,处理大量的重复物体,类似与草地和树,和风吹的效果,其实传一个就行了,到GPU流程里再进行复制和差分。 再进一步,脱离CPU直接在GPU计算?这个也是常见的优化方法,还有现在的新显卡的AI补帧和插像素,因为很多像素其实是可以预见的不需要特地计算,减少性能损耗何乐不为? 还可以GPU缓存数据避免GPU端的重复计算,和静态处理原理类似,都是最大化减少重复计算。 多线程处理,绝大多数游戏都是用一个主线程运行逻辑的,多线程辅助运算数据,游戏天然就不方便用多线程,所以一般用来处理特别复杂的计算,或者不参与主要逻辑的运算。 还有非常多的方法,可能写几万字也说不完,优化是贯彻到所有流程所有细节里的,大多数优化方法都是必要措施,不做直接运行不动,因为现在的硬件的性能还是非常优先,对游戏制作来说仍然是捉襟见肘,不存在不做优化的可能性,只有好坏的区别。
四渎龙神的来历考据 不以阴谋论,只从现实角度来分析四渎龙神的来历。 西游记原文如下: 龙王道:“舍妹有九个儿子。那八个都是好的。第一个小黄龙,见居淮渎;第二个小骊龙,见住济渎;第三个青背龙,占了江渎;第四个赤髯龙,镇守河渎;第五个徒劳龙,与佛祖司钟;第六个稳兽龙,与神宫镇脊;第七个敬仲龙,与玉帝守擎天华表;第八个蜃龙,在大家兄处砥据太岳。此乃第九个鼍龙,因年幼无甚执事,自旧年才着他居黑水河养性,待成名,别迁调用,谁知他不遵吾旨,冲撞大圣也。” 首先这段明显是借用了龙生九子的说法,龙生九子的概念到明代才出现,有据说是明孝宗向内阁询问龙生九子的名字,又因为当时没有明确的说法,下边的人就将已有的说法加上几个传统神兽,硬凑出了九子,同时期就产生了多个版本的龙生九子名单,连排序也有多种说法,饕餮,貔貅在某些版本也属于龙子。 泾河龙王的九子名字里有很明显的借鉴痕迹,先不说前四个,从后面说起。 第五个徒劳龙,与佛祖司钟。对应蒲牢,形似龙而小,性好叫吼,今钟上纽是也。徒劳蒲牢音相近,并且都是司钟的。 第六个稳兽龙,与神宫镇脊。对应螭吻,形似兽,性好望,今屋上兽头是也。稳兽就是吻兽,来源都是传统屋脊上的吞兽,形象标志是嘴大,稳兽龙应该就捏他于螭吻。 第七个敬仲龙对应蚣蝮,都是喜欢守在柱子上,只是名字没有对应。 第八个蜃龙则很明显对应椒图,蜃是贝壳的形象,椒图也是形似螺蚌。形象对应。 到鼍龙这里就不一样了,在明清小说里鼍龙是半龙半妖的形象,聊斋里也有鼍龙相关故事,可以说逼格不大,因为鼍龙其实就是扬子鳄,扬子鳄古人日常是能观察到的,并且在鳄鱼家族里扬子鳄属于弱鸡的那一款, 所以硬要从这份名单挖掘什么是很难的,从创作角度来说,因为鼍龙形象太弱,前8个龙的存在意义就是为了在这一回提升鼍龙的地位,都是为了给鼍龙贴金而存在的,因此西游记里提了一嘴就再也没出现了,属于是强行根据当时社会上龙生九子的说法凑出这一份名单。 那么相应的前四个龙的来历也就是比较简单,更不用说有什么阴谋论,楼下细说。
从引擎角度说说花果山地图的成因 其实就是为了醋包饺子的问题,搞这么大都是为了飞行。 游戏场景不是一次性加载的,而是LOD系统一点一点加载的,这游戏又全是高精度的模型,飞行和地面走不一样,同样的速度走路看起来正常,飞行就会觉得慢吞吞,所以飞行就得快,飞得快LOD加载也要快,电脑运算跟不上。所以只能把地图弄得很大,但是实际内容就那么多,就会又大又空了,实际boss数量和前面差不多的。很多能飞的游戏地图都是又大又空,魔兽加入御龙术后地图远不如以前。如果电脑配置比较低,就会经常看到场景模型从模糊的变成清晰的,这个就是LOD,根据模型和玩家的距离加载不同等级的模型,近的显示高模,远的显示低模,玩家前进的时候,会动态根据距离加载,但是这个加载需要时间,一般在远处就变了玩家发现不了,但如果玩家速度很快或者电脑比较卡,走到的时候还没加载完成,就会出现穿帮。 到了后面走山路又不让飞了,其实就是因为要刷怪了,怪因为除了模型还有其他很多资源要加载,就跟不上飞行的速度了。 简而言之,游戏呈现内容的上限其实是玩家的配置的性能上限,引擎不过是拆西墙补东墙,并不能突破性能的限制,实现一些内容的同时必然要牺牲别的内容。 后面再说说这游戏空气墙不太行的原因。
关于灵山为什么要图夜叉族 首先有一个前提是,国内普遍的观念是佛普度众生,众生平等,那么灵山做坏事就显得不可理解,但是实际古代佛法原典是有争议的,这个主要是因为佛教传入中国早期的佛经不完整,到了南北朝时期,就出现了不同的解释,一直到唐朝还在争论,玄奘去取经其中就有解决争论的原因,他想以原典作为权威,不过他实际没有成功,结果是南北朝时期这个不同的解释反而成为现在国内普遍认同的观念。 佛教起源印度,印度的种姓是根深蒂固的,人生来就不平等,而佛教却主张众生平等,那其实就是把自己放在印度社会对立面,为什么佛教还能存在?因为这个众生平等是有解释的,有一类人不在众生的行列,就是所谓一阐提不能成佛,一阐提比较抽象,大概就是没有善根的人,犯杀生犯戒不信佛的人,但是放到人身上,统治阶层是一阐提,屠夫杀猪也是一阐提,这个一阐提的评价标准肯定就是某些权威了,所以印度佛教发展到后期渐渐就婆罗门化,然后就衰亡了。 而国内争论的的内容就有一阐提能不能成佛,国内没有种姓,理解不了为什么要给人分等级,所以南北朝竺道生就创立新说众生都可以成佛,而到了唐玄奘和他师傅是觉得不能成佛的,因为大乘佛法就是这么说的,但是决定权不在玄奘,而是李世民,李世民杀了自己兄弟,你敢说他不能成佛?所以玄奘取回来的经并没有被李世民重视,到了李治更是软禁了玄奘,玄奘创立的唯识宗也失传了。 不要小看一阐提这个点,大乘佛法里你杀生就是有罪,但是杀一阐提不在此列,反而是好事。 西游记虽然写于明朝,但是宋元时期应该就有一些雏形了,孙悟空和唐僧的关于杀坏人的争论可能就来源于此,但是真正历史上的玄奘反而是支持一阐提可杀的。 到了小说里的灵山不是那么与世无争,可能就来源于当时对佛教的认知,惩罚他们认为的一阐提是合理的事,西游记里有非常多的佛菩萨惩罚凡人的事例,至于谁是一阐提,就是他们说了算了。 而到了游戏里灵山图夜叉族,大概也是因为夜叉族犯了一阐提相关的罪,但是这些罪只是以灵山为标准的罪,并不一定是天庭或者凡人界的,所以太上老君要留下把柄,为将来师出有名,好比以除异教徒为名的十字军东征
说说人种袋到底是什么 原著里弥勒说:他把我这几件宝贝拐来,假佛成精。那搭包儿是我的后天袋子,俗名唤作‘人种袋’。 后天相对先天,意思不是生来就有的,比如某些病先天性是生下来就得了的,后天性就是成长过程得的,但是强调后天又比较特殊,这两个词用的时候都是限定于自身,只是用来区分一个人出生前和出生后,作用域在于人本身,那人种袋就不是从外部得来的,而是由弥勒自身产生的。 也就是说,人种袋既不是弥勒身上任何一个部位,x囊说就是无稽之谈,也不是母体的子宫,也不是后来从其他地方得到的。 但是有一个东西比较特殊,就是羊膜,有一些小孩出生时羊膜没有破裂,生下来是被一层膜裹着的,那就满足了既与弥勒自身同源,又符合生下来之后的概念,虽然还是母体内产生的,但是伴随弥勒一同生下来。 加上弥勒未来佛的设定,人种袋既然装过弥勒,也相当于里面有一个弥勒未来时代的世界,所以西游记里特地安排了数量众多的神仙被吸进去,其实要说明的不是黄眉强大,而是说明人种袋里面特别大,因为里面藏着弥勒的世界。 还有一个故事是讲如来偷了弥勒的铁树花掌管世界,弥勒就把世上的好人都装到袋子里,后来燃灯找弥勒借人种袋,弥勒把人种袋里的好人转移到袖子里,结果漏了一些出去。这个故事估计是想以此说明世上好人少,因为好人都被弥勒留在袋子里。 同时也说明了另一件事,就是如来这个时代结束的时候可能大部分人都活不到弥勒的时代了,所以弥勒才把好人都保留起来,留作“人种”。
1 下一页