游戏强化系统的实现

1 强化概述

在游戏中,强化模块是我们经常需要实现的模块,一般来说,强化可以提供装备的等级,属性,或者品质。强化也需要一定的条件,比如银币等。


2 强化规则

初始装备的等级为1级

每强化一次,装备的等级提高一次

装备被强化的最高等级为10级

每次强化需要银币,且随着等级的不断升高,所需要的银币数量就增加

越高档次的装备,强化相同等级,需要的银币的数量越多

强化概率随着等级的升高而减少

不同档次的装备强化到相同等级时,概率相同

加入宝石,可以增加强化的概率

使用保护道具,强化失败后,也不损坏装备


3 强化结果

每次强化等级提升一次,同时,属性也有所增加,并且具有一定的概率

强化失败,装备摔坏

随着属性值的增加(所有增加的属性值的总和),装备的品质会发生改变。


4 强化的数据库设计

在游戏中,我们可以获取到2件相同的装备(备注:有的游戏不允许获取到两件一模一样的装备),如果我们有2件相同的装备,在数据库里面的存储就会有两种方式:堆叠和不堆叠。我们该如何选择存储方式呢?在我们的游戏中,因为装备涉及到强化,也就是说,起初,我获取到2件一模一样的装备 即装备的ID相同,如果我强化成功其中的一个,那么导致的结果是,我有了2件"不一样"的装备,虽然装备的ID是一样,但是它们的属性可能不一样。这样的设定就要求我们在存储这2件装备时,不能堆叠,否则,我就不知道,我到底强化的是哪一个装备。


强化系统中,设计的表: 我的装备表,装备配置表,强化配置表,宝石配置表,我的宝石表。


我的装备表设计:

这是我的一个装备的表的设计

备注: 我们的装备的类型可能不止一种,在我们命名装备的ID时,我们采用的方式是 装备的类型+装备的id 如:333001 333为装备的类型 001为装备的id

在这个表中,我们需要注意的是,equipped_by_usid 表中这个装备是否装配到我的某个船上,如果是0表示没有使用,如果不为零,则表示为我的船的id.在需求上,我们可能需要知道这个装备装配到了哪个船上,还有一个需求是,我需要知道我的船装配了那几个装备,所以,需要通过船的id找到他装配了哪些装备

cannon_num, armor_num, hp 这些属性是如果把这个装备装配到船上,改变船的对应的属性。


装备静态配置表:

在装备的配置表中,hp表示是这个装备装配到船上后,增加船的耐久度,还有一些改变船增益的属性,我没有列出来。

装备强化后,可能修改的属性有:hp,rank , inclination, sell_price 等。


强化的配置表:


这个表中,forged_level 表示的是强化到某个等级 cost_price 表示,强化到这个等级需要的银币 success_odds 表示强化到这个等级的概率

cannon_num_incr_config 这个属性的值是0:3250;1:4500;2:2250这样的类型 表示,强化后,增加0的概率是3250/10000 增加1的概率是4500/10000。


程序设计

在装备系统中,我们采用面向对象的面向思想设计,这是一个强化炉的对象,需要的属性操作强化的人,本次要强化的装备对象,是否使用保护道具,强化放入的宝石,本次强化的配置信息,强化后,更属性的增量, 强化后的结果清单等。

在强化炉里面,我们需要知道本次强化成功的概率,强化成功后属性增加的范围。执行强化操作后,增加装备的各个属性,增加强化记录等各种操作。


强化流程

强化前,我们需要知道被强化的装备对象,操作者的对象,本次强化成功的概率,强化成功装备属性增加的范围,是否使用了宝石等各种信息。

选择一个被强化的装备后,我们需要得到强化这个装备的各种信息。 这些操作是控制层Controller的函数

    public function beforefoundryAction()
    {
        // 准备强化的船首像 userFhId
        $userFhId = $this->getInt('uniq_id');

        // 是否选择了【圣殿祝福石】保护
        $u
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值