一个Roguelike类型H5游戏的服务器开发——成就系统

首先,这个游戏主要参考了贪婪洞窟的玩法和系统,大部分功能都与贪婪洞窟相同,即人物通过爬塔,每层刷怪捡宝箱来强化自身属性,有装备系统和技能系统,战斗是纯自动的回合制,说白了就是你一刀我一刀打死为止……
这里先说一下我首先接触的成就系统,其实说是成就,其实任务也是用的同一套东西,就是把各类操作的进度给记录下来,存在数组里面,根据不同的类型的成就(如终身成就、每日任务、每周任务等等)来创建不同的数组;
这个项目里我是用一组枚举类型作为数组的下标,然后也要有一个数组用于存储已经完成的成就和任务ID,这个是用来区分是否已经领奖的,大概的函数功能也不多,都是对数组进行数据的修改和存储,大概就那么几个功能:

  1. 将成就进度发送给客户端(这里需要和客户端约定好协议内容,协议相关的后面再说)
  2. 增加成就进度(直接在原有进度上增加)
  3. 设置成就进度(直接修改进度的值)
  4. 完成成就领奖
  5. 清空特定成就进度(如任务日常、周常等)

这里完成成就领奖可能是功能里面稍微复杂的,要判断好成就的完成情况,确定好了才给客户端发奖励,要注重逻辑顺序,不能信任客户端,发完奖了就要马上将完成的成就放入完成列表里,防止重复领奖,其中大部分的条件判断也是通过策划来进行配置的,需要有一些读取策划配置表的操作,各个字段也需要和策划协商好;
其余逻辑都比较简单,我用的这套服务器框架,会将一个功能模块里的函数都放在一个管理器里面(如果功能需求比较少就不需要了);
写好功能和函数之后,基本就是在需要的地方调用这些函数,来进行进度的记录;
这样想一想,作为我刚上手接触的功能模块,成就系统确实是比较简单的一块了……

未完待续……

你可能感兴趣的:(服务器)