游戏系统数值建模过程设计
作为一名数值策划,不仅要学会如何搭建游戏数值架构这类宽而泛的事物,也应该要懂得针对系统策划设计出来的单个系统或者单个玩法,进行单个系统或玩法内部的数值建模,以及数值调优,以满足系统策划对其的各种合理预期。在进行数值建模的过程中,你需要针对提供的这个系统或玩法,事先考虑在数值上预留一定的扩展性(如果单个系统或玩法的规则有修改,则不是数值上的问题,需要修改代码逻辑),让我们在数值参数的调整上提升效率。
以下就某游戏的一个玩法来进行单玩法的数值建模及后续数值调优设计。
熟悉的同学应该都知道这是《神武2》中的幸运转转乐玩法,大致讲一下这个玩法内容以及规则:
- 玩家每天完成一些任务或者活动,能够获得一定点数的活跃度
- 每满50点活跃度获得1次掷骰子机会
- 每天最多可获得4次机会,显示在【剩余机会】中
- 剩余机会仅当天有效,如果没有用完,隔天会重置为0
- 掷骰子时,2个骰子的总点数就是小鸡在环形图中走的步数
- 小鸡走到某个格子处,就能获得相应格子里的奖励
- 如果遇到高级奖励(珍兽之灵、神兽之灵、高级兽决),会在传闻频道中进行公告(上电视)
- 如果小鸡走到了【起点】处,没有奖励,并额外获得1次掷骰子机会
- 格子中的奖励有碎片,集齐一定数量的碎片可以兑换右下角相应的奖励
- 好了,整个的玩法规则就是这样,现在开始进行数学模型的建立。
数学模型建立的目的
这个玩法中,我主要是想知道在多次掷骰子的情况下,平均一次我能够获得多少价值的奖励。
需要用到的输入数据
基于上面建模的目的,玩法中的某些数据是用不到的。
- 活跃度:这个数据只会影响掷骰子的机会次数,而建模时掷骰子次数是作为输入项,因此不需用到。
- 兑换所需数量:跟建模无关,不需用到
用到的数据列表如下
说明一下,输入数据统一用绿色标识,建模后需要查看的数据统一用橙色标识;格子数量和格子价值在Excel表中用两列来输入数据(这里为了显示方便做了分列处理)
可以看到,在这样的输入数据下,我们可以对骰子个数进行改动(以前一次只能掷2个骰子,现在可以修改为掷任意多个骰子)、对总的格子数进行改动、对每个格子里物品的价值进行改动。这样,即是为建模做了数值上的扩展,但如果你想让玩家能够选择掷一个或者两个骰子,那么就需要到代码中进行规则的修改。以上,是对输入数据上的数值扩展,后面会讲到对结果数据上的扩展。
编写代码进行规则模拟
以下,开始编写代码进行模拟。模拟过程主要分为3部分:数据录入、数据处理(逻辑规则运算)、输出结果并显示。这3部分都会在下面的代码中得以展示。
1 Option Explicit 2 3 Sub shenwu() 4 Dim pos() As Integer, value() As Integer 5 Dim startPos As Integer, times As Integer 6 Dim n As Integer, i As Integer 7 8 n = Application.WorksheetFunction.count(Range("J:J")) 9 10 ReDim pos(0 To n - 1) As Integer 11 ReDim value(0 To n - 1) As Integer 12 13 For i = 0 To n - 1 Step 1 14 pos(i) = Range("J" & i + 2).value 15 value(i) = Range("K" & i + 2).value 16 Next 17 18 startPos = Range("O1").value 19 times = Range("O2").value 20 21 Dim totalValue As Long 22 Dim random As Integer 23 Dim midPos As Integer 24 25 totalValue = 0 26 27 For i = 1 To times Step 1 28 random = Application.WorksheetFunction.RandBetween(1, 6) + Application.WorksheetFunction.RandBetween(1, 6) 29 startPos = (startPos + random) Mod n 30 While startPos = 0 31 random = Application.WorksheetFunction.RandBetween(1, 6) + Application.WorksheetFunction.RandBetween(1, 6) 32 startPos = (startPos + random) Mod n 33 Wend 34 totalValue = totalValue + value(startPos) 35 Next 36 37 Range("O4").value = totalValue 38 Range("O5").value = Round(totalValue / times, 0) 39 End Sub
View Code
可以看到,最开始的几行代码是将Excel中的数据保存到代码的相关变量中,For循环这段代码开始对我们设定的掷骰子次数进行一次次的模拟运算,最后将结果保存在totalValue中。For循环外下面的几行代码,则是将结果显示到Excel表中,方便结果分析优化。
这段代码没有去用骰子个数,而是直接用2个randbetween()函数来实现掷骰子行为;如果需要进行骰子个数扩展,可以使用For循环实现。
输出数据扩展
上面的代码已经能够满足我建模的目的:得到多次掷骰子情况下,平均一次能够获得的物品价值。不仅如此,如果我们需要观察每一次掷骰子的结果,上述代码也是可以实现的。每次更新startPos后,将这个startPos以及对应的value(startPos)输出显示到Excel上即可。这样,就对输出数据进行了一定程度的扩展。
对于输出数据的扩展,基本上都需要改动代码,但尽量保证在原有的代码上进行代码添加,而不是修改代码,这是在建模过程中的一个好习惯。
数值调优
数值调优过程,是一个在现有规则不变的情况下,不断调整优化输入数据,使输出数据满足策划预期的一个过程。
这里,我们可以通过不断的调整格子的数量以及每个格子里的物品(即物品价值),使最终的平均价值达到给定的预期为止。到这一步,就是纯工作量的问题了,就不细说了。
后续额外需求
一般而言,当你建模完成后,还是会遇到策划临时添加其他需求的情况,那么此时应该怎么处理?假如这个时候有一个需求,我希望有5%的机会能上电视(上面规则有提到,如果获得高级物品,能够上电视)。那么,如何完善之前的建模来满足这个需求呢?
- 首先,记录格子里的高级物品数量以及所在格子位置。
- 然后,在每次的掷骰子模拟中,对获得高级物品事件进行计数。
- 再次,打印显示上电视的次数。
- 最后,不断进行数值调优,调整高级物品数量和位置,使上电视次数/模拟次数接近5%(肯定有浮动)。
以上,将之前的模型加以了补充和完善,满足了后续的额外需求。
后话
当完成一个系统或者一个玩法的时候,系统策划、数值策划最好能够事先就把数值需求确定清楚、完整,后面数值策划在进行建模的时候,就不用过多的修改代码,而只需要进行数值调优,快速的完成一个系统或一个玩法的数值工作,这样,效率才会大大提升。
转载于:https://www.cnblogs.com/architecture101-gbt/p/8303557.html
游戏系统数值建模过程设计相关推荐
- 十全干货:核心游戏系统架构设计
http://www.gameres.com/677342.html 文/AI分享站Finney 首先先来定义一下什么是我这里说的核心游戏系统,一般来说,游戏可以大致分为两个部分,一个部分是我这里指的 ...
- 游戏的数值系统的实现和演化
在游戏的战斗系统中,数值系统是很重要的模块之一.对策划来说,数值策划是一个非常重要的分类,关于数值从策划的角度介绍的比较多.但是对于程序来说,可能是这一块和需求比较密切,实现起来也没有特别复杂,关于数 ...
- 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——第3章 数据流 3.1同步数据流...
本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第3章,第3.1节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...
- 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.6 异构建模的方法...
本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第1章,第1.6节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...
- 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——3.2 动态数据流...
本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第3章,第3.2节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...
- 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.2 域和计算模型...
本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第1章,第1.2节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...
- 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.3 层次结构和复合角色...
本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第2章,第2.3节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...
- 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.7 时间模型...
本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第1章,第1.7节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...
- 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.8 域和指示器概述...
本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第1章,第1.8节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...
最新文章
- 【C#】集合_哈希表_字典_泛型_文件
- 如何判断离散数组 是递增趋势_如何用切线技术判断市场趋势?
- jvm(4)-虚拟机性能监控与故障处理工具
- PL/SQL Developer 使用技巧小结(转)
- java有什么压力_编程语言的心智负担!你学编程得有多大的压力快来测试一下...
- java 工厂模式详解_java 工厂模式的实例详解
- 使用Google Font API
- rust异步之async、await、future
- RQNOJ36 数石子 并查集 简单应用
- 再见2G网络!中国联通开始全面退网
- SAP FI配置步骤
- 新书正式定名《互联网运营智慧》
- python实现将文件夹/子文件夹中内容清空
- 高程(三)--- Date
- ActivityGroup简介1
- openssl数据加密
- 智慧泵房泵站无线远程监控检测系统方案
- setting-mirrorO以及下载jar包流程简介
- Resnet残差网络学习
- Python爬虫入门教程【6】:蜂鸟网图片爬取之一
热门文章
- 计算机内存不足2k14,360浏览器怎么清除缓存-这才是iPhone手机正确的清理姿势,分分钟清出几个G的内存...
- 预训练语言模型整理(ELMo/GPT/BERT...)
- EduCoder-Linux与Python编程2021(类的基础语法)- 第3关:绑定与方法调用
- 奥村(Okumura)模型 matlab仿真
- java我的世界1.14.4_我的世界1.14.4
- html2canvas截图的使用
- css实现垂直居中的几种方式
- [附源码]Java计算机毕业设计SSM白酒营销管理
- 是谁扼杀了孩子的想象力?一个不合格的老师究竟会对孩子有多少不好的影响?以及老师是如何冤枉学生的?
- 一个24岁上海漂亮公务员的工资单,看了心凉一截