游戏开发论坛

 找回密码
 立即注册
搜索
查看: 21537|回复: 22

[原创] rpg的游戏节奏序列分析方法

[复制链接]

2

主题

17

帖子

62

积分

注册会员

Rank: 2

积分
62
发表于 2013-1-23 13:25:26 | 显示全部楼层 |阅读模式
本帖最后由 eblis88 于 2013-1-23 13:27 编辑

前段时间做了很多大规模用户模拟的工作,做着做着,突然觉得对游戏节奏的理解更加深了。
故总结于此,希望数值的后人们可以借鉴。

研究数值必须要先研究游戏节奏。制作人会在广义上定义游戏的主线和节奏,数值则必须把节奏予以量化,并体现在各个系统中。
对游戏节奏的建模和分析的必要性显而易见,但现有的此类资料一直稀缺。

游戏节奏
      假定t时刻的玩家战斗力,为Pt。t1时刻的战斗力为Pt1。 一般来说 Pt1 > Pt。
      战斗力增长率可以定义为 DPt = Pt1 - Pt

      假定存在世界战斗力,世界战斗力可通过各种游戏中的各类挑战来估计得到。
      t时刻的世界战斗力,为WPt。 t1时刻的世界战斗力为 WPt1。  一般来说 WPt1 > WPt。
      世界战斗力增长率 DWPt = WPt1 - WPt

      游戏节奏,或者称之为条件战斗力增长率,可以定义为
      Rt = DP / DWP
      或者,可以线性的表达为  r = ln(R) = ln(DP) - ln(DWP)

      因此,研究游戏节奏,便是研究不同的强化系统,对指数形式的战斗力增长率的影响。

      研究可以分成以下几部分。
      1.  给定某个系统X,研究从 t1,t2,....tn时的 r 和X的关系。譬如,考察装备强化的增量是否合理。
      2.  给定某个时间节点t, 研究不同的系统 X1, X2,....Xn 和 r的关系。譬如,考察不同的系统间的独立性和相关性。
      3.  研究在世界战斗力发生改变的情况下,从tn到t2n时,不同的系统间的比重是否会发生改变。
      4.  给定有限的资源,考察不同的系统分配方法对 r 的影响
      5.  。。。。。。

      可以直观的看出来,上面的建模,几乎涵盖了一个rpg的所有数值工作。


干活去了,有空回来再写。第二段会偏向于统计推断。

0

主题

56

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
发表于 2013-1-23 13:51:48 | 显示全部楼层
战斗力以及世界战斗力准不准先另说
时间与各系统之间的关系本身就很难估计。wow这样的收费游戏你这种做法或许可行。
对现在的大部分免费游戏来说,一点用都没有

7

主题

371

帖子

2216

积分

金牌会员

Rank: 6Rank: 6

积分
2216
发表于 2013-1-23 21:17:13 | 显示全部楼层
不管收费免费,时间都是基准。

9

主题

93

帖子

333

积分

中级会员

Rank: 3Rank: 3

积分
333
发表于 2013-1-24 06:01:18 | 显示全部楼层
halcat 发表于 2013-1-23 21:17
不管收费免费,时间都是基准。

你的这个数值的定义太笼统了。而且还要根据个人习惯,比如说一个人喜欢在一个地点停留的时间长,那么这个地点的战斗力增长就为零,式子不成立。
也就是说,除了那些走剧情的单机版rpg,比如风色幻想之类的,这种公式就一点用都没有。
像暗黑那种的rpg,世界战力的增长是随玩家的进度而变化,同一款游戏对不同玩家,通关的时间都不同,就凭着这个公式,你怎么控制游戏节奏?
光是单机版的玩家自主性较大的rpg就这样了,放到其他游戏中就更是难以控制了。
比如说道具类的收费游戏,玩家钱花的越多节奏越快,突然发现能花钱提升实力的方法用尽了,节奏突然下来了,就代表这个玩家不会再玩了?我很是怀疑你得出此公式的依据,如果有空请解释一下。

10

主题

58

帖子

287

积分

中级会员

Rank: 3Rank: 3

积分
287
发表于 2013-1-24 14:39:18 | 显示全部楼层
虽然不是很懂,但支持下!

2

主题

17

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2013-1-24 20:56:37 | 显示全部楼层
本帖最后由 eblis88 于 2013-1-25 11:06 编辑

上面有人说到战力不准的问题。就先说一下战力吧。
战斗力估计
假定一场战斗包含了若干因素S={S1,S2,S3.....Sn},譬如Atk, Hp, 站位, 技能 等。
那么,战力 P 就是S的函数 P = f(S)。
可以通过战斗模拟的方式来求得f的表达式。

对于一个特定玩家,战力Px。对方的战力为 Pe。引入战斗结果辅助标记M(Px,Pe)
   M(Px,Pe) = 0   if   Px <= Pe 且 失败
   M(Px,Pe) = 0   if   Px >= Pe 且 成功
   M(Px,Pe) = 1  其他

假定已经收集了一组战斗,战斗结果标志 M = {M1, M2, ....}。对应的战力集合 P = {P1, P2,....}
那么,求得P的过程,就是如下的最优化过程
    min_Px {sigma_i(Mi(Px,Pi)}
上述公式里, sigma_i表示以i为下标的求和 。

可用以下几个步骤来解决该最优化问题
1. 网格化
    对于战斗因素S,取值范围是[Smin, Smax]。那么首先需要决定数据的离散程度。离散单位决定了数据复杂度。
    可以用如下公式来估计数据量。假定在取值范围内取Sd个值 ,一共有n个战斗因素。
    可以直观的看出,最大数据量 = Sd^n。
    在实际经验中,由于要在一些数据突变点增加更多的数据参考,最大数据量大约是 Sd^2n
    可以根据不同的情况,选择合适的Sd。
    一般情况下,我选择 Sd = 5,最小离散单位 Sd = (Smax - Smin) / 5。

2. 战力建模及拟合
    根据战斗的不同,战力模型也不同,但一个通用的模型是:
    P = sigma_i ( ai*Si^2 + sigma_j ( bij*Si*Sj) ) + sigma_k ( ck*Sk)      bij = bji
    后半部分表示独立性战斗因素,前半部分表示相关性战斗因素。

    推荐的拟合方法是 SVM,支撑向量基。

3. 解决奇异点
    在拟合后,经常会有一些不连续的点。解决的方法有很多,譬如引入高阶,引入随机误差等等。推荐的方法是引入随机误差。
    修正战斗力模型为    P = Pg + Pn   
    Pg是参数确定了的战斗力模型,Pn是服从(0, delta_p)的正态分布。
    上述模型表明,之前的工作实际上只是给出了一个战斗力的期望。战斗多样性引起的大量不可控因素,将会体现在Pn中。

    在解决奇异点的过程中,需要补充大量的数据,以计算delta_p的值。补充数据可取奇异点附近的1%~5%。譬如:
    已方:Atk = 50,  Hp = 200,  Def = 450,  Spd = 60
    补充性对方数据:
              Atk = 50 + 50*(-5% ~ 5%),   Hp = 200 + 200 * ( -5% ~ 5%)......

4. 降维
    在计算量很大的时候,降维是必须的。譬如将 HP转化成 有效HP(EHP)。乘法公式的EHP一般是 HP /( 1- 免伤1)/(1-免伤2)....
加法公式的EHP = HP + 防御折算1*被攻击次数 + 防御折算2*被攻击次数....

2

主题

17

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2013-1-25 10:21:05 | 显示全部楼层
本帖最后由 eblis88 于 2013-1-25 10:37 编辑

5 战斗力模型验证      对之前的战斗结果标记稍作修改
   M(Px,Pe) = 0   if   Px <= Pe 且 失败
   M(Px,Pe) = 0   if   Px >= Pe 且 成功
   M(Px,Pe) = 1  if    Px > Pe 且 失败
   M(Px,Pe) = -1 if    Px < Pe 且 成功

   那么,在上文3的假设下,所有的战斗结果集合,应该满足 (0, delta)的正态分布。
   一个最理想的delta值,应该是delta = 0,此时不会有任何误判情况存在。但实际上,由于游戏中存在各种概率因素,所以往往得不到0值delta。

   那么,放宽一步,delta小于5%应该是合理的。故可以构造如下验证过程:
   a. H0:  delta < 5%
   b. 计算偏度的 S(x) ,三阶矩
   c. 计算峰度 K(x) - 3,四阶矩

   如果拒绝了delta的H0检验,则战斗力的准确度比较低,需要重新验证之前所做工作的正确性。
   如果S(x)结果右倾,则表明当Px- Pe越大,误差越大。这通常是由于战斗力模型过高的阶数引起的。同理,如果左倾,则需要增加高阶项。
   如果峰度 K(x) - 3 >> 0,那可以喝茶休息了,战斗力的估计基本完成。
   但如果 K(x) - 3 < 0,那需要判定“尾巴质量”最不正常的区域。这些质量不正常的区域,可能是由于网格化不正确,或者采样数量少,或者由于战斗结果的样本误差导致。遇到这个情况时,往往是最棘手的,建议从头审视之前工作的正确性。

--------------------------------------------------------------------------------------------

战斗力估计到这里就结束了,涉及的概念很多,可能会比较深。因为大多数都是实践产物,等到大家实际在用到战斗力估计得时候,可以回来看看。

感兴趣的同学,可以以查阅相关文献。有疑问可以直接在本贴留言。

下一次更新将会涉及真正的节奏序列分析。


2

主题

17

帖子

62

积分

注册会员

Rank: 2

积分
62
 楼主| 发表于 2013-1-25 10:50:15 | 显示全部楼层
用户名注册难 发表于 2013-1-24 06:01
你的这个数值的定义太笼统了。而且还要根据个人习惯,比如说一个人喜欢在一个地点停留的时间长,那么这个 ...

以时间为基准,你就可以知道当系统扩展的时候,该如何平衡新老货币。
以时间为基准,你就可以知道玩家群体在时间变化时,真正的游戏体验分布。
以时间为基准,你就可以知道玩家是否愿意在一个系统上持续投钱。rmb-强化 的节奏是否对其他系统产生了冲击。
单机rpg和网游是同样的道理。

0

主题

56

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
发表于 2013-1-25 12:40:33 | 显示全部楼层
纯理论帝。敢问大神做过那几款游戏

0

主题

56

帖子

326

积分

中级会员

Rank: 3Rank: 3

积分
326
发表于 2013-1-25 12:46:02 | 显示全部楼层
战力计算一点都不复杂只是你自己故意去写的复杂。再复杂也是不准的。回合制还好说,ARPG跟操作是息息相关的。你说的站位等因素在ARPG里都属于操作范畴,敢问你具体如何计算的。
你写的我只看了开始。后面我看都懒得看

点评

数学模型就是这样写的,不知道游戏向量的不要乱说话,ARPG自己看去http://wenku.baidu.com/view/e0580d335a8102d276a22f3a.html  发表于 2013-1-28 09:42
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-24 14:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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