前言

游戏排行榜是一个很重要的功能,在弱联网的单机游戏与网络游戏中排行榜都是非常重要的,今天我们来详细的讲解游戏排行榜的制作方案,主要有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游戏排行榜的制作与优化相关推荐

  1. Unity常用模块设计 : Unity游戏排行榜的制作与优化

    游戏排行榜是一个很重要的功能,在弱联网的单机游戏与网络游戏中排行榜都是非常重要的,今天我们来详细的讲解游戏排行榜的制作方案,主要有4个点: 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交 ...

  2. Unity游戏Mod/插件制作教程05 - 插件实例2: 简单功能实现

    这一次的教程进行一个小小的功能实现,完整的制作一个插件.以Mirror这个游戏为例,插件的目标是当玩家按下空格时,有一定概率为玩家增加金钱,或者扣除玩家金钱.概率.增加的金钱.扣除的金钱都由配置文件决 ...

  3. Unity游戏Mod/插件制作教程03 - 插件实例1: HelloWorld

    准备工作 作为编程类的教程,果然第一个需要来一个传统项目--HelloWolrd. 在开始之前,我先贴一个链接,这是BepInex官方的开发手册 https://bepinex.github.io/b ...

  4. 分享2D Unity游戏的动画制作经验

    http://gamerboom.com/archives/76709 作者:Alex Rose Unity最近宣布推出额外的2D游戏支持,添加了Box 2D物理和一个精灵管理器. 但这里还是有些技巧 ...

  5. Unity游戏Mod/插件制作教程01 - BepInEx的安装和使用

    前言 本章节为没有使用过BepInEx的同学进行BepInEx的安装和使用方面的介绍,如果你之前已经使用过并了解如何使用,可以直接跳过本章节. BepInEx下载 BepInEx的Github链接 h ...

  6. Unity游戏Mod/插件制作教程02 - 开发环境准备

    前言 虽然本教程的目标读者是有C#基础的玩家,但是作为流程,基础的开发软件部分我还是要记录一下. 安装VisualStudio VisualStudio是我们开发插件最重要的工具,也许你习惯其他开发. ...

  7. Unity游戏Mod/插件制作教程06 - Harmony补丁基础

    前言 通过之前的教程,我们已经知道如何编写基本的插件,如果你有C#和Unity的基础,这个时候已经可以做出一些功能了,比如通过按键修改游戏数据之类的.但是,这有很大的局限性,因为通常情况下,我们并不想 ...

  8. Unity 游戏2048:制作总结

    本文乃Siliphen原创,转载请注明出处:http://blog.csdn.net/stevenkylelee 前言 最近开始学习unity.学习最好的方法是动手实践. 因为游戏2048画面简单,可 ...

  9. Unity游戏优化[第二版]学习记录6

    以下内容是根据Unity 2020.1.01f版本进行编写的 Unity游戏优化[第二版]学习记录6 第6章 动态图形 一.管线渲染 1.GPU前端 2.GPU后端 3.光照和阴影 4.多线程渲染 5 ...

最新文章

  1. 【每日一题】4月1日题目 Rinne Loves Edges
  2. 文本数据增强+NER
  3. 局部放大_Origin教程|巧用ZOOM功能做数据对比和快速绘制局部放大图
  4. 如何在win10中安装ArcGIS10.2
  5. java 关闭启动日志,求助啊无法启动java了点开就是报错要求查看日志
  6. 在万彩手影大师上怎么制作微课_手势动画制作|万彩手影大师心得与教程
  7. java数据类型及运算符
  8. JDK默认是little-endian
  9. 通过WDS功能扩大无线网范围
  10. Datalogic得利捷推出物流应用领域全新标杆产品——AV900
  11. 网页背景音乐播放器html代码
  12. 博客前端模板源码(力荐)
  13. 集成运算放大器的应用——放大、加减、跟随、(滞回)比较器、阻抗匹配
  14. ImageView显示灰色图片
  15. C语言str函数系列
  16. 算法分析与设计实验报告——二分搜索算法的实现
  17. SSH常见问题及其解决方法
  18. Linux 内核树编译
  19. USACO-Runaround Numbers
  20. 将VSCode语言环境设置为中文

热门文章

  1. 【Proteus仿真】【51单片机】洗衣机控制系统设计
  2. 《瞬息全宇宙》评论乌龙刷评翻车 水军机器人何时能休?
  3. 1、网上找的win7 hook winlogon实现禁用CTRL+ALT+DEL
  4. 前端通用下载文件方法(兼容IE10及以上)
  5. 室内空气污染超标,新房装修如何去除甲醛浓度?
  6. CJ20N/CJ11/CJ12/CJ13 - WBS屏幕增强(SMOD: CNEX0007)
  7. 深度学习训练营之优化器对比
  8. 吴恩达 机器学习 ex3
  9. 定时器中断控制led灯闪烁
  10. 95.第十九章 MySQL数据库 -- 单表操作(五)