Unity设备分级策略
Unity设备分级策略
前言
之前自己做的设备分级策略,在此做一个简单的记录和思路分享。希望能给大家带来帮助。
分级策略
- 根据拟定的评分标准,预生成部分已知机型的分级信息,且保存在包内;
- 如果设备没有被评级过,则优先从预生成分级信息里找自己的机型;
- 如果没有预生成信息,则通过设备各个硬件数据权重来进行评分;
- 如果获取不到需要的硬件数据,则进行跑分;
- 根据最终的分数来判断设备档位,且进行对应的效果降级。
跑分逻辑
跑分脚本,在短时间内(10帧下,每帧渲染后的10ms内)尽可能多的绘制模型。通过绘制的个数来打一个分数,从而判断机型等级。

需要注意的是:跑分脚本必须要在闲时运行,且限制时间、CPU占用率,不能影响到正常的游戏体验。
有人可能会问,为什么是绘制多少个模型,而不是固定模型数量去判断时间了?
原因是出于以下几点考虑:
- 考虑到如果出现跑分流程,那么就是在启动游戏的阶段,把时间作为可控因素对玩家的风险更小;
- 限定时间不限定个数可以更好地体现出手机的能力,如果把每一帧看作一次机会的话,相当于一台手机有很多次机会进行测试,取最终的个数总和作为分数,更加具有说服力;
- 如果拿时间做评定标准一是跨度太小不好评定,二是不稳定因素较高,可能不准确。
分级标准
如何评定的分级标准呢?
一是从经验方面,二是从多台测试机数据反馈。
评分标准并不是定死了就不改,而是需要根据线上玩家实际情况不断迭代,最好能做到自动动态迭代。不同类型的游戏,评分标准也可能有不同。
评分等级及对应效果降级策略
| 分数 | 0-400 | 400-700 | 700-1000 |
| 等级 | 低端机 | 中端机 | 高端机 |
| 分辨率 | 50% | 75% | 100% |
| DPI | 50% | 75% | 100% |
| 最大帧率 | 30FPS | 45FPS | 60FPS |
| 是否使用低清资源 | 是 | 是 | 否 |
Android设备分数标准
| 内存大小(权重0.7) | 1024-2048 | 2048-3072 | 3072-4096 | 4096-6144 | 6144-8192 | 8192+ |
| 分数 | 100 | 300 | 500 | 700 | 800 | 1000 |
| CPU核数(权重0.1) | 2-4 | 4-6 | 6-8 | 8-10 | 10+ |
| 分数 | 100 | 300 | 600 | 800 | 1000 |
| CPU主频(权重0.1) | 1000-1500 | 1500-1800 | 1800-2000 | 2000-2500 | 2500+ |
| 分数 | 200 | 300 | 500 | 800 | 1000 |
| 显存大小(权重0.1) | 512-1024 | 1024-2048 | 2048-3072 | 3072-4096 | 4096+ |
| 分数 | 100 | 300 | 600 | 800 | 1000 |
iOS设备分数标准
苹果设备号
| 内存大小(权重1.0) | iPhone7.xxx | iPhone8.xxx | iPhone9.xxx |
| 分数 | 300 | 600 | 800 |
| 内存大小(权重1.0) | iPad5.xxx | iPad6.xxx | iPad7.xxx |
| 分数 | 300 | 600 | 800 |
跑分标准
| 模型绘制个数(权重1.0) | 0-4000 | 4000-10000 | 10000+ |
| 分数 | 300 | 600 | 800 |
未来可优化空间
- 玩家可以主动切换高中低等级;
- 除了图集之外的资源也使用低清包;
- 跑分功能及标准更加细化;
- 设备评级标准更加合理,动态适配调整;
- 打包时间尽可能的缩短;
- 自动动态最大帧率调整(参考阴阳师);
- 资源卸载逻辑分级。
相关文章:
Unity设备分级策略
Unity设备分级策略 前言 之前自己做的设备分级策略,在此做一个简单的记录和思路分享。希望能给大家带来帮助。 分级策略 根据拟定的评分标准,预生成部分已知机型的分级信息,且保存在包内;如果设备没有被评级过,则优…...
自己在开发AI应用的过程总结的 Prompt - 持续更新
自己在开发AI应用的过程总结的 Prompt - 持续更新 0. 引言1. 让模型以"中文"进行回复2. 控制模型仅输出"hi"3. 让模型"提供简单、清晰而具体的回答"4. 让模型"在最后说谢谢" 0. 引言 我想,我们多半有着相似的经历…...
STM32——OLED菜单
文章目录 一.补充二. 二级菜单代码 简介:首先在我的51 I2C里面有OLED详细讲解,本期代码从51OLED基础上移植过来的,可以先看完那篇文章,在看这个,然后按键我是用的定时器扫描不会堵塞程序,可以翻开我的文章有单独的定时…...
Open CASCADE学习|布尔运算后消除内部拓扑
在CAD建模中,布尔运算是一种逻辑运算方法,通过这种方法,可以创建、修改或组合几何对象。布尔运算主要包括并集(UNION)、交集(INTERSECT)和差集(SUBTRACT)三种运算。 并集…...
【数据仓库】主题域和数据域
数据域与主题域区别 https://www.cnblogs.com/datadance/p/16898254.html 数据域是自下而上,以业务数据视角来划分数据,一般进行完业务系统数据调研之后就可以进行数据域的划分。针对公共明细层(DWD)进行主题划分。主题域则自上而…...
C#,二分法(Bisection Method)求解方程的算法与源代码
1 二分法 二分法是一种分治算法,是一种数学思维。 对于区间[a,b]上连续不断且f(a)f(b)<0的函数yf(x),通过不断地把函数f(x)的零点所在的区间…...
Portainer安装/快速上手
前置: 管理docker容器的工具 Portainer: Container Management Software for Kubernetes and Docker https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux 官网安装教程 Install Portainer CE with Docker on Linux - Portainer Documentat…...
恢复被.target勒索病毒加密的数据文件:拒绝向.target勒索病毒支付赎金
引言: 在当今数字时代,勒索病毒已成为网络安全领域的一大威胁,而.target勒索病毒是其中引起广泛关注的一种变种。本文将深入探讨.target勒索病毒的特点以及被其加密的数据文件恢复方法。数据的重要性不容小觑,您可添加我们的技术…...
【Linux网络编程六】服务器守护进程化Daemon
【Linux网络编程六】服务器守护进程化Daemon 一.背景知识:前台与后台二.相关操作三.Linux的进程间关系四.自成会话五.守护进程四步骤六.服务器守护进程化 一.背景知识:前台与后台 核心知识就是一个用户在启动Linux时,都会给一个session会话&a…...
MySQL之json数据操作
1 MySQL之JSON数据 总所周知,mysql5.7以上提供了一种新的字段格式json,大概是mysql想把非关系型和关系型数据库一口通吃,所以推出了这种非常好用的格式,这样,我们的很多基于mongoDB的业务都可以用mysql去实现了。当然…...
【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(5)数据管理
今天学习了数据管理,以及数据管理和数据治理的区别和联系。 数据管理:利用计算机硬件和软件技术对数据进行有效的收集、存储、处理和应用的过程其目的在于充分有效地发挥数据的作用。 实现数据有效管理的关键是数据组织。 数据管理和数据治理的区别&am…...
Linux满载CPU和运行内存的方法
查询CPU详细信息命令如下: 查看物理CPU型号: cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo…...
每日五道java面试题之java基础篇(九)
目录: 第一题 你们项⽬如何排查JVM问题第二题 ⼀个对象从加载到JVM,再到被GC清除,都经历了什么过程?第三题 怎么确定⼀个对象到底是不是垃圾?第四题 JVM有哪些垃圾回收算法?第五题 什么是STW? 第…...
spring @Transactional注解参数详解
事物注解方式: Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: 1 Transactional public class TestServiceBean implements TestService {}当类中某些方法不需要事物时: Transactional public class TestServiceBean implements TestService {private…...
D - 串结构练习——字符串连接
串结构练习——字符串连接 Description 给定两个字符串string1和string2,将字符串string2连接在string1的后面,并将连接后的字符串输出。 连接后字符串长度不超过110。 Input 输入包含多组数据,每组测试数据包含两行,第一行代表s…...
什么样的服务器是高性能服务器?
首先,高性能服务器应具备高处理能力。随着业务的不断扩展和数据量的爆炸性增长,高性能服务器需要具备强大的计算能力,能够快速处理各种复杂的业务和数据。这要求高性能服务器采用先进的处理器技术,如多核处理器、GPU加速等&#x…...
数学建模【线性规划】
一、线性规划简介 线性规划通俗讲就是“有限的资源中获取最大的收益”(优化类问题)。而且所有的变量关系式都是线性的,不存在x、指数函数、对数函数、反比例函数、三角函数等。此模型要优化的就是在一组线性约束条件下,求线性目标…...
ChatGPT的大致原理
国外有个博主写了一篇博文,名字叫TChatGPT: Explained to KidsQ」, 直译过来就是,给小孩子解释什么是ChatGPT。 因为现实是很多的小孩子已经可以用父母的手机版ChatGPT玩了 ,ChatGPT几乎可以算得上无所不知,起码给小孩…...
蓝桥杯备赛_python_BFS搜索算法_刷题学习笔记
1 bfs广度优先搜索 1.1 是什么 1.2怎么实现 2案例学习 2.1.走迷宫 2.2.P1443 马的遍历 2.3. 九宫重排(看答案学的,实在写不来) 2.4.青蛙跳杯子(学完九宫重排再做bingo) 2.5. 长草 3.总结 1 bfs广度优先搜索 【P…...
轮播图的五种写法(原生、vue2、vue3、react类组件,react函数组件)
轮播图效果是一种在网页或应用程序中展示多张图片或内容的方式,通常以水平或垂直的方式循环播放。本文使用原生、vue2、vue3、react类组件,react函数组件五种写法实现了简单的轮播图效果,需要更多轮播效果需要再增加样式或者动画。 淡入淡出效果:每张图片渐渐淡入显示,然后…...
WebGLInput:重构Unity WebGL输入体验的革命性方案
WebGLInput:重构Unity WebGL输入体验的革命性方案 【免费下载链接】WebGLInput IME for Unity WebGL 项目地址: https://gitcode.com/gh_mirrors/we/WebGLInput 在Unity WebGL开发中,输入法支持一直是开发者面临的核心挑战之一。WebGLInput项目通…...
告别SQLite!用ObjectBox为Flutter应用打造高性能本地存储(含常见报错解决方案)
告别SQLite!用ObjectBox为Flutter应用打造高性能本地存储(含常见报错解决方案) 在移动应用开发中,本地数据存储方案的选择直接影响着用户体验和应用性能。对于Flutter开发者来说,SQLite长期以来都是默认选择࿰…...
深度解析PDFMathTranslate:揭秘AI如何实现毫秒级学术文档翻译与精准排版保留
深度解析PDFMathTranslate:揭秘AI如何实现毫秒级学术文档翻译与精准排版保留 【免费下载链接】PDFMathTranslate PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/Op…...
既然有 HTTP 协议,为什么还要有 RPC?
HTTP 和 RPC 都能解决网络通信问题,但它们的设计初衷和适用场景截然不同。简单来说,HTTP 是为了通用性和跨平台设计的(像万能的集装箱),而 RPC 是为了极致的性能和开发效率设计的(像工厂内部的高速流水线&a…...
LFM2.5-1.2B-Thinking-GGUF实操手册:自定义system prompt提升领域适配性
LFM2.5-1.2B-Thinking-GGUF实操手册:自定义system prompt提升领域适配性 1. 模型简介与核心优势 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。该模型采用GGUF格式和llama.cpp运行时,在保持高性…...
如何快速实现Font Awesome图标字体文件格式转换:终极在线工具指南
如何快速实现Font Awesome图标字体文件格式转换:终极在线工具指南 【免费下载链接】Font-Awesome The iconic SVG, font, and CSS toolkit 项目地址: https://gitcode.com/GitHub_Trending/fo/Font-Awesome Font Awesome作为一款标志性的SVG、字体和CSS工具包…...
AI原生应用的微服务架构设计模式
AI原生应用的微服务架构设计模式:用智能餐厅的故事讲透AI与微服务的碰撞关键词:AI原生应用、微服务架构、设计模式、模型生命周期、实时数据流摘要:当AI大模型、边缘计算和实时决策需求爆发时,传统单体架构已无法满足AI应用的动态…...
TuShare实战(二)高效构建多股数据面板
1. 为什么需要多股数据面板 做量化投资的朋友都知道,数据准备是最基础也最耗时的环节。想象一下,你正在研究一个投资策略,需要同时分析5只股票的历史走势。如果每次都要单独获取、整理每只股票的数据,那效率实在太低了。这就是为什…...
GitHub Trending 每日精选 - 2026-03-27
GitHub Trending 每日精选 - 2026-03-27 📈 今日概览 今天是 2026-03-27,GitHub Trending 榜单上有哪些值得关注的开源项目?注:此博客为自动化生成,系统会在每日运行时获取最新 Trending 数据并填充具体项目信息。&…...
QMK Toolbox:机械键盘固件定制与刷写全攻略
QMK Toolbox:机械键盘固件定制与刷写全攻略 【免费下载链接】qmk_toolbox A Toolbox companion for QMK Firmware 项目地址: https://gitcode.com/gh_mirrors/qm/qmk_toolbox 一、核心价值:重新定义键盘控制自由 QMK Toolbox 作为开源硬件领域的…...
