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 100

        GrabPass
        {
            "_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手游,以后把这个功能美化优化一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/678142.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

神经网络是什么?有什么作用?

人工智能是当前的热门科技领域&#xff0c;在自动驾驶、金融服务、智能家居、零售和电商、工业制造、医疗领域、教育领域、交通领域、娱乐领域、能源管理、农业、航空航天等很多领域都有越来越多的应用。 发展人工智能&#xff0c;离不开算力&#xff08;芯片&#xff09;、算…

【Python】 Python装饰器的魔法:深入理解functools.wraps

基本原理 在Python中&#xff0c;装饰器是一种设计模式&#xff0c;用于修改或增强函数或方法的功能。functools.wraps是一个装饰器工厂&#xff0c;它用来帮助我们保持被装饰函数的元数据&#xff0c;比如函数的名字、文档字符串等。 当你创建一个装饰器时&#xff0c;你可能…

进口泰国榴莲注意事项 | 国际物流运输服务 | 箱讯科技

进口泰国榴莲&#xff0c;这个看似简单的行为背后其实隐藏着许多需要注意的细节和相关费用。下面小编带大家了解一下有哪些细节和费用需要注意。 01清关费用 进口泰国榴莲涉及的清关费用包括&#xff1a; 国外提货成本、港口服务费、报关手续费。 国际运输费&#xff0c;可能…

《幸福》期刊杂志投稿发表

《幸福》杂志是由国家新闻出版总署批准&#xff0c;武汉出版社主管&#xff0c;武汉市妇联和武汉出版社联合主办&#xff0c;面向全国发行的人文社科综合期刊。办刊宗旨&#xff1a;宣传普及科学知识及科学方法的研究&#xff1b;倡导新型的人际关系&#xff0c;推介健康的家庭…

Linux学习笔记8

介绍man命令 在Linux中&#xff0c;man命令用于查看系统手册页&#xff08;manual pages&#xff09;。系统手册页是关于各种Linux命令、函数库以及系统调用的详尽文档&#xff0c;能够提供关于命令的使用方法、参数说明、示例以及其他相关信息 可以利用man xxx的命令去查找某…

探索气象数据的多维度三维可视化:PM2.5、风速与高度分析

探索气象数据的多维度可视化&#xff1a;PM2.5、风速与高度分析 摘要 在现代气象学中&#xff0c;数据可视化是理解复杂气象模式和趋势的关键工具。本文将介绍一种先进的数据可视化技术&#xff0c;它能够将PM2.5浓度、风速和高度等多维度数据以直观和动态的方式展现出来。 …

Facebook与AI:探索人工智能在社交平台上的应用

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;社交媒体平台正利用这些先进技术为用户提供更为个性化和高效的体验。作为全球最大的社交媒体平台之一&#xff0c;Facebook在AI应用领域的探索和实践尤为引人注目。本文将深入探讨Facebook如何在其平台上应用…

23-通过JS代码处理click失效问题

有时候按钮元素已经定位到了&#xff0c;运行也没报错&#xff0c;点击后页面没有反应。这种问题是比较头疼的&#xff0c;因为没有任何报错&#xff0c;只是click事件失效了。本篇用两种方法解决这种诡异的点击事件失效问题。 一、遇到的问题 在百度的搜索设置中&#xff0c;…

VisionPro界面乱序或字体排版异常,字体不适应界面窗口大小

很多人在安装Visionpro后都遇到了一个界面显示异常的问题&#xff1a; 打开visionpro后字体大小不统一,显示不全或显示在其他窗口之上&#xff0c;如下所示。 解决该问题&#xff0c;首先关闭Visionpro软件&#xff0c;右击软件选择属性->兼容性。勾选兼容模式下面的方框。…

2024年6月4日13:48:07-3.8功能说明1.保存草稿2.支持自定义SKU销售规格3.全网爆款企划支持一键提交

创建产品产品保存草稿、自定义编辑规格功能使用手册 尊敬的淘工厂商家&#xff1a; 淘工厂近两个月收到很多商家对淘工厂发品&#xff08;上品&#xff09;效率提升的改进建议&#xff0c;淘工厂本月将针对产品发布页的发品效率提升上线一系列改进功能&#xff0c;希望能加速…

存内计算:硬件的未来,今日已来

引言 存内计算的概念 存内计算&#xff08;In-Memory Computing, IMC&#xff09;是一种创新的计算架构&#xff0c;它颠覆了经典的冯诺依曼范式&#xff0c;其中数据和指令存储与数据处理是分开的。在存内计算模型中&#xff0c;计算单元被直接集成到存储器内部&#xff0c;…

了解CAN功能

了解CAN功能&#xff0c;学习CAN功能&#xff0c;理解CAN和串口的区别&#xff0c;以及它和RS485的相似之处。 1、“多主机”特性 在CAN网络通讯中&#xff0c;无需其它设备同意&#xff0c;每个CAN设备都可以主动向外发送数据&#xff0c;且所有设备都会收到数据&#xff0c…

基于springboot实现智慧校园之家长子系统项目【项目源码】计算机毕业设计

基于springboot实现智慧校园之家长子系统演示 SpringBoot框架介绍 本课题程序开发使用到的框架技术&#xff0c;英文名称缩写是SpringBoot&#xff0c;在JavaWeb开发中使用的流行框架有SSH、SpringBoot、SpringMVC等&#xff0c;作为一个课题程序采用SSH框架也可以&#xff0c…

钙钛矿电池产业化进程加快 狭缝涂布机市场需求空间广阔

钙钛矿电池产业化进程加快 狭缝涂布机市场需求空间广阔 狭缝涂布机即狭缝式涂布设备&#xff0c;是一种将涂料均匀、精密涂布在样品表面的设备。狭缝涂布机通常由涂布模头、喷嘴、刮刀、供液泵、运动平台等部分组成&#xff0c;通过控制供液泵及速率&#xff0c;将涂料从喷嘴挤…

Mendix 创客访谈录|Mendix助力开发高手10日交付复杂应用,且支持移动端呈现

本期创客 莊秉勳 布鲁科技技术顾问 各位Mendix社群的夥伴好&#xff0c;我是莊秉勳&#xff0c;大家也可以叫我Danny。 我大學是資訊科學背景&#xff0c;在與Mendix相遇前&#xff0c;曾在一上市製造企業&#xff0c;擔任軟體工程師&#xff0c;負責企業內部軟體開發&#xf…

【iOS】Runtime

文章目录 前言一、Runtime简介二、NSObject库起源isaisa_t结构体cache_t的具体实现class_data_bits_t的具体实现 三、[self class] 与 [super class]四、消息发送与转发五、Runtime应用场景 前言 之前分part学习了Runtime的内容&#xff0c;但是没有系统的总结&#xff0c;这篇…

如何安装“Whistle客户端”在Windows系统?

一、下载 https://github.com/avwo/whistle-client?tabreadme-ov-file 二、安装 按照正常的应用程序进行安装 三、安装根证书 1、 2、下载证书后&#xff0c;双击证书&#xff0c;根据指引安装证书。证书安装过程&#xff0c;要确保证书存储到受信任的根证书颁发机构下。重…

指纹考勤系统

目录 1.课题研究目的和内容 1.1 课题研究目的 1.2 课题研究内容 2.系统总体方案设计及功能模块介绍 2.1总体方案设计 2.2 ATK-301模块介绍 2.3 TFTLCD显示功能模块介绍 2.4 蜂鸣器报警功能模块介绍 2.5 时钟模块介绍 3.系统硬件设计与实现 3.1 系统硬件电…

深度解析淘宝API接口:功能、限制与最佳实践

在当今日益繁荣的电商领域&#xff0c;淘宝作为中国最大的电子商务平台之一&#xff0c;其API接口为开发者提供了丰富的功能和数据资源。本文将深入解析淘宝API接口的功能、限制&#xff0c;并分享一些最佳实践&#xff0c;帮助开发者更好地理解和使用这些接口。 一、淘宝API接…

迎七一党史知识竞赛答题怎么做

迎七一党史知识竞赛答题&#xff0c;不仅是对于党史知识的检验&#xff0c;更是对于参赛者学习态度和综合能力的考量。在参与这类竞赛时&#xff0c;我们需要做好充分的准备&#xff0c;掌握一定的答题技巧&#xff0c;才能取得好的成绩。 首先&#xff0c;我们要深入了解竞赛…