农场游戏模块设计整理

本文介绍了作者设计的一款农场游戏的各个模块,包括道具管理、奖励系统、任务奖励、果树和鸭子管理、通知和留言功能。玩家通过完成任务获取道具,给果树浇水,待果树成熟后兑换水果。游戏中的奖励规则、任务条件和签到系统丰富了游戏玩法。此外,还讨论了任务抽象和概率抽奖工具类的设计。
摘要由CSDN通过智能技术生成

写这篇文章的目的是为了记录一下自己根据老板需求设计的农场游戏【毕竟也是一点点积累起来的 =-= 】:(简单的种树领水果类游戏,本人初次接触并且从头开始到迭代多次的第一款算是自己实现的游戏)
简单的说,就是每天做任务获得水滴等道具,给果树浇水。果树成长周期达到并且收获后达到足够的数量即可兑换指定的水果一箱。
**大概分为几个模块:**经过了几次的迭代。现在写的是比较完整的并且已经在使用中的模块,其中,我个人觉得比较重要的都加上了*号,持续更新。。。一次没法都加完

*道具管理

将最基础的可获得的物品设计为道具并且可以录入(用于各种奖励的物品选择)。其中,道具有自己的id和type。type可以用于分类(大类),可用于后面奖励的type随机等。id则用于确定道具其他属性和使用的效果

主要属性:

额外属性: 属性格式:id,code,value
(这个用于将一些特殊属性拆分出来,其实成长值也能,但是太麻烦了, =- =) 旨在根据code将特殊属性拆分(code这里用枚举,在使用和校验中会比较方便),并赋予其特殊处理值value。这样属性的扩展比较友好一点,比较不容易出现冗余字段。基础道具我都是做缓存存储,如有额外属性,并将其直接填入对应的道具属性中。
拆分出额外属性的好处: 1.减少字段冗余。2.可重复利用属性。**缺点:**设计和处理较扩展字段麻烦。
简单的说一下项目中道具的用途:1.增加成长值。2.翻倍浇水成长值(时间段内)3.增加结果
4.根据特殊type确认作用,如兑换其他道具等。

*奖励

这个也算是抽象的比较好的一个模块吧。主要分作:奖励规则,奖励条件(根据某些条件选取奖励),游戏中大部分奖励都是基于奖励规则来,然后条件拆分出多种模块(因为大部分条件都不同,所以设计了不同的逻辑表来实现)

主要属性:

其中道具类型有两个特殊的。高级种子和鸭子。这两个不属于基础道具用于如种树需要先有对应的种子。

奖励规则:

基本上,游戏中大部分的奖励,都是从此规则中来获取对应的奖励。奖励规则目的是为了确定奖励的物品,设计的时候,每条规则对应一种单物品。必要的字段:
物品id/种类type(用于在type内随机)
数量/数量范围
特殊标识:这个是用作标识特殊属性,如种子、鸭子、水果订单等。非基础道具需要特殊逻辑的。否则都是统一操作

奖励条件:

奖励条件大部分都是根据需求来,如设计时间段内,可获取礼包里面奖品有一定概率获取(对应奖励规则);种树得奖励;点赞兑换奖励;答题奖励;任务领取奖励等。。。也可以绑定多个奖励规则,并且单独设置获取概率。此处可以用上我的概率工具类
概率抽奖工具类(支持概率大于100抽奖)

签到奖励

设计支持设置自定周期内每天有不同的奖励
id,天数,峰值(用于达到峰值从最低循环),奖励id
签到表:id,user,last_sign_day,continue
其中可以根据最后签到日期和持续天数来判断此次签到

*任务奖励

任务这块也是大块的逻辑,因为其中的需要获取的动作大都不同,太分散。所以我只能对其中的校验做抽象,还没有想到一个比较好的方法:目前的方法,使用code+java枚举区分任务类型,其中,枚举中code对应的业务逻辑是固定的,但是条件/奖励都是不固定的。
从完成任务角度分,可以分成两种:前端判断/系统判断;前端判断即看xx60秒等;这样设计需要多一层校验,避免了使用code直接完成任务。以任务属性+枚举基础属性来实现任务的完成。

枚举属性:

根据需求,又将任务设置多种属性,通过对应的枚举。枚举属性相当于默认且固定的属性,不能更改却又涉及逻辑的属性。
历史累计:否,则算是当日任务
系统判断:是否是后台判断,后台判断不可用接口完成任务
是否需要数量:如果true,则需要校验触发该事件的次数,历史累计默认true

*任务属性:

数量条件: 需要xx次完成任务,当枚举数量true
时间段: 在xxx到xxx时间段内,可以完成任务
限制次数: 表示每日可以完成任务几次
冷却: 如果每日可完成多次,则间隔xx分钟
奖励: 选取奖励规则
重复完成: 这个可以加,但是目前没有需求。可以限制这个任务完成(限制次数)后,隔天无法再完成
因为任务大都有不同的完成条件,所以我分成两种code

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值