第3話 32bit

 座標の原点を表す『(+0.0000000 , +0.0000000)』の吹き出し。他に何かないかと辺りを探る。そして、すこしさきに草むらの中に円形の石が敷いてあるのを発見した。


「なんだこりゃ。いかにもポータルって雰囲気ではあるが……」


 しゃがみこんでまじまじと観察する。明らかな人工物である。何やら文字らしきものが彫ってあるがさっぱりわからない。雰囲気で適当なことが書いてあるんじゃないか。掘った文字に積もる砂を払おうと手を触れると青白く輝きだした。


 宙に『はじまりの町』『アララトの神殿』『しだれ杉の森』……地名? と思しきものが多数並ぶ。これは恐らくデバッグ用のポータルではなかろうか。god権限をもった管理アカウントで座標を原点指定でログインしてここから各地のポイントに飛ぶ……そんなユースケースが思い浮かぶ。


「なるほどな。いかにもゲーム系だ」


 原点のこの地点は見る限り何もない草原で、どうにもサバイバル向きではない。道らしきものすらないし、遠方をぐるっと見回しても文明らしきものは見当たらない、本当に何もない草原だった。こんなところ、あてもなくさまようのは避けたいところだ。文明のある地点までワープできるならそれに越したことはない。


「god権限とかつけちゃってるしな……。神殿とか行ったら大騒ぎになるかもしれん。ここは無難にはじまりの町か」


 宙に浮かぶUIユーザーインターフェースに触れ『はじまりの町』を選ぶ。割とイチかバチかではあるが、この何もない草原でサバイバルするよりは分の良い賭けだと思えた。


 いざ、『はじまりの町』へ!



§


アヘノバルブスの福音書 4章


 クロディアは長い巡礼の終わりに旅立った町へと帰り来た

 町の見える丘で休むと、隻眼の男が来てパンを喜捨した

 クロディアは男の行いを尊び、祈り、祝福しようとしたが

 祈りで目が蘇ることもないと暴れだし、ついにクロディアをかどわかそうとする

 そこに忽然と異国の服を着た男が現れて言った

「悪しきものよ、見てはおれぬ」

 隻眼の男は驚き、剣で刺し貫くが異国の服の男は倒れることはなかった

「命は溢れた」

 隻眼の男は逃げ去り、異国の服の男はクロディアを祝福した

「過ちは、やすきところになりて、必ずつかまつることに候」

 クロディアは町へと辿り着くと聖女となった


§



管理者ポータルを抜けると、一組の男女がまさに睦もうとしているところであった。


「悪い! すまん! 何も見てないから!」

 間の悪いところに出くわしたと慌てて後ろを向くと

「助けてください!」

 えっ? よもやこれは襲われている現場か? 再び振り返ると、隻眼の男が剣を構えて突進してくるところだった。


 やばっ


 ドスッ。腹に鈍い痛みが走ったかと思ったが……? 血は出ていない。しかし、腹に剣が生えていた。なんじゃこりゃぁぁぁ。致命傷の大ダメージかと思ったがどうなってるんだ? 目の前にくるくるとアニメーションして表示される数字。


 HP 4,294,967,223


桁溢れオーバーフローか……!?」

「な、なんなんだ手前ぇ!」


 化け物を見たかのような怯えた目で隻眼の男は後ずさる。


 俺は、腹に刺さった剣をどうしたものかと思案していた。痛くはないが、腹に刺さっていては邪魔だ。抜けるだろうか? 剣の柄を握ってみる。お、動かせそう。痛くはないな? せーの。


「ば、化け物ッ……!」


 剣を引き抜くと、隻眼の男は恐れをなして逃げ出していった。しかし、このHPはアレだな。符号なし32bitだ。4byteのデータでHPを表していたのだろう。その場合の最大値は4,294,967,295で2の32乗-1となるはずだ。今のHPは刺した分のダメージを負って少し減った状態と考えれば辻褄は合う。HP0でどうなることかと思ったが……。


 おそらく境界値バグの類なのだろう。実際のソースコードを見ないことにははっきりしたことは分からないが、この挙動からすると、1減らしてHPが0かをチェック、ということを繰り返してアニメーションさせてたのではないか? 通常はHPは1以上だろうから、1ずつ減らしていけば0になったときに死亡判定とすることができる。しかし、イレギュラーでHPが0だったものだから、0から1を引いて4,294,967,295となり、0ではないから死亡判定は行われない、という動き……


 確信した。この世界を作った奴はヘボい。おそらく世界はバギーバグまみれに違いない。


「あのっ!」


 おっと。忘れていた。


「助けていただいてありがとうございます! もう少しで町というところで襲われてしまって…… 助かりました!」


「いやあ、その、あれだ。失敗は、簡単なところになってから起こる。あと少しと油断するといけない。お気をつけなさい、お嬢さん」


 徒然草の高名の木登りだったか。柄にもなくちょっと気取った教訓めいたことを言ってしまった。ここは誤魔化して一刻も早く去るべし!


 俺は脇目もふらず、町へと駆け出した。



----------


 桁溢れでかろうじて助かったhoge神。最大値を超える場合や、最小値を超える場合をオーバーフローと言います。ゲームのバグでしばしば見る現象ではないでしょうか。昔のファミコン時代~スーファミ時代では8bitの桁溢れで 255→0 や、16bitの桁溢れで 65535 → 0 あるいはその逆というのは多くみられたように思います。その後の時代のゲームでもパラメータの上限が255や65535などになることがあり、プログラミングをしなくともこの数字にはそれとなく馴染みがある人も多いことでしょう。


 紛らわしい用語に「アンダーフロー」というものがあります。こちらは、浮動小数点数で極めて0に近い数字が精度の限界で0に丸められてしまう現象を指しますが、オーバーフローの繰り下がりで 0 → 255 のような現象を指すと勘違いされることもしばしばあるようです。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る