新人数值策划入门:如何用VBA做体力控制经验数值

来源:GameRes游资网 发布时间: 2016-04-15 17:53:18

新人数值策划入门:如何用VBA做体力控制经验数值 ...


  文/小强  

  本文仅为初学者了解VBA在数值建模中的基本用法作参考,所以用一个最简单的体力控制的经验模型举例。

  1、经验模型设定

  1.1、体力相关设定

新人数值策划入门:如何用VBA做体力控制经验数值 ...


  1.2、任务相关设定

新人数值策划入门:如何用VBA做体力控制经验数值 ...


  开启阶段根据开启等级和等级时间划分匹配而来,公式如下:

  SUMPRODUCT((W2>=$E$2:$E$9)*(W2<=$G$2:$G$9)*($D$2:$D$9))

  该公式的结果是,返回开启等级大于等级段最小值,并且小于等阶段最大值的等级阶段数。

  2、等级时间设定

  等级上限为80级,预期V0玩家60天左右满级。

  等级时间对应关系:

新人数值策划入门:如何用VBA做体力控制经验数值 ...


  单天体力计算方式:体力恢复*日小时数+每日赠送+升级补充*阶段升级数/阶段升级天数。

  第一天要单独计算:日小时数按照1/4来计算,然后还要额外加上初始的120点体力。

  这样我们就得到了一个可以设定升级感受,并能够随意调整的升级感受模板,然后在用每个阶段的单天体力值和每个阶段的任务总经验可以得到下表。

新人数值策划入门:如何用VBA做体力控制经验数值 ...


  任务经验的计算公式为:SUMPRODUCT((AB2=$Z$2:$Z$13)*($Y$2:$Y$13))

  该公式返回以一个列区域为数据源,并且阶段编号等于目标阶段编号的单元格的和。

  本文中多次用到SUMPRODUCT数组函数和VLOOKUP数据匹配函数,不明白的小白可以去百度上查看详细用法。

  3、VBA外部参数设定

  用excel做如下布局,如果不会的可以自行百度“怎么用开发工具、插入控件”:

新人数值策划入门:如何用VBA做体力控制经验数值 ...


  相关函数有:row,column(分别为获取单元格行数,获取单元格列数)

  点击“生成等级耗时”按钮指定新建宏,把宏命名为“生成等级耗时”。

  点击“直线型”按钮指定新建宏,把宏命名为“等级耗时直线型”。

  点击“曲线型”按钮指定新建宏,把宏命名为“等级耗时曲线型“。

  4、实现对应功能


  4.1、定义相关变量(会在其他模块解释变量的具体作用)

新人数值策划入门:如何用VBA做体力控制经验数值 ...


  4.2、实现选择按钮的功能

新人数值策划入门:如何用VBA做体力控制经验数值 ...


  相关函数:Application.VLookup("直线", Range("角色经验_VBA参数设定"), 3, False)

  该函数为在VBA中使用excel表格函数的使用方式,Range("角色经验_VBA参数设定")则为在vba中使用名称的方式,该名称的取值区域为上一个步骤做的参数设定。

  4.3、实现生成等级耗时数据功能


  4.3.1、给变量赋初值

新人数值策划入门:如何用VBA做体力控制经验数值 ...


  4.3.2、生成每一级升级消耗时间

新人数值策划入门:如何用VBA做体力控制经验数值 ...


  这个代码里面没有多少好解释的,就只是一个a*x+b和a*x*x+b和的逆推公式,其他知识点上文已有讲述,仔细分析下逻辑看看也就明白了。

  4.4、数据匹配,得到每一级的经验值

新人数值策划入门:如何用VBA做体力控制经验数值 ...


  升级经验的公式:

  VLOOKUP(SUMPRODUCT((A16>=$E$2:$E$9)*(A16<=$G$2:$G$9)*($D$2:$D$9)),$AB$1:$AE$9,4,FALSE)*C16

  用SUMPRODUCT函数,返回等级对应的等级阶段,然后用VLOOKUP匹配到该阶段的平均每日经验,再乘以升级该等级消耗的时间就得到了每一级的升级经验。

  4.5、效果展示

新人数值策划入门:如何用VBA做体力控制经验数值 ...


新人数值策划入门:如何用VBA做体力控制经验数值 ...


  经验值的折线图的走势和时间的走势大致相同。

  可以通过调整斜率和初始值对整个升级感受曲线进行更加细致的调整,详情可以下载本文附件查看。

扫描左侧二维码,关注微信公众号

即可获得游戏智库每日精彩内容推送,并且在第一时间获取游戏行业新鲜资讯。

APP 下载

扫描二维码
下载iOS或安卓APP
返回顶部