归档 2019年6月

最后更新于 .

游戏内小红点算是一个极其常用的功能了,之前在德州里面也有过实现。
然而之前的实现实在是乱七八糟,所以这次也是将其做了彻底的重写,并把方案跟大家分享一下。

所有小红点的生成都是由服务器来实现的,区别在于小红点怎么清除的。 基于这一点,我们将游戏内小红点可以分为两类:

  1. 服务器自动清除小红点

    比如,我们常见的每日任务,成长任务,活动等。
    以每日任务举例:
    当有任务奖励可以领取时,在每日任务按钮上就显示小红点。
    当任务奖励全部领取完毕后,小红点消失。

  2. 客户端主动清除小红点

    比如,信箱功能,新好友通知,好友申请通知。
    以信箱举例:
    有新邮件,则信箱按钮就显示小红点。
    打开信箱后,如果信箱内分标签页,则判断标签页下的邮件列表,如果有新邮件,则在标签上显示小红点。
    当标签页打开之后,标签页上小红点消失。 当所有标签页的小红点都消失后,信箱按钮上的小红点消失

接下里我们说一下具体的实现。

首先,所有小红点的状态,在用户登录的时候,就应该返回。
所以我们在登录协议里面增加了一个red_points字段.

repeated int32 red_points = 1;

我们为每种小红点定义了一种类型,在red_points中即代表有小红点,否则代表没有。

而当进入游戏后,小红点的状态是可能动态变化的。所以我们需要定义一个主动下发的协议,通知小红点状态变化。

message EvtRedPointsChanged ...

最后更新于 .

其实第一次创业在技术上还是有不少历史问题的,所以在第二次创业就趁机做了很多弥补,下面详细说一下。

一.运行环境升级

直接列在这里

centos 6.5 x64  -> centos 7.5 x64
mysql 5.5       -> mysql 5.7
redis 2         -> redis 4
python 2.7      -> python 3.7
django 1.6      -> django 2.1
protobuf 2      -> protobuf 3

老版本有很多的问题,比如mysql5.5的性能问题,redis的dump性能问题,python2的中文处理问题,django1.x系列无法自动migrate,protobuf 2的default混乱问题 ...

每日归档

上个月

2019年5月

归档