成就中心 DouJin Terraria! 社区服务 统计排行 帮助
  • 14602阅读
  • 29回复

[紅/EoSD][技术向] 东方红魔乡 PlayRank 增减分析

发帖
103
信仰
6
蓝点
462
符卡
0
— 本帖被 Kag 执行加亮操作(2015-01-01) —
注:本文的分析对象是未打任何第三方补丁的 东方红魔乡 1.02h 日文版。应该不适用于 东方红魔乡 渔场汉化版 。

首先简单介绍一下 PlayRank 是神马:
引用

    还不 MISS?那就让子弹密一点快一点(增加PlayRank),看你还不死。        
    咦,MISS了?真是的,那…那就让弹幕简单点吧。别…别搞错了啊,人家才不是为了让你容易过才放水的呢/// 只是…人家一激烈你就吃不消了,这有什么意思嘛///        
    PS: MISS 不是影响 PlayRank 增减的唯一条件。
    PS2: 除红魔乡外,其他的一些东方作品中也有采用 PlayRank 系统(已确定妖妖梦和永夜抄也有)。


利用最近几天蛋疼的时间分析了一下,发现有这么一些东西是和 PlayRank 相关的(已转成C代码):

有一个全局结构体存在于进程内存 0x69D710 处:
  1. struct PLAYRANK {
  2.     int integer; // 整数部分
  3.     int max; // 整数部分上限值
  4.     int min; // 整数部分下限值
  5.     int decimal; // 小数部分
  6. }PlayRank;


通过简单地给 PlayRank.decimal 下断,可以看到增减 PlayRank 的 2 个主要函数。

增加 PlayRank:(0x41c57e)
  1. void IncPlayRank(int increment) {
  2.     PlayRank.decimal += increment;
  3.     while (PlayRank.decimal >= 100) {
  4.         PlayRank.integer++;
  5.         PlayRank.decimal -= 100;
  6.     }
  7.     if (PlayRank.integer > PlayRank.max)
  8.         PlayRank.integer = PlayRank.max;
  9. }


减少 PlayRank(0x41c5fa):
  1. void DecPlayRank(int decrement) {
  2.     PlayRank.decimal -= decrement;
  3.     while (PlayRank.decimal < 0) {
  4.         PlayRank.integer--;
  5.         PlayRank.decimal += 100;
  6.     }
  7.     if (PlayRank.integer < PlayRank.min)
  8.         PlayRank.integer = PlayRank.min;
  9. }


通过以上代码可以得出:
1. PlayRank 有小数部分。
2. 小数部分范围在 [0,99] 。
3. PlayRank 的整数部分有上限和下限。
4. 每次增加 PlayRank 后,会检查 PlayRank 的整数部分是否超过上限,超过则修正为上限(小数部分不作修正)。
5. 每次减少 PlayRank 后,会检查 PlayRank 整数部分是否小于下限,是则修正为下限(同样小数部分不作修正)。
另外,小数部分不会保存在录像文件中,因为每一关开始时必定被清零。

--------------------------------- 我是那啥的分割线 -----------------------------------

好了,那么我们来看看在游戏中有哪些要素会改变 PlayRank 吧。

注:以下提到的 PlayRank,都是包括小数部分的。
注2:所有难度正常的 PlayRank 初始值都是 16 (包括 practice start)。而最大值和最小值根据难度的不同而不同,具体参看本文末尾。

增加 PlayRank 的条件如下:
引用

帧数满足一定条件*+1
擦弹**+0.06
1UP+2
吃B道具+0.05
吃蓝点最大值+0.3
吃蓝点非最大值+0.03
吃小P***+0.01

注解:
*这里的“帧数”是一个计数器,每关开始时清零 。除 暂停、对话、BOSS战、以及 3、6、EX 关的 中BOSS战 外,每处理一帧都会自动加 1。加 1 后的程序代码中有这么一段(0x41156e,已简化):
  1.     if (f % (2400-p*240) == 0)
  2.         IncPlayRank(100);
  3.     // 其中f为帧数,p为残机数。

    比如说当前残机数为2(p=2),那么 2400-p*240 就是 1920,接着就是判断 f 除以 1920 的余数是否等于 0,也就是判断 f 是否是 1920 的倍数。如果是,立刻 PlayRank+1 。
    很容易看出,自机残机越多,PlayRank 升得也越快。

** 包括BOMB状态时的擦弹(不加 Graze)。

*** 吃 大P 貌似不加。


减少条件如下:
引用
道具掉出屏幕*-0.03
放 Bomb-2
Miss**-16


注解:
*包括所有能掉出屏幕的道具,与道具类型无关。

**不包括决死。决死B 与 普通B 一样都 -2 。


差不多就是这样吧……有什么问题可以跟帖讨论。    

另外,还做了一个在 HiScore 处显示 PlayRank 及之前所提到的“帧数”的补丁:
http://bbs.doujinstg.cn/read.php?tid=1610

最后,本人能力有限,文中错误之处在所难免,而且可能还有其他影响 PlayRank 的条件未被发现。欢迎各位 破解触、反汇编触 批评指正。        

PS:HMX 各难度 PlayRank 初始值、最大值、最小值。
引用

ENHLEX
初始1616161616
最大2032323218
最小1010101014
查看更多 本帖最近评分记录: 23 条评分 蓝点 +119 隐藏
m9xuan 蓝点 +10 2011-08-28 NB呀。。技术帝求交往
villarreal 蓝点 +2 2011-08-27 -
源之壬环 蓝点 +2 2011-08-27 技术流
loading 蓝点 +2 2011-08-27 碉堡
LMAX 蓝点 +3 2011-08-01 -
玉米龙 蓝点 +2 2011-07-29 难怪NOMISSNOB压力那么大
雪夜 蓝点 +1 2011-07-29 老师乃又威武了...
shana1224 蓝点 +3 2011-07-26 这帖有潜力成为同人嘉年华怪谈
风雨中的FXR 蓝点 +2 2011-07-25 这个必须...
slice 蓝点 +10 2011-07-24 这帖有潜力成为同人嘉年华怪谈
发帖
267
信仰
10
蓝点
208
符卡
1
只看该作者 沙发  发表于: 2011-07-22
个人不觉得YYC有这个系统在里面。。
YYM、HMX确实是有的,这个只要稍微打打马上就能感觉出来
发帖
54
信仰
0
蓝点
48
符卡
0
只看该作者 板凳  发表于: 2011-07-22
我终于理解为什么yym梦符那么容易糟了233
发帖
267
信仰
10
蓝点
208
符卡
1
只看该作者 地板  发表于: 2011-07-22
是呀,那种游戏你越不糟它就越难的
其实大往生也有这个系统,不过貌似只体现在子弹速度上,密度上没有变化。。
发帖
103
信仰
6
蓝点
462
符卡
0
只看该作者 4楼 发表于: 2011-07-22
引用
引用第1楼LYX-TEST于2011-07-22 19:53发表的  :
个人不觉得YYC有这个系统在里面。。
YYM、HMX确实是有的,这个只要稍微打打马上就能感觉出来   


永夜抄有 PlayRank 系统无误……
只是 PlayRank 值范围比 HMX 小多了。而且难度越高范围越小。
并且包括 HMX 在内,好像也不是所有的弹幕都受 PlayRank 影响。

以下是 永夜抄 的 PlayRank 值范围(懒得做表格了,可能会错位,将就着看吧……)

E    N    H    L    EX
10    10    8    8    16 (初)
8    8    8    8    15 (小)
16    16    12    12    16 (大)
发帖
218
信仰
34
蓝点
268
符卡
2
只看该作者 5楼 发表于: 2011-07-22
于是PoFV只是把一直有的东西显性化给玩家看了么……
发帖
23
信仰
4
蓝点
17
符卡
0
只看该作者 6楼 发表于: 2011-07-22
原来是这个样子,咱也想学学反汇编了
发帖
386
信仰
10
蓝点
625
符卡
1
只看该作者 7楼 发表于: 2011-07-23
原来放B也可以掉rank,以后撞之前把B扔光……
L也挡不住我了!
Kag
发帖
784
信仰
2
蓝点
395
符卡
0
只看该作者 8楼 发表于: 2011-07-23
之前WZ520老师做的东方回映录我就看到TH06-TH08都有显示playrank...
然后当时似乎说YYM和YYC的不明显...

YMR
发帖
244
信仰
30
蓝点
286
符卡
3
只看该作者 9楼 发表于: 2011-07-23
那FSL之后的有没有呢?
描述
快速回复

您目前还是游客,请 登录注册
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
认证码: