啥?游戏资源系统太复杂? 啥?你不会?一步一步带你分析并实现,源码直接拿走

目录

1.游戏资源的分类

2.游戏资源管理系统目标

3.系统设计

1.环境

2.实战

3.设计一个资源抽象类,作为所有资源类型的父类。

4.使用方式

5.定义一个资源的枚举,每种资源类型对应不同的处理类。

6.资源类型管理器,注册资源处理类,将资源类型和处理类进行绑定。

扫描二维码关注公众号,回复: 11950016 查看本文章

7.代码展示

总结:


资源是每个游戏都有的,是很重要的一部分,不管是什么样的游戏,都必然存在资源系统,资源是玩家在游戏内需要争取的奖励,有了资源才能发展,资源系统也是整个游戏的经济系统,是游戏产生持续吸引力的基础,好控制产出和消耗,从而控制游戏体验、付费需求等,关乎整个游戏的生命。作为服务端同学,怎么设计一个好的资源系统呐?继续往下看吧。

1.游戏资源的分类

比如王者荣耀内的金币,钻石,道具,武器,还有皮肤,vip等级等等,这些都可以作为游戏内资源。

王者荣耀:对局产出金币,金币购买英雄;活动产出钻石,钻石抽铭文和夺宝。充值购买皮肤资源。

比如我们游戏《精灵食肆》内的体力,金币,灵契,道具,掉落宝,活跃度等等这些都是作为资源管理。

2.游戏资源管理系统目标

因为游戏资源的复杂和情况多变,所有想设计一个好用的资源系统还是很复杂的。

面向策划的话就是尽可能的统一配置规则,并且容易配置,减少理解成本。

面向程序的目标就是容易扩展,随着游戏开发进程,越来越多的资源会加入系统,减少开发难度,提升开发效率。游戏内资源的产出和扣除是最重要的,任何资源出现问题的代码都是大问题,不可以忽视,因为资源就是玩家的时间和金钱,是私有财产,受保护的。

好配置,好扩展,统一处理。

3.系统设计

1.环境

编码语言:Java 8

IDE环境:IDEA

2.实战

下面以金币和道具两种资源进行设计,跟着我一步一步进行分析吧。

金币 是简单的数值资源,可以直接增加,减少,减少时不能小于0。

装备不是数值类的,需要单独记表保存,可以获得和使用,扣除的时候要验证玩家是否真的有这个道具,。

从上面的分析可以看出,两者的入库不相同,两者的逻辑判断也不同。

3.设计一个资源抽象类,作为所有资源类型的父类。

我们的资源基本上都可以增加,减少,检查是否可以增加,检查是否可以减少。因此我们创建四个方法供子类实现。

4.使用方式

在我们调用的时候,可能既需要增加资源,也要减少资源。

比如在商城中,需要消耗金币,然后获得道具,甚至其他的东西。在常规的开发中,肯定是先去减少金币,如果金币减少成功了,再去发给玩家道具。

能不能合并成一步呐?所以我们创建一个类似ResOp 的类,既可以添加也可以删除。同时为了能够多次增加和扣除资源,因此AbsRes 中 增加了一个merge的方法,用来合并同类型的资源,最后增加或减少时的一次操作。

5.定义一个资源的枚举,每种资源类型对应不同的处理类。

每种资源的逻辑是不同的,所以创建一个枚举类

6.资源类型管理器,注册资源处理类,将资源类型和处理类进行绑定。

7.代码展示

因为代码的长度问题就不贴出来了,这里只贴一下所有类的截图,具体的代码可以关注我公众号【香菜聊游戏】获取。你只需要修改一下包名就可以运行哦。有完整的注释。等你来拿。还有一点私心就是想让你帮我关注一下公众号,哈哈,完整代码哦。关注并回复【游戏资源系统源码】即可获取。

总结:

1、ResOp中增加资源或者扣除资源

  2、ResOp 对资源进行合并,整合,并分类。

  3、调用每种具体类型的类进行操作增加或者减少

基本的介绍了资源系统的设计实现,后面一些没有做具体的展示,源码可以关注公众号获取,如果觉得有困难,并且又感兴趣的小伙伴可以联系我。或者你有其他的更好的设计我们可以一起交流。坚持写不容易,希望能获得大家的支持,点赞,转发 三连,谢谢。点赞,点赞,点赞

常规福利时间

猜你喜欢

转载自blog.csdn.net/perfect2011/article/details/109126294