pkhex吧 关注:36,892贴子:108,356

开帖科普下Gen3相关的游戏机制

只看楼主收藏回复

缓更,谢米镇楼


IP属地:四川来自iPhone客户端1楼2022-09-01 18:47回复
    由于国内游戏机制这块愿意分享的人几乎没有(其实懂得人应该不少,但是不知道为什么愿意分享的人基本没有),我玩宝可梦时间也不短了,但是也是最近几周才接触到pkhex。
    绝大部分人刚开始接触这些东西肯定是啥都不懂的,我也一样,所以我开始在国内互联网上找相关资料,从最基础的怎么合法,到深层的这些数值是如何生成的。
    我就是在找这些教程的时候发现的这个吧,但是无论是这个吧还是其他网站,都没有详细的教学,好多谜语人,都是那种我都懂,但是我就不告诉你。
    于是在国内找寻无果,我便去外网找相关教学,不得不说外网除了语言问题,教学是特别全的,于是我便苦学了2周,把我了解到的,分享给各位。


    IP属地:四川来自iPhone客户端2楼2022-09-01 18:47
    收起回复
      2026-04-24 00:55:08
      广告
      不感兴趣
      开通SVIP免广告
      算是作为一个抛砖引玉吧,希望各位能分享出自己的经验


      IP属地:四川来自iPhone客户端3楼2022-09-01 18:49
      回复
        首先免责申明,我也是几周前才开始学习的,所以有错误请大家指正出来,大家一起交流,那么下面开始。


        IP属地:四川来自iPhone客户端4楼2022-09-01 18:49
        回复
          开始的开始我先说一点较为重要的就是,很多法师都是通过RNGreporter这个软件来计算gen3的野生宝可梦的pid的,但是这样算出来的pid理论上是合法的(注意是理论),但是你在实际游戏过程中是不可能遇到的,因为gen3的遇敌是和帧绑定在一起的。
          什么意思?很简单。
          举个例子。比如你想要个闪光的大嘴娃,好,你上RNGreporter输入了你的tid和sid,然后输入了seed,勾上了shiny only,你一点搜索,发现,哇好多闪帧啊,然后你看上了第20000帧,觉得这个个体不错,然后写进了pkhex,pkhex也闪了,也提示合法。
          事实上这个宝可梦是不合法的,因为在第20000帧,你在游戏里绝对不可能遇得到大嘴娃,你在第20000帧只能遇到蛇纹熊。所以这个宝可梦在实际上是不存在的,但是仅从pid和你训练家的tid和sid这但一方面来考虑,确实是合法闪光的。
          所以gen3能遇到的宝可梦其实在你创建好角色的那一瞬间就决定好了的。ok,下面正式开始。


          IP属地:四川来自iPhone客户端5楼2022-09-01 18:51
          收起回复
            真单机贴吧了


            IP属地:四川来自iPhone客户端6楼2022-09-01 18:58
            收起回复
              回家接着码


              IP属地:四川来自iPhone客户端8楼2022-09-01 19:13
              回复
                顶顶


                IP属地:浙江来自Android客户端9楼2022-09-01 19:25
                回复
                  2026-04-24 00:49:08
                  广告
                  不感兴趣
                  开通SVIP免广告
                  众所周知在宝可梦游戏里有个叫做pid的数据,他是一串32位2进制数(8位16进制数),在Gen3里宝可梦的性别、特性、性格都可以仅从pid中获取。所以了解pid在游戏里如何生成是至关重要的。


                  IP属地:四川10楼2022-09-01 19:43
                  回复
                    在了解pid如何生成之前,我必须给一些不了解相关计算机知识的人简单科普下。
                    下面数字以b结尾表示是个2进制数,以h结尾表示是个16进制数,结尾什么都不加则为10进制。
                    在2进制中表示0-2:0b、1b、10b
                    在10进制中表示0-10:0、1、2、3、4、5、6、7、8、9、10
                    在16进制中表示0-16:0h、1h、2h、3h、4h、5h、6h、7h、8h、9h、Ah、Bh、Ch、Dh、Eh、Fh、10h
                    在内存中,数据是以二进制存放的,比如:1001011100001111b,但是二进制可读性很差,所以为了提高可读性在绝大部分软件里我们都用16进制表示内存的数据。
                    比如上面的1111 0111 0000 1111b转换成16进制为F70Fh,这两个数是完全相等的。(从第一位开始,每4位2进制数可以转换成1位16进制数,具体如何换算百度一搜一大堆,或者直接百度在线进制转换)


                    IP属地:四川11楼2022-09-01 19:46
                    收起回复
                      了解了数制,我们回到正题。所以什么是pid捏?
                      每当在游戏中遇到宝可梦时,系统做的第一件事就是生成一个我们称之为PID(宝可梦识别码)的32位2进制数也就是8位16进制数(4位2进制可以构成1位16进制,32/4=8),这串数字也叫宝可梦的个性值。
                      如上面所说,有关宝可梦的许多信息都可以仅从PID找到,如:性格、特性、性别。


                      IP属地:四川12楼2022-09-01 19:49
                      收起回复
                        那么pid这么重要,那它是怎么生成的呢?
                        简单来说pid是随机生成的,但是众所周知在电子计算机上是不可能生成真正意义上的随机数,都是由特定算法生成的伪随机。事实上有许多随机数生成的方法,宝可梦采用的是较为简单的线性同余随机数生成器。
                        下面我们把随机数生成器简称为RNG。
                        虽然该方法实现起来非常简单,但如果把rng生成的随机数彼此相邻列出,除非我们应用公式,否则我们不可能知道下一个伪随机数是什么。
                        从红蓝宝石开始的所有正作宝可梦游戏中使用的随机数生成器(RNG)的工作原理如下:
                        当游戏加载时,程序会为一个32位的2进制(8位16进制)的变量分配一个数字,这个变量就是我们常说的seed。而生成seed的这个算法会根据游戏的不同而不同,但是在红蓝绿宝石里,这个seed的初始值固定为0(所以3代乱数很简单)。
                        然后,每当调用rng时,都会执行下面的步骤:
                        1)新的seed等于(老seed × 41C64E6Dh + 6073h)的2进制形式的后32位。(第一次调用时老seed固定为0)
                        2)获取新seed的前16位2进制数作为本次调用rng的随机数。(这个新seed会作为下一次调用rng的老seed)


                        IP属地:四川13楼2022-09-01 19:56
                        收起回复
                          那么程序是如何通过RNG获得宝可梦的PID的捏?
                          很简单,游戏调用2次rng即可创建一个PID。由于每次调用rng都会产生一个16位2进制数字(4位16进制数字),所以只要把这两个16位2进制数字(4位16进制数字)合在一起就会变成一个32位2进制数字(8位16进制数字),这个数字就是宝可梦的PID。
                          第二个随机数是PID的前16位,第一个随机数是PID的后16位。
                          例如,生成的两个随机数分别为1A1Ah和A1A1h,那么宝可梦的PID则是A1A11A1Ah。(当然这里第一个随机数是1A1A,第二个随机数是不正确的,我只是举个列子)


                          IP属地:四川16楼2022-09-01 20:19
                          回复
                            上面提到的宝可梦的性别、特性、性格都可以仅从PID中获取,那么既然我们了解了PID是如何通过RNG创建的,下面我们就深入了解一下PID是如何决定宝可梦的性别、特性、性格的。


                            IP属地:四川17楼2022-09-01 20:19
                            收起回复
                              2026-04-24 00:43:08
                              广告
                              不感兴趣
                              开通SVIP免广告
                              牛的,顶顶


                              IP属地:山东来自Android客户端18楼2022-09-01 22:22
                              回复