zoukankan      html  css  js  c++  java
  • 运营活动需求实现

    平时游戏运营活动需求,看起来是蛮复杂的。事实上本质上任务系统或者成就系统类似。

    一般需求像这样:

    1. 活动有開始时间和结束时间要求。

    2. 活动给出的奖励也有開始时间和结束时间要求。

    3. 完毕活动须要做完几件事情(我们称作事件或者条件事件)。

    4. 相比較任务和成就系统,这样的活动条目非常少。


    分享一下我们的做法:

    1. 独立实现一个活动server。存储的DB也是独立。这种优点是,活动server和主逻辑server的全然分离的,DB数据能够随便清除,很easy维护。

    2. 主逻辑server,不断将事件通过网络协议的方式通知活动server;

    3. 主逻辑server,通知事件后。活动server将可能返回已完毕的活动条目。


    主逻辑server,没有什么好说的。考虑活动的特点。我们仅仅要无脑地将事件发给活动server。

    活动server实现几个地方略微讲究一下。

    1. 每次收到玩家登录消息时,就将全部未接受的活动项。自己主动接受下来。这里注意的一点事,即使这个活动開始时间未到。我们也接受下来。

    2. 收到事件通知时,要注意一下活动是否已经開始,和活动是否已经结束。1&2这样做的目的是,某个活动的開始的时候。玩家不用又一次登录。这个是比較重要体验问题。

    3. 完毕活动后,给主逻辑server发奖励的话,需要推断一下,当前时间是否是奖励发放时间范围内。


    举一个实际的样例:

    2014.10.1~2014.10.7充值的玩家,在2014.10.5~20.10.7期间,能获得双倍掉落的奖励。

    接受时间:2014.10.1~2014.10.7

    事件:充值

    奖励时间:2014.10.5~20.10.7

    奖励内容:双倍掉落

    1. 某个玩家登录时,活动server生成这个 活动任务 对象。

    2. 这个玩家充值的时候,活动server收到这个充值事件,仅仅要在2014.10.1~2014.10.7内。就推断该活动是否完毕。

    3. 玩家登录后。主逻辑server发一个空的通知事件,然后就收到双倍奖励内容,后面该干什么就干什么。


    这类需求头脑保持清醒。看似眼花缭乱的需求,实现起来很简洁。

  • 相关阅读:
    OpenGL Pixel Linked-List
    Unity multi_compile
    Bindless Textures
    chmod递归设置文件属性
    push submodule
    NodeJS Debugger
    重载new操作符
    OpenGL瓶颈
    NGUI架构和Draw Call合并原理
    字符串哈希函数(String Hash Functions)
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7267532.html
Copyright © 2011-2022 走看看