dnf手游版游玩感悟

2024-06-03 18:04
文章标签 感悟 dnf 游玩 手游版

本文主要是介绍dnf手游版游玩感悟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      dnf手游于5月21号正式上线,作为一个dnf端游老玩家,并且偶尔上线ppk,自然下载了手游版,且玩了几天。
      不得不说dnf手游的优化做到了极好的程度。
      就玩法系统这块,因为dnf属于城镇+地下城模式,相比现在的开放世界或者半开放世界3d手游,属于比较好优化的一类。
      比如城镇模块的切换进出口,做好加载卸载就能用时间换空间,通过加载进度页面掩盖卸载当前城镇加载下个城镇的目的。城镇中的各个区域的切换就不必考虑加载卸载了,一股脑都在场景里,通过坐标的移动和渐变黑屏的切换手法完成。
      再比如地下成的进入,同样使用加载卸载和进度页面,做到和城镇的互相切换。至于地下城不同房间,也是黑屏渐变切换+坐标移动即可。
      UI界面这块,dnf手游用到了动静分离和分帧加载。因为UI的绘制调用是以Canvas为单位的。所以当UI策划和UI设计师完成UI模块的设计后,UI程序根据实际的UI界面业务功能,将一个UI模块划分为永远不动的静态元素(如各个背景)+一直在动的活动元素(如动态生成的物品),配合UI对象池的使用。特别注意,此时的UI对象池设计上要考虑分帧生成的概念,比如要生成100个装备图标,不要在一帧内生成,此时如果一帧生成一个(或可配置个数)再缓存使用,则大大降低了单帧负载压力,可以让UI界面的响应速度加快。当然已经生成生成好的复杂UI界面,在退出时也可根据UI管理器的调度策略,并不销毁,而是移动坐标到视口外,再次使用则可快速加载。
      当然分帧加载的方案在需要高响应速度的地方都可以使用。
      地下城战斗系统这块,则是我的知识盲区了,虽然我做过卡牌战斗系统,但是和dnf这种手感的格斗游戏比起来,简直小巫见大巫,我一直觉得就手感这一块,没有超越dnf的格斗游戏。
      同时dnf手游有一点让我灵光一闪,很小的一个地方,就是子UI界面弹出,背景虚化这一块,如下:
在这里插入图片描述
      我已经好长时间没怎么做UI界面了,在我印象中,做子UI界面弹出的时候,为了怕和背景UI界面产生视觉上的融合,都会给一个黑色半透明背景,如下:
在这里插入图片描述

      感觉dnf手游这种高斯模糊挺好,虽然以前都用于3D和UI视觉分离这一块,但是移植到UI与UI之间也挺不错,这里顺便实现一下:

Shader "UIWindowPKG/UIBlurUnlitShader"
{Properties{_GaussSize("Guass Size",Range(0,10)) = 1}SubShader{Tags { "RenderType"="Opaque" }LOD 100GrabPass{"_GrabTexture"}Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv[9] : TEXCOORD0;float4 vertex : SV_POSITION;};int _GaussSize;sampler2D _GrabTexture;float4 _GrabTexture_TexelSize;static float gaussMatrix[9] = {0.05854983,0.09653235,0.05854983,0.09653235,0.1591549,0.09653235,0.05854983,0.09653235,0.05854983};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);float4 gpos = ComputeGrabScreenPos(o.vertex);float2 guv = float2(gpos.x/gpos.w,gpos.y/gpos.w);int c = 1;for (int x = 0; x < 3; x++){for (int y = 0; y < 3; y++){o.uv[x * 3 + y] = guv + _GrabTexture_TexelSize.xy*float2((y - c)*_GaussSize, (c - x)*_GaussSize); }}return o;}fixed4 frag (v2f i) : SV_Target{fixed4 col = fixed4(0,0,0,0);for(int k=0;k<9;k++){col += tex2D(_GrabTexture, i.uv[k])*gaussMatrix[k];}return col;}ENDCG}}
}

      原理就是GrabPass+一次高斯滤波,效果如下:

在这里插入图片描述
      我对比了一下dnf手游和一些3A游戏的做法,感觉dnf手游的实现属于效率低下且效果不好,dnf手游用了实时的_GrabPass采样,而不是像3A游戏一样用一次性的截图采样,好处是实时显示背景画面。同时dnf手游的滤波只用了一次,可能是为了性能考虑,虽然平衡了实时采样的损耗,但是效果却比较差。而3A游戏用了多次迭代滤波,对比效果则更加强烈,当然画面是“静止”的。
      继续打dnf手游,以后把这个功能美化优化一下。

这篇关于dnf手游版游玩感悟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1027714

相关文章

【转载】ACM感悟

今天看了一篇我们学校前辈的ACM的感悟,觉得写的十分有道理,这里转载,文章还会不断的改进和更新。 原文链接:http://www.cnblogs.com/Chierush/p/3760870.html?ADUIN=1339764596&ADSESSION=1401536826&ADTAG=CLIENT.QQ.5329_.0&ADPUBNO=26349 声明:本文是写给弱校ACM新手的一点

20180108文献综述书写感悟

在写文献综述理清各章节脉络的时候,发现了以下几个问题,共勉之。 1、资源对接问题:章节应该明确标注出处,来源,例如(from 百度/某篇文章链接),不写,则默认为原创。 以方便下一个接着写的同学清晰了解资料来源。 2、质量低:上任对发展史做了整理,但并没有输出成原创性文字,重新阅读加大理解成本,并且思路不新不全局不清晰,需要重新绘之。

作为面试官的一点点感悟,谈谈技术人的成长之路

因为工作上的原因,做过几次面试官,面试的同学有应届生,也有工作3-5年的老技术人。最近也频繁作为面试官帮助筛选候选人,中间有很多值得深思的东西,我记录了下来分享给大家。 以下观点仅为个人观点,不代表任何公司的立场。        01 面试不是简单的你问我答 一般来讲,作为面试官和候选人进行沟通的第一个问题是一般是自我介绍,整个自我介绍的情况应该控制在2分钟左右,阐述自己的教育背景,项目经历

一个计算机专业女孩的求学之路—七年之痒,痒之感悟

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 这是一个读者发表的个人随笔,在某论坛引起了大家的关注。讲述了一个计算机专业的同学求学的过往,个人深受感动。争得了作者的同意分享给大家。  小编个人大学四年加研究生三年求学经历亲身体会,大学首要在明智。知道自己未来要做什么,怎么做才是最重要的。 为了对作者个人隐私做保护,文中删除了个人相关信息。 毕业将至,步入社会,几张文凭,几张

Java中的重载感悟

引言 在面向对象编程语言中,方法重载(Overloading)是一种允许创建具有相同名称但参数列表不同的多个方法的功能。这种方法提高了代码的可读性和组织性,同时也简化了接口设计。本文将详细介绍Java中的方法重载概念、其实现方式以及一些最佳实践。 什么是方法重载? 方法重载是指在同一类中可以定义多个同名的方法,但是这些方法的参数列表必须有所不同。参数列表的不同可以体现在参数的数量、类型或顺序上。

面试礼仪 + 5.1回家必带+大学结束感悟

回家必带的: 身份证        采集信息        实习协议     学生证 要买的: 上衣衬衫, 脚部急眼, 教师证现场确认资料:正在准备启闭,下次回家太晚直接去报名 书(EQ太低了) -------------------------------- 回学校答辩4.28号 1: 还是的交流:很多信息不知道, 如答辩步骤,上传最新版论文,。。。。 5月8号成都信息工程

敢爱 感悟

<敢爱>  能力表现: 1 还剩700元,敢说没钱了(换做是我: 墨迹的最终还是说了) 2: 不掏钱,买个招财猫,叫别人沾光。。。 3: 欺骗总裁,上司都不敢。 只是把未来要做的事情,提前说了 (这都是能力,胆识 能呛住你) 4: 从四川回到总部一幅名画,送礼 5: 指出2点,很准准很到位。 工作能力强 ,(再加上处事能力) 6: 要交2个死党,主角有什么事了互相帮助

关于Spring和SpringMVC的一点感悟

一年前,我们项目最开始使用的SSH(spring+springmvc+hibernate),那时候项目经理搭建好了框架就交给了我们,后来在一次配置事务的过程中,出现了大名鼎鼎的no seesion。 网上查都是说事务没配置好,我选了好几种事务配置方法,其中只有注解有效,AOP切面配置事务都报错。 说实话一开始就走歪了,那时候不理解spring和springMVC的关系,web.xml配置文件都

C,C++语言学习感悟

用管理学思维学C,C++,从而来展现对C,C++的理解 C  函数  打工的                                函数模板  C++ 类(面向对象)管理者           类模板  框架/引擎----cocos2d-x   游戏开发 int cunkuang(int x,int y) 类型 名字     参数  ATM c语言模式: int main(

后端开发——实习感悟

学习后端开发已几载,加上前不久的实习让我感悟颇深,斗胆总结一下,也是告诫自己继续努力,共勉,再加油加油! 1.从小事做起,然后再扩展 无论是创建一个新的系统,还是添加功能到现有的系统中,我总是从一个简单到几乎没有任何所需功能的版本启动,然后再一步一步地解决问题,直到满意为止。我从来没有妄想过能够一步登天。相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中。 我很喜欢John G