Unity游戏排行榜的制作与优化
前言
游戏排行榜是一个很重要的功能,在弱联网的单机游戏与网络游戏中排行榜都是非常重要的,今天我们来详细的讲解游戏排行榜的制作方案,主要有4个点:
对啦!这里有个游戏开发交流小组 里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。
游戏排行榜排序核心算法的实现
排序在游戏开发中是一种十分重要的算法,特别是对于海量的数据,高效的排序算法,是核心与关键,排行榜也是一样的,我们要对全服所有的排行榜的玩家做排序,每次玩家的数据有变化,就会引发排序,最终让我们把排行榜的排名拉取下来。排序算法的性能非常关键点,主流的排序算法都是非常成熟的,对于海量的服务器数据而言,排序算法也有核心的实现模块,这里我们是基于redis 来做排序,redis提供了一个有序列表的功能,内部实现了海量数据的排序,我们只要把数据提交给redis的有序集合, 然后redis就会给我们排序好,我们就可以拉排行榜前面的数据给客户端。排行榜的排序的核心算法全部由redis实现,我们直接用就可以了。
redis 添加一条记录: zadd table 权重 value, 往有序集合table里面添加一个带权重的数据,redis就会更具这个权重排序。
redis 获取排行榜的数据: zrang table start stop, 从有序集合中拉取从[start, stop]段的数据。还有反向排序等,原理一样。
排行榜服务器如何制作
有了redis server来帮我们做排行榜内核,为什么我们还有搞一个排行榜服务器呢?不直接让客户端直接操作我们服务端的redis server呢?这个主要是有几个因素:
a; 每个游戏分区,可能不一样,所以我们用一个排行榜服务器来管理这个概念;
c: 如果排序受到一些性能影响,我们可以让排序服务器保存榜单的最小的分数,如果分数小于这个最小分数,那么新进来的分数就可以不用参与排行,来解决排行性能问题。
d: redis有序集合里面存放的可能是能表示玩家的唯一UID,客户端显示排行榜,可能还要其它的数据,比如用户头像等,所以需要一个服务器来根据UID来组合出客户端所需要的数据信息。
排行榜服务器提供协议接口给客户端使用,客户端根据协议来给排行榜服务器发数据,排行榜服务器检查验证游戏数据的真实性与安全性后再更新到redis server。
Unity如何优化排行榜UI性能
Unity如何要如何展示有200项排行榜数据的榜单,性能才会好呢?我们先来看一基本的排行榜展示的信息与数据内容,来简单分析一下,这个是某游戏的排行榜,如图所示:
我们从排行榜中截取一个排行榜记录来分析一下,它的UI组成。如下图:
UI元素组成:
1: 要显示每一项数据的背景UI节点
2: 要显示排行数字的UI节点;
3: 显示玩家头像的一个或几个UI,还有mask等;
4: 显示玩家的等级节点;
5: 显示玩家的昵称节点;
6: 显示玩家的分数节点;
7: 显示一个玩家的礼物按钮节点,
从上面分析来看,每个排行榜的记录显示出来需要10~15个UI节点。
分析了可能的问题后,我们一般考虑从一下几个方面找手优化:
a: 减少显示的UI节点的数目,提升渲染性能。比如100项数据,其实我们滚动列表中能看到的也就只有10多项,所以我们可以做好数据分页,来做动态数据加载显示,比如每页10项显示的话,我们可以做30项,这样就可以做到动态加载,同时UI节点的数目可控。
C: 对于UGUI来说,可以把排行榜都部署到一个根节点下,根节点搞一个UGUI的Canvas组件,减少大量合并计算的开销。
本节的Unity游戏排行榜制作与优化分享就到这里,关注我们获得更多的Unity的课程。
Unity游戏排行榜的制作与优化相关推荐
- Unity常用模块设计 : Unity游戏排行榜的制作与优化
游戏排行榜是一个很重要的功能,在弱联网的单机游戏与网络游戏中排行榜都是非常重要的,今天我们来详细的讲解游戏排行榜的制作方案,主要有4个点: 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交 ...
- Unity游戏Mod/插件制作教程05 - 插件实例2: 简单功能实现
这一次的教程进行一个小小的功能实现,完整的制作一个插件.以Mirror这个游戏为例,插件的目标是当玩家按下空格时,有一定概率为玩家增加金钱,或者扣除玩家金钱.概率.增加的金钱.扣除的金钱都由配置文件决 ...
- Unity游戏Mod/插件制作教程03 - 插件实例1: HelloWorld
准备工作 作为编程类的教程,果然第一个需要来一个传统项目--HelloWolrd. 在开始之前,我先贴一个链接,这是BepInex官方的开发手册 https://bepinex.github.io/b ...
- 分享2D Unity游戏的动画制作经验
http://gamerboom.com/archives/76709 作者:Alex Rose Unity最近宣布推出额外的2D游戏支持,添加了Box 2D物理和一个精灵管理器. 但这里还是有些技巧 ...
- Unity游戏Mod/插件制作教程01 - BepInEx的安装和使用
前言 本章节为没有使用过BepInEx的同学进行BepInEx的安装和使用方面的介绍,如果你之前已经使用过并了解如何使用,可以直接跳过本章节. BepInEx下载 BepInEx的Github链接 h ...
- Unity游戏Mod/插件制作教程02 - 开发环境准备
前言 虽然本教程的目标读者是有C#基础的玩家,但是作为流程,基础的开发软件部分我还是要记录一下. 安装VisualStudio VisualStudio是我们开发插件最重要的工具,也许你习惯其他开发. ...
- Unity游戏Mod/插件制作教程06 - Harmony补丁基础
前言 通过之前的教程,我们已经知道如何编写基本的插件,如果你有C#和Unity的基础,这个时候已经可以做出一些功能了,比如通过按键修改游戏数据之类的.但是,这有很大的局限性,因为通常情况下,我们并不想 ...
- Unity 游戏2048:制作总结
本文乃Siliphen原创,转载请注明出处:http://blog.csdn.net/stevenkylelee 前言 最近开始学习unity.学习最好的方法是动手实践. 因为游戏2048画面简单,可 ...
- Unity游戏优化[第二版]学习记录6
以下内容是根据Unity 2020.1.01f版本进行编写的 Unity游戏优化[第二版]学习记录6 第6章 动态图形 一.管线渲染 1.GPU前端 2.GPU后端 3.光照和阴影 4.多线程渲染 5 ...
最新文章
- 【每日一题】4月1日题目 Rinne Loves Edges
- 文本数据增强+NER
- 局部放大_Origin教程|巧用ZOOM功能做数据对比和快速绘制局部放大图
- 如何在win10中安装ArcGIS10.2
- java 关闭启动日志,求助啊无法启动java了点开就是报错要求查看日志
- 在万彩手影大师上怎么制作微课_手势动画制作|万彩手影大师心得与教程
- java数据类型及运算符
- JDK默认是little-endian
- 通过WDS功能扩大无线网范围
- Datalogic得利捷推出物流应用领域全新标杆产品——AV900
- 网页背景音乐播放器html代码
- 博客前端模板源码(力荐)
- 集成运算放大器的应用——放大、加减、跟随、(滞回)比较器、阻抗匹配
- ImageView显示灰色图片
- C语言str函数系列
- 算法分析与设计实验报告——二分搜索算法的实现
- SSH常见问题及其解决方法
- Linux 内核树编译
- USACO-Runaround Numbers
- 将VSCode语言环境设置为中文