異やけき木

異やけき木

気が向いたら。たぶん遊んでるゲームに関係することだけ。

ID,SID

 ID(表ID)、SID(裏ID)(※この記事ではそれぞれこうおきますが、他の表現も存在します。)といったとき、どのような表記を示すでしょうか。第7世代ではトレーナーパスやポケモンの親情報にあるIDが6桁となり、第6世代までのものとは少し異なります。

 初代からXY、ORASまでは、表示されているIDは0~65535までだったのに対し、SMからは0~999999までと、数字の幅が大きく広がっています。SM発売当初にTwitterでは「ID厳選」がトレンド入りするなど、桁が増えたことによる厳選難度や、語呂合わせの自由度の増加の影響は大きかったようです。

 一方で、内部的なIDは変化しておらず、32bitで記録されています。第7世代とそれ以外の世代のIDの計算について、例を挙げて説明してみようと思います。説明は進数についてある程度知っているものとします。

 

 さて、次のような32bitの数が内部IDとして記録されていたとします。

  11001001111000011000010011000000

 まず第6世代までは、これを上位16bitと下位16bitに分けます。

  1100100111100001 | 1000010011000000

それぞれ10進数に直すと、上位51681、下位33984となります。このうち下位の33984が表示され、上位の51681は見えません。ここから、下位が表ID、上位が裏IDと呼ばれます。

 対して第7世代は、32bitの数をそのまま10進数に直します。すると3387000000となります。これを1000000で割ったあまりがIDとして表示されるので、この場合は000000になります。(きりがいいのはわざとです。)

 

 3387000000は第6世代までの ID、SIDを使って51681×65536+33984 としても得られるので、世代間で相互に変換することができます。計算式から言い換えれば、第6世代までは第7世代の1000000で割るところを65536で割り、商をSID、余りをIDとしているとも見えます。よって第7世代以降で32bitの内部IDが先ほどの例のものであるときは、IDは000000、SIDは3387である、とすれば表IDという語の意味を崩さないと思います。しかし、過去作との兼ね合いがあるので浸透はしなさそうです。

 

 IDはポケモンもそれぞれ個別に保有しているため、トレーナーのIDと区別するためにTID(トレーナーのID)、PID(ポケモンのID)と呼ばれるときがあります。PIDは性格値とも言われます。TIDという名称を使うと、表IDだけを指すのか32bitすべてを指すのか、5桁なのか6桁なのかが定義されてるわけではないのでなかなか難しいところです。