Skip to the content.

ゲームの上限値はどう決まるのか――255と21億4748万3647から考える仕様設計

『パズル&ドラゴンズ』の通常のダメージ上限値は、2021年の公式アップデート情報で 21億4748万3647 と説明されている。20億でも、99億9999万9999でもない。なぜ、これほど半端に見える数なのだろうか。[1]

この値は「2の31乗−1」、つまり 32ビット符号付き整数の最大値 と一致する。数字の意味はこれから順にほどいていこう。ただし、パズドラの運営がこの資料で数値の型を由来として説明したわけではない。「一致している」は事実であり、「その型に由来する」は推測である。[2]

数を記録できる範囲には、コンピュータ側の都合がある。一方、ゲームでどこまで増やしてよいかは、作り手が決めるルールだ。両者の関係を整理すると、上限は成長目標にもなり、長期運営で取引を妨げる壁にもなる。

本稿は「ゲームプランナーのためのコンピュータ科学」の第1回として、数値の上限を扱う。既刊の乱数の話やデータベースの基礎と同じく、目標はエンジニアと仕様を話し合うための共通言語を持つことだ。プログラミング経験は必要ない。


1. 255は、2進数のメーターでは切りのよい数

1桁に入る数字が、0と1だけなら

3桁のメーターを想像してほしい。普段使う数字なら、各桁は0〜9の10通りで、000から999までを表示できる。1,000に進むには、もう1桁が必要だ。

コンピュータでよく使う 2進数 は、各桁が0と1の2通りだけになる数え方である。その1桁を ビット と呼ぶ。右端の桁が1まで進むと、次は左へ桁上がりする。

普段の数え方 2進数での表し方
0 0
1 1
2 10
3 11
4 100

2桁なら「00、01、10、11」の4通り。桁を一つ増やすたびに、表せる組み合わせは2倍になる。8桁、つまり8ビットなら256通りだ。0から数えるので、最後の数は256ではなく 255 になる。

同じ8ビットでも、マイナスを扱うと127まで

ここまでの数え方は、マイナスを扱わない 符号なし整数 である。「整数」は、小数部分のない数という意味だ。

マイナスも扱う 符号付き整数 では、同じ256通りを負の数にも割り当てる。8ビットなら、範囲は −128〜127 になる。負の側が128通り、0と正の側が128通りで、合計256通りだ。[2]

数を入れる器 扱える範囲 最大値の見方
8ビット・符号なし 0〜255 256通りを0から数える
8ビット・符号付き −128〜127 半分を負の数に割り当てる
32ビット・符号付き −2,147,483,648〜2,147,483,647 正の側は2の31乗−1まで

この「数を入れる器の種類」を 型 と呼ぶ。255、127、21億4748万3647は、2進数の桁数と符号の扱いから生まれる、規則性のある数なのである。[2]

8ビットの256通りを、符号なしでは0〜255、符号付きでは負の数128通りと0以上128通りの−128〜127へ割り当てる概念図


2. 上限の次に何が起きるかは、別に決める

メーターが最後の数に達したあと、さらに1を足すとどうなるだろうか。ゲームとしては、いくつもの処理が考えられる。

処理 プレイヤーから見える結果 決める必要があること
上限で止める 値がそれ以上増えない 超過分を失うのか、別の場所へ送るのか
0や最小値へ戻る 大きかった数が急に小さくなる 意図した循環か、避けるべき不具合か
エラーとして扱う 受取や取引が成立しない 操作を取り消し、理由をどう伝えるか

型の範囲を超える計算は オーバーフロー(桁あふれ) と呼ばれる。上限で止めるには、そのための判定と処理が必要だ。自動的に都合よく止まるとは限らない。

実際、C#というプログラミング言語でも、設定によって、範囲外の計算をエラーとして検出する場合と、入りきらない上位の桁を捨てる場合がある。後者では最大値の次が最小値へ回り込む。[3] 言語や演算によって規則は異なるため、「あふれたら必ず0になる」という覚え方も危険だ。

仕様に何も書かなければ、実際の挙動は使用する型やコードに委ねられる。 ゲームとして望ましい挙動は、仕様として決め、実装で保証する 必要がある。

ここで区別したいのが、器の限界とゲームの上限である。255まで入る器に対して「所持数は99まで」と決めることはできる。将来の拡張余地を内部に持たせながら、プレイヤー向けの上限を小さく設定する設計だ。


3. 長期運営で、取引価格が器を追い越す

『Old School RuneScape』では、Grand Exchange(以下GE)という公式の取引所の上限が問題になった。2026年6月15日の公式説明によると、一つの取引注文で扱える金額は 2,147,483,647コイン。運営は、古いシステムで使う32ビット整数がこの制限の由来だと明言している。[4]

3rd Age Pickaxeなど、それを超える価格の希少品は、GEの外で取引する必要があった。プレイヤーはプラチナトークンを使った直接取引や外部サービスでの交渉に頼り、詐欺の危険や価格の分かりにくさを抱えることになる。公式取引所に上限があることで、安全な売買の仕組みから取引がこぼれ出ていたのだ。[4]

長期運営では、通貨の蓄積やインフレによって、当初は十分に大きく見えた上限へ価格が近づきうる。ただし、この事例を物価全体の上昇だけで説明するのも不十分である。公式説明は、希少品に加え、新しい高難度コンテンツの品物が供給の少ない登場直後に高額になる状況も挙げている。 平均的な買い物が収まっていても、一部の取引だけが先に上限へ届く のである。[4]

通貨の流入・流出を調整する方法はゲーム内経済の設計で扱っている。ここでの課題は、価格が上限に届いたときにも、売買の機能を提供できるかという点だ。


4. 上限を取り込む、残す、後から広げる

取り込む:パズドラの成長と編成にする

パズドラは2021年のVer.19.0で、潜在覚醒スキル「ダメージ上限解放」を追加した。レベル超限界突破済みの対象モンスターに付けると、上限が通常の2倍の 42億9496万7294 になる。[1]

2024年のVer.21.7では、潜在覚醒の上限倍率を見直した。一部の耐性系に1.5倍を加え、既存の1.5倍を1.8倍へ、「ダメージ上限解放」を3倍から4倍へ引き上げている。キラー系覚醒の上限倍率も2倍へ調整した。それぞれ適用条件があり、4倍は副属性しか持たないモンスターに限られる。[5]

設計の観点では、攻撃力を上げることに加え、上限を広げることが育成・編成の判断になる。技術的な由来を推測する話とは分けて、 上限そのものがゲームのルールとして使われている と読める。

残す:WoW Classicの当時の判断

『World of Warcraft Classic』のWrath of the Lich King Classicについて、ゲームプロデューサーのAggrendは2022年11月18日、当時はゴールド上限を引き上げることがゲームの健全性につながるとは考えていない、と表明した。全キャラクターとレベル80のキャラクターの所持金データを調べ、最上位層について述べた平均値も上限から遠いことを理由に挙げている。[6]

同投稿は、上位層の平均が上限へ近づき始めたら再検討するとも述べている。上限を残す判断にも、利用実態の観測と見直しの条件が伴っていた。

後から広げる:OSRSの取引機能を拡張する案

OSRSが2026年6月に示した案は、コインやアイテムを一束に持てる個数の上限を維持しつつ、GEでコインとプラチナトークンを併用するものだ。この仕組みは、より大きな値を扱える64ビット数値への対応をゲームシステムに加えたことで可能になったと説明されている。 別通貨の導入と、内部の計算範囲の拡張を組み合わせる 方針である。[4]

告知時の実施目標は2026年の夏の終わりから秋だった。2026年9月23日時点で確認した公式ニュースでは、実施完了を裏づける告知を確認できていないため、本稿では改修案として扱う。[4][7]

この三つに共通するのは、上限の扱いがプレイヤーの行動を変えることだ。成長の選択肢にするのか、今の利用実態に合わせて残すのか、取引を成立させるために広げるのか。判断には、数を扱える範囲とゲームの目的の両方が要る。


5. プランナーが仕様書へ書く五つのこと

① 表示できる桁数と、正確な値の見せ方

画面に収まる数字と、内部で保存できる数字は別である。「万」「億」などで省略するなら、丸め方に加え、正確な値をどこで確認できるかも決めたい。取引の確認画面で価格を省略すると、見間違いが損失につながる。

パズドラのVer.19.0には、所持コインを通常表示の桁より多く持てるようにし、長押しで所持数を確認する仕様も記載されている。表示と所持の範囲を分けた具体例だ。[1]

② 計算途中で必要になる範囲

ダメージに攻撃力、バフ、属性補正などを順番に掛け、最後にダメージ上限で止める仕様を考えよう。 最後に止める処理へ届く前に、掛け算の途中で器からあふれる可能性がある。 あとで上限と比較しても、途中ですでに値が壊れていれば正しい結果を選べない。整数の乗算もオーバーフローの確認対象になる。[3]

仕様書には最終上限に加え、同時に成立する最大の強化条件、計算順序、どの段階で上限処理をするかを書く。それをもとに、途中の計算に十分な範囲を持たせる方法をエンジニアと確認する。この説明は一般的な設計上の注意であり、特定タイトルの事故を示すものではない。

③ 受け渡し先も同じ範囲を扱えるか

サーバーで大きな値を計算できても、受け取るクライアントや保存先のデータベースの範囲が小さければ、そこで詰まる。通信のデータ形式も含め、同じ値を最後まで扱えるかを確認する。

型の名前を全箇所で同じにすることより、 必要な範囲と単位が一致していること が重要だ。「サーバーはコイン単位、画面は万コイン単位」なら、その換算も仕様になる。保存の仕組みはデータベースの基礎を参照してほしい。

④ 運営期間を通じて、誰がどの速さで近づくか

初日の報酬だけでなく、長期プレイヤーの蓄積、イベント報酬の増額、倍率効果の追加、希少品の登場直後の価格まで見積もる。通貨を持つ量の増加と、物価の上昇は分けて観測する。

平均値だけでは、上限へ先に届く層を見落とす。上位層の所持量、上限付近の取引件数、受取に失敗した回数などを見て、どの状態になったら見直すかも決めておく。将来予測には幅を持たせ、強いインフレが続く場合でも改修する時間を確保したい。

⑤ 到達時の処理と、その見せ方

「上限で止める」だけでは、超過分の行き先が決まらない。切り捨てるのか、受取を止めるのか、保管先へ送るのか。警告は処理の代わりではなく、その結果を伝えるためのものだ。

たとえば、以下は 架空の通貨に対する仕様例 である。

項目 仕様例
単位と許容範囲 1コイン単位、所持数は0〜999,999
通常表示 6桁を表示。受取確認では現在値・受取額・受取後の値を示す
上限を超える受取 全量を受け取れるまで保留し、残高を変更しない
超過時の表示 受け取れない理由と、空ける必要がある所持枠を示す
内部計算 上限判定前の「現在値+受取額」も安全に計算できる範囲を確保する
確認箇所 サーバー、通信、クライアント、保存先で同じ単位・必要範囲を扱う
見直し条件 上限付近の利用者と受取保留の増加を定期的に確認する

この例なら、上限ちょうどで受け取れる場合、1だけ超える場合、一度に大量に受け取る場合を確認できる。意図しない負の値も、受け入れずに処理できるか確認する。 「最大値はいくつか」と「境界で何をするか」を一組で書く と、実装とテストの会話が具体的になる。

架空の通貨受取フロー。十分な範囲で合計を計算してゲーム上限と比較し、超えなければ受取・保存・表示、超えれば残高を変えずに受取を保留して理由を表示する


コラム:ガンジーの核攻撃は、もっともらしい説明を点検する教材

初代『シヴィライゼーション』には、「ガンジーの低い攻撃性が引き算で0を下回り、255へ回り込んだため核攻撃を好むようになった」という有名なバグ説がある。8ビットの範囲を知ると、いかにも納得しやすい話だ。

しかし、同作を手がけたシド・マイヤーは、2020年の自伝『Sid Meier’s Memoir!』でこのバグ説を否定している。ここでは書籍本文の直接確認ではなく、自伝の内容を紹介したPCGamesNの報道に基づく。[8]

数の回り込みが技術的に起こりうることと、その作品で実際に起きたことは別である。プランナーが事例を仕様判断に使うなら、説明のきれいさに加え、開発者の証言や一次資料まで確かめたい。


コラム:Far Landsと、大きな数ほど粗くなる目盛り

『マインクラフト』のFar Landsは、非常に遠い場所で奇妙な地形が現れる現象として知られる。開発者Notchは2011年3月9日の「Terrain generation, Part 1」で、遠方における整数のあふれと、小数を扱う計算の丸め誤差の双方を説明した。移動や物理処理にも問題が起こりうるとしている。[9]

小数に使う 浮動小数点数 は、限られた有効桁数で広い範囲を表す方式だ。大きな数になるほど表せる値の間隔が広がり、小さな変化を区別しにくくなる。大きな距離を示すメーターでは、細かい目盛りまで残せない、と考えるとよい。[10]

Notchは当時、通常の遊び方でこうした問題に遭遇することが一般的になるまでは、おそらく修正しないという考えを述べ、Far Landsに謎や魅力を加えているとも評した。ただし同記事は、奇妙な地形の厳密な原因を調べていないとも記している。地形の崩れをすべて小数の誤差だけで説明するのは、この資料の範囲を超える。[9]

その後については、Minecraft公式の2017年の記事が、Beta 1.8でFar Landsが削除されたと振り返っている。当初の判断は永久的な方針ではなかった。[11]

上限の外側を魅力として受け止められる探索と、数値の正確さが必要な通貨取引では、許容できる挙動も異なる。上限値の設計では、 扱える数の範囲、その境界で起こること、プレイヤーへの影響 をそろえて決めたい。

References

1. ガンホー・オンライン・エンターテイメント「Ver.19.0アップデート情報!」 — パズル&ドラゴンズ公式、2021年2月19日。通常ダメージ上限、潜在覚醒、コインの表示と所持上限。

2. Microsoft「Integral numeric types」 — Microsoft Learn、2026年9月23日参照。符号付き・符号なし整数型の範囲。

3. Microsoft「The checked and unchecked statements」 — Microsoft Learn、2026年9月23日参照。整数演算のオーバーフロー検査と乗算を含む対象演算。

4. The Old School Team「GE Improvements: Beyond Max Cash」 — Old School RuneScape公式、2026年6月15日。32ビット整数に由来する制限、GE外での取引、プラチナトークンと64ビット数値への対応案、実施目標。

5. ガンホー・オンライン・エンターテイメント「Ver.21.7アップデート情報!」 — パズル&ドラゴンズ公式、2024年8月28日。覚醒・潜在覚醒の上限倍率と適用条件。

6. Aggrend「[WotLK] Raising gold cap」 — Blizzard公式フォーラム投稿、2022年11月18日。公式フォーラムへの直接アクセスができなかったため、投稿を収録したBlue Trackerを参照。「100th percentile average」という原文の表現は上位層の平均についての説明として扱い、全員が未到達という意味には広げていない。

7. Jagex「Old School RuneScape — News」 — Old School RuneScape公式ニュースアーカイブ、2026年9月23日参照。7〜9月の一覧と直近の更新告知を照合。GE改修の実施完了は確認できていない。

8. Dustin Bailey「Sid Meier says Civilization’s nuclear Gandhi bug isn’t real」 — PCGamesN、2020年9月8日。『Sid Meier’s Memoir!』における否定を紹介する報道。書籍本文の直接参照ではない。

9. Notch「Terrain generation, Part 1」 — The Word of Notch、2011年3月9日。閉鎖済みの原ブログを保存したOmniarchiveのアーカイブ。「How infinite is it?」を参照。

10. Microsoft「Double Struct」 — Microsoft Learn、2026年9月23日参照。「Floating-point representation and precision」を参照。

11. Duncan Geere「Block of the Week: Mushroom」 — Minecraft公式、2017年7月7日。Beta 1.8でのFar Lands削除への言及。


この文書は、Perplexity、Claude、ChatGPT の3つのAIの支援を受けて著述されたものです。引用画像を除き、MIT License にて提供されています。