游戏数值平衡(含VBA运用)

上传人:平*** 文档编号:20200276 上传时间:2017-11-21 格式:DOCX 页数:38 大小:243.48KB
返回 下载 相关 举报
游戏数值平衡(含VBA运用)_第1页
第1页 / 共38页
游戏数值平衡(含VBA运用)_第2页
第2页 / 共38页
游戏数值平衡(含VBA运用)_第3页
第3页 / 共38页
游戏数值平衡(含VBA运用)_第4页
第4页 / 共38页
游戏数值平衡(含VBA运用)_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《游戏数值平衡(含VBA运用)》由会员分享,可在线阅读,更多相关《游戏数值平衡(含VBA运用)(38页珍藏版)》请在金锄头文库上搜索。

1、以下文章出自博客http:/ A,并且触发这个元素 A 的概率为 30%时,我们会很自然地想到,掷一个“随机骰子”,当这个骰子的值落在 30%之内则触发元素 A。那么,如果有两个元素:元素A(触发概率 30%)、元素 B(触发概率 15%),这样的情形该如何处理呢?难道当“随机骰子”落在 15%之内会同时触发元素 A 及元素 B 么?显然不是。而是把元素 A 和元素 B 的触发条件错落排列在同一个有效空间“1(或者称之为100%)”。通常我们的做法是,元素 A 的触发有效区在(0,30%,而元素 B 的触发有效区在(30%,45%。这就好像我们经常能够看到某某电视节目的一个抽奖道具大转盘一样,

2、转盘上有很多五颜六色的扇形区域,每个扇形区域代表着一个元素的触发条件,当转盘的指针指到那个区域,就会抽中相应的元素。虽然每个元素的权值各有不同,有时甚至这些元素的权值加在一起远远超过 1,不过不要紧,最终我们还是要把他们的触发条件压缩在同一个转盘之中,而这个转盘的空间就是 1(或者 100%)。这就是本文之后要经常出现的一种方法,我把它命名为“转盘算法”。何为转盘算法之前已经大概的介绍过,我们可以很形象的理解为抽奖专用的一个“大转盘”,转盘里面的任何奖项的概率区间都是用扇形区域表示的,只有当指针最终停留在某个扇形区域时,才能抽得该奖品。同样的,“转盘算法”也于此相同,并且“转盘算法”会自动的将

3、所有项目按照比例压缩排列成不同的扇形区域,而无论多少个扇形区域(多少个项目),这些扇形区域的面积和(所有的项目的触发概率和)恒等于 1。既然有了“转盘”的概念了,把我们接下来就要关心如何操作了。假设我们可以把转盘的外接圆以某点剪开,然后平展开成一条长为“转盘”周长的线段,命名为 TP 线(Total probability-Line)。如此,对于“转盘”上的扇形所对应的弧(其实有效的概率范围就是扇形的弧)就会在此 TP 线线上以“线段”的形式体现。那我们今后如想再次转动“转盘”的指针,就等同于在 TP 线上随机任取一点。随机取出的这一点出自哪一条线段,则此线段对应的项目被抽中。例如,我么有以下

4、 3 个项目进行抽奖,每个项目的名称以及对应的概率如下表:为此我们需要掷一个 random(0,0.9)的骰子。当结果为 0, 0.3)时,项目 A被抽中;当结果为 0.3,0.5)时,项目 B 被抽中;当结果为 0.5,0.9)时,项目C 被抽中。当然,这仅仅是一个简单的例子,如果项目的数量很多时,你会发现这个方法显然不适用,并且也不符合“高效”的精神。因此我们应该在算法上有所改进。结合之前提出的 TP 线的概念,我们应该有所启发,根据上一个例子的情况,变换算法如下:项目名称 概率项目 A 0.3项目 B 0.2项目 C 0.4 将项目 A, B, C 的概率进行求和以作为 TP 线的总长。

5、用函数 random(0,1)*TP 线的长度来取 TP 线上的点。若取得的结果在 0, 0.3)时,项目 A 被抽中;取得的结果在 0.3, 0.5)时,项目 B 被抽中;取得的结果在 0.5, 0.9)时,项目 C 被抽中;有了这种算法,以下问题也将得以解决。我们有以下 4 个项目进行抽奖,每个项目的名称以及对应的概率如下表:这种情况恐怕曾经困扰过许多人,有时候我们就是明确的奔着设计需求而设定的技能触发或者道具抽奖,却有意无意的做出总概率大于 1 这样让人哭笑不得的结果。面对这种情况,我们不得不妥协而重新安排触发概率,使其总和等于 1。由于需要精心计算及衡量每一个项目的触发概率并且需要保证

6、总和等于1,如果参与抽奖的项目多起来,就会使得工作量繁重,且与我们当初的设计意义相悖。但是现在,我们可以肆无忌惮的按照当初的设计意图毫无顾忌填写你想要的触发概率了,因为就在刚才笔者建立在 TP 线上的“圆桌算法”已经可以自动的按照比例把所有的项目的触发概率进行压缩,使其和等于 1。操作方法就如上一个实例一样,具体的步骤会在接下来进行详细的讲解。基于 TP 线的转盘算法,应用及其设计模式在此,笔者会一步一步的给出详细的设计模式,为此我们同样地需要准备几个将要参与抽奖的项目,如下:项目名称项目 A项目 B项目 C项目 D项目 E项目名称 概率项目 A 0.3项目 B 0.2项目 c 0.4项目 D

7、 0.3 首先我们需要对这 5 个项目进行评估,来估量出每个项目的价值,这个价值不具有任何客观性,仅仅是这个项目(可以是道具,技能等)在你心目中的重要地位,其作用后面讲解。以下是笔者对这 5 个项目的评估(百分制):项目名称 价值项目 A 80项目 B 10项目 C 45项目 D 12项目 E 99假设我们的游戏价值观的需求是,价值越大的物品得到地越困难,那么我们就需要另一个变量元素 “比重 ”,关于比重的计算有很多种,但是最根本的原则就是 “价值越大,所占的比重越小 ”,这样为了方便起见,这里笔者就采用最简单的计算方法,即 100 减去 “价值 ”,所得的结果就是相应的比重,如下:读者们还可

8、以根据需要试一试关于 “比重 ”的其他的计算方式以达到不同的效果。至此,我们已经可以使用 “比重 ”进行抽奖了,这里 “比重 ”就是形容每个项目在 “转盘 ”中所占的比例,亦是 TP 线上的一个线段的长度,只不过我们平时更喜欢把概率计算出来:项目名称 价值 比重项目 A 80 20项目 B 10 90项目 C 45 55项目 D 12 88项目 E 99 1项目名称 价值 比重 概率项目 A 80 20 0.0787402项目 B 10 90 0.3543307项目 C 45 55 0.2165354项目 D 12 88 0.3464567 其实就是对应项目的比重除以所有项目比重的总和。对于另

9、一种情况。有时候我们经常会需要根据道具的价格来设定抽奖的概率,方法如下:项目名称 价格项目 A 80项目 B 150项目 C 1450项目 D 2200项目 E 500在这里,表中各项目所对应的 “价格 ”其实就相当于之前笔者所讲述方法中的 “价值 ”,那么接下来 “比重 ”该如何求算呢?方法很简单,首先我们先随意设定 “项目 A”的 “比重 ”为 20,那么项目 B 的比重即为 “项目 B 的价格 ”除 “项目 A 的价格 ”再乘以 “项目 A 的比重 ”。语言概括即为 “该项目的价格与项目 A 价格的反比再乘以项目 A 的比重 ”,得:项目 E 99 1 0.003937 同样,计算方法不

10、唯一,笔者可以试着创造出适合自己的新方法。这套设计模式的价值核心在于,替代传统的抽象概率,转而更为直观评估“价值”与求算“比重”,并且可以灵活的根据需求调整“价值”以改变概率。结合“转盘算法”,更能使游戏设计者得心应手。物品奖励的分组有些时候,我们需要整理很多繁杂的物品进行抽奖,例如开宝箱、每日奖励等,对于这么多物品,我们并不方便将其放进一张列表进行抽取,其工作量以及维护的难 易程度对我们游戏设计者还有游戏开发者来说都是一件很苦恼的事情。所以我们需要一种方法,对参与抽奖的物品进行归类,例如:项目名称 概率 奖励方案金币 0.7 Int(1000*(2rnd+1)RMB 0.01 Int(0.5

11、*rnd+1)道具 0.1 进一步方案,见“道具”武器 0.09 进一步方案,见“武器”宝石 0.1 1这样,在第一张表中,会出现大类目与小类目在同一个“转盘”中的情况。下面还需要进一步给出大类目的二级方案。道具:项目名称 概率 奖励方案道具 1 0.6 1道具 2 0.05 1道具 3 0.1 1道具 4 0.15 1道具 5 0.1 1武器:项目名称 概率 奖励方案武器 1 0.5 1武器 2 0.3 1武器 3 0.05 1武器 4 0.05 1武器 5 0.1 1依次结构,在操作的时候,我们需要先从第一个表中按概率抽取大类,如果抽取到“道具”或者“武器”则需要进一步跳转到相应的表中再进

12、行抽取,奖励数量则对应相应的“奖励方案”。值得注意的是,这种方案做法,其实是将同一个“转盘”进行多“转盘”分类。如果我们想看单个项目的概率,则需要进行乘法运算,例如:武器 3 的获得概率为 0.09*0.05=0.0045。本章结束至此,关于“抽奖模型”的内容已经讲解完毕。关于“转盘”算法以及“TP线”还有许多其他高效的用法,有待读者们探索。接下来的内容则重点讲解“转盘”算法以及“TP 线”在战斗系统中的应用,之后更新,请关注!从抽奖模型到圆桌算法(下)前言这一章节主要利用上文中引入的转盘算法来讲解说明多攻击模式战斗的应用以及圆桌理论。文章中为了进一步具象讲解,所以引入 VBA 实例,顺带一下

13、VBA 战斗模拟器教程。但是使用 VBA 战斗模拟器来设计游戏显然与“高效设计游戏”相悖,有那时间做一个无用的玩具,还不如多花点时间在该去思量的地方。请给位游戏设计者酌量。由 于之前很多大婶们喷小的话有点罗嗦,两三句话的事情写了整篇文章,所以此回没敢放得开,好多东西尽量缩短,请大婶们见谅哈。还有一些大婶文章都不看上来就 喷的,小的有句话:“请看完文章有依据之后再喷,要不然喷出来的料太骚气。如果想显得各位大婶能耐,找错对象了,小的只是一心想改善业内气氛的一介草 民。”最后,请各位抱着正常的心态阅读此文章。改善我们业内气氛,人人有责,请不要让业内继续乌烟瘴气。抽奖模型在战斗系统中的应用抽奖模型在战

14、斗系统中的应有有两种类型,第一种是回合制自动战斗类型,如类Q 将三国游戏;另一种是多攻击形式的类型,这一类型没有限制是否是回合制,比如类魔兽世界游戏。下面我们将分情况讨论。自动战斗系统模型中的转盘随着现在网页游戏以及手机游戏的盛行,更多的战斗系统被设定成自动战斗模式,因为这类游戏正需要简化其战斗玩法,从而达到休闲娱乐的目的。自动战斗的系统需要的是多攻击模式的触发逻辑,以Q 将三国为例,如果按照传统的设计思路会是以下情形:P1 攻击 P2发生在 P1 身上的模式有三种: A.P1 的普通攻击 B.P1 的暴击 C.P1 的技能攻击,从中抽取一行为进行攻击。紧接着再判断发生在 P2 身上的承受模式

15、: a.P2 的闪避 b.P2 的格挡 c.P2 的反击 d.P2 的反制,从中抽取一行为,进行回应。这样无疑会为我们的设计工作带来困难,一是每次战斗需要进行超过 2 层的逻辑判断,二是很难将“闪避”“格挡”“反击”“反制”这么多元素进行控制,从而抽奖。三是不能应变“技能攻击不可闪避”等这样的需求,如果强行制作,还需要再加一层逻辑。所以我们不妨看看另一种方案:P1 攻击 P2我们只对这几个元素进行抽奖: A.P1 的普通攻击 B.P1 的暴击 C.P1 的技能攻击 D.P2 的闪避 E.P2 的格挡 F.P2 的反击 G.P2 的反制。将这次的抽奖结果作为本次攻击的 “模式 ”,无论抽中的是对 P1 有益的攻击形式还是对 P2 有益的攻击形式。如此一来,我们就迎合了之前所提出的需求“技能攻击不可闪避”,并且这一方案具有以下特点: 个项目之间是相互影响的,如果一方概率的增加会降低其他项目的概率。这特点比较适合战斗系统的要求,例如对方的闪避以及格挡的提升必然会带来我方攻击无效率的增加,但并不会让你永远攻击无效化。 如果将敌我的所有

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号