游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10350|回复: 9

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

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2016-4-15 13:28:11 | 显示全部楼层 |阅读模式
54fbb2fb43166d2293c57c1c462309f79152d28c.jpg

  文/小强  

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

  1、经验模型设定


  1.1、体力相关设定

1.jpg

  1.2、任务相关设定

2.jpg

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

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

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

  2、等级时间设定

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

  等级时间对应关系:

3.jpg

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

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

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

4.jpg

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

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

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

  3、VBA外部参数设定

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

5.jpg

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

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

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

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

  4、实现对应功能


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

QQ截图20160415132207.jpg

  4.2、实现选择按钮的功能

6.jpg

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

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

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


  4.3.1、给变量赋初值

7.jpg

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

8.jpg

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

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

9.jpg

  升级经验的公式:

  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、效果展示

10.jpg

11.jpg

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

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

  相关阅读策划如何用VBA调试游戏数值
如何用VBA做经验数值.docx (108.63 KB, 下载次数: 910)


0

主题

7

帖子

33

积分

注册会员

Rank: 2

积分
33
发表于 2016-4-15 16:21:54 | 显示全部楼层
新人找不到附件。。。

0

主题

1

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2016-4-18 00:19:59 | 显示全部楼层
刚入行的时候喜欢看这种帖子,觉得高大上,久了发现有时间搞这种东西,还不如多玩几把自己的游戏。。

0

主题

1

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2016-4-18 10:24:15 | 显示全部楼层
看不到附件

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
 楼主| 发表于 2016-4-18 15:48:00 | 显示全部楼层
117654042 发表于 2016-4-18 10:24
看不到附件

附件已上传

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
 楼主| 发表于 2016-4-18 15:49:09 | 显示全部楼层
Fiki_Qi 发表于 2016-4-15 16:21
新人找不到附件。。。


1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
 楼主| 发表于 2016-4-18 15:50:27 | 显示全部楼层
Fiki_Qi 发表于 2016-4-15 16:21
新人找不到附件。。。

附件刚刚传上去,抱歉哈

0

主题

17

帖子

194

积分

注册会员

Rank: 2

积分
194
发表于 2016-4-21 10:05:18 | 显示全部楼层
遇到不用VBA解决不了的问题的那一刻,才是真正需要VBA的时候
新人入门不推荐使用复杂的工具
EXCEL函数、数组、图表、名称等都够新人从入门级修到高手级
作为设计师,如何使用简单的工具解决复杂的问题,本身就是一项必修课

0

主题

1

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2016-4-21 10:41:49 | 显示全部楼层
附件里面没有excel所以不知道对应哪行哪列. 请问能把excel发一下吗{:3_61:}{:3_61:}

0

主题

2

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2016-4-22 17:00:47 | 显示全部楼层
没有EXCL表,完全看不懂函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-26 13:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表