首页
/ PKHeX项目中的Gen4 HGSS狩猎地带与口袋计步器合法性检查问题解析

PKHeX项目中的Gen4 HGSS狩猎地带与口袋计步器合法性检查问题解析

2025-06-16 10:52:32作者:昌雅子Ethen

背景介绍

在Pokémon游戏数据管理工具PKHeX中,近期发现了一个关于第四世代《心金/魂银》(HGSS)版本中狩猎地带(Safari Zone)和口袋计步器(Pokewalker)获取的宝可梦合法性检查存在误判的问题。这个问题主要影响了通过特定RNG(随机数生成)操作获得的宝可梦的合法性验证。

问题现象

用户报告了三种被错误标记为不合法的宝可梦案例:

  1. 狩猎地带获取的Rhydon:通过RNG操作在具有可爱魅力特性(Cute Charm Glitch)的存档中获得,被错误标记为非法
  2. 口袋计步器获取的Magby和Cleffa:同样通过RNG操作获得,被错误标记为非法
  3. 随机从口袋计步器获取的Magby:非RNG操作获得,但仍被错误标记为非法

技术分析

狩猎地带问题

PKHeX的数据库中缺少Rhydon在狩猎地带第5槽位的遭遇记录,只有Rhyhorn的记录。这导致当游戏实际生成Rhydon时,合法性检查无法找到匹配的遭遇记录而误判为非法。

口袋计步器问题

PKHeX对口袋计步器宝可梦的合法性检查存在多个问题:

  1. 初始种子生成逻辑:代码中描述的初始种子生成条件与实际游戏逻辑相反。正确的逻辑应该是:

    • 当玩家开始漫步(stroll)时,基于当天经过的秒数(<86400)生成初始种子
    • 否则,基于启动时的日期和时间生成初始种子(类似于Gen4的初始种子生成方式)
  2. 漫步相关RNG机制

    • 开始漫步后,游戏会生成3只宝可梦供遇见,这些结果与关联性无关
    • 漫步会导致3次RNG推进,初始种子[漫步]可以推进3+(2n)次,或[非漫步]推进0+(2n)次
  3. 遭遇槽位顺序:PKHeX中存储的口袋计步器遭遇槽位顺序与游戏实际使用的顺序相反。游戏代码使用rand() & 1 == 0来选择索引,导致实际顺序与ROM/PKHeX中的顺序相反。

  4. 合法性检查过度严格:代码不必要地检查了漫步生成的槽位是否匹配,而实际上这种检查对于合法性验证是不必要的。

解决方案

开发者对PKHeX进行了以下修正:

  1. 移除不必要的遭遇槽位检查:不再检查漫步生成的宝可梦是否匹配特定槽位
  2. 修正初始种子生成逻辑:确保与游戏实际行为一致
  3. 改进RNG种子显示:现在会显示IVs的RNG种子以及种子类型和之前需要捕获的宝可梦数量

技术细节补充

口袋计步器宝可梦的生成涉及复杂的RNG机制:

  1. 种子生成

    • 漫步种子:3600 * 小时 + 60 * 分钟 + 秒
    • 非漫步种子:(((月*日 + 分钟 + 秒) & 0xff) << 24) | (小时 << 16) | (年)
  2. RNG推进

    • 漫步种子在奇数次推进时使用(3,5,7,9,...)
    • 非漫步种子在偶数次推进时使用
  3. IV生成:游戏通过调用rand()两次来生成每只宝可梦的IVs

区域限制说明

值得注意的是,口袋计步器课程本身可能有区域限制,但宝可梦的接收没有区域限制。玩家可以从不同区域的游戏链接的口袋计步器接收宝可梦,这使得区域检查在合法性验证中不必要。

结论

通过对PKHeX中Gen4 HGSS狩猎地带和口袋计步器合法性检查逻辑的修正,现在能够正确识别通过RNG操作合法获得的宝可梦。这一改进不仅解决了误报问题,还通过显示更多RNG相关信息提高了工具的透明度和实用性。

登录后查看全文
热门项目推荐

项目优选

收起
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
138
188
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
187
266
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
892
529
kernelkernel
deepin linux kernel
C
22
6
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
370
387
KonadoKonado
Konado是一个对话创建工具,提供多种对话模板以及对话管理器,可以快速创建对话游戏,也可以嵌入各类游戏的对话场景
GDScript
20
12
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
94
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
337
1.11 K
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.08 K
0