新人数值策划入门:如何用VBA做体力控制经验数值
发表于2016-04-18
文/小强
本文仅为初学者了解VBA在数值建模中的基本用法作参考,所以用一个最简单的体力控制的经验模型举例。
1、经验模型设定
1.1、体力相关设定
1.2、任务相关设定
开启阶段根据开启等级和等级时间划分匹配而来,公式如下:
SUMPRODUCT((W2>=$E$2:$E$9)*(W2<=$G$2:$G$9)*($D$2:$D$9))
该公式的结果是,返回开启等级大于等级段最小值,并且小于等阶段最大值的等级阶段数。
2、等级时间设定
等级上限为80级,预期V0玩家60天左右满级。
等级时间对应关系:
单天体力计算方式:体力恢复*日小时数+每日赠送+升级补充*阶段升级数/阶段升级天数。
第一天要单独计算:日小时数按照1/4来计算,然后还要额外加上初始的120点体力。
这样我们就得到了一个可以设定升级感受,并能够随意调整的升级感受模板,然后在用每个阶段的单天体力值和每个阶段的任务总经验可以得到下表。
任务经验的计算公式为:SUMPRODUCT((AB2=$Z$2:$Z$13)*($Y$2:$Y$13))
该公式返回以一个列区域为数据源,并且阶段编号等于目标阶段编号的单元格的和。
本文中多次用到SUMPRODUCT数组函数和VLOOKUP数据匹配函数,不明白的小白可以去百度上查看详细用法。
3、VBA外部参数设定
用excel做如下布局,如果不会的可以自行百度“怎么用开发工具、插入控件”:
相关函数有:row,column(分别为获取单元格行数,获取单元格列数)
点击“生成等级耗时”按钮指定新建宏,把宏命名为“生成等级耗时”。
点击“直线型”按钮指定新建宏,把宏命名为“等级耗时直线型”。
点击“曲线型”按钮指定新建宏,把宏命名为“等级耗时曲线型“。
4、实现对应功能
4.1、定义相关变量(会在其他模块解释变量的具体作用)
4.2、实现选择按钮的功能
相关函数:Application.VLookup("直线", Range("角色经验_VBA参数设定"), 3, False)
该函数为在VBA中使用excel表格函数的使用方式,Range("角色经验_VBA参数设定")则为在vba中使用名称的方式,该名称的取值区域为上一个步骤做的参数设定。
4.3、实现生成等级耗时数据功能
4.3.1、给变量赋初值
4.3.2、生成每一级升级消耗时间
这个代码里面没有多少好解释的,就只是一个a*x+b和a*x*x+b和的逆推公式,其他知识点上文已有讲述,仔细分析下逻辑看看也就明白了。
4.4、数据匹配,得到每一级的经验值
升级经验的公式:
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、效果展示
经验值的折线图的走势和时间的走势大致相同。
可以通过调整斜率和初始值对整个升级感受曲线进行更加细致的调整,详情可以下载本文附件查看。
看了上面的文章 热爱游戏创作的你是不是已经开始热血沸腾了呢?是不是迫不及待的想加入游戏团队成为里面的一员呢?
福利来啦~赶快加入腾讯GAD交流群,人满封群!每天分享游戏开发内部干货、教学视频、福利活动、和有相同梦想的人在一起,更有腾讯游戏专家手把手教你做游戏!