11.すべて計算通りだ
ステータスを弄ったときに感じたのだが、このゲームの作成者は16進数の区切りの良い数を使う癖があるようだ。
つまりこれは、2進数の桁とも言える。
我々が日常生活で使っているのは、主に10進数。
0から1ずつ増え、9を超えたところで、つまり10個増えたタイミングで桁があがり10になる。
一方で2進数とは、2個増えたタイミングで桁が上がる。
つまり、0,1の次は10だ。
0,1,10,11,100,101,110,111・・・といった感じになる。
この2進数は、16進数と密接な関係にある。
例えば、各種ステータスの限界値である255だが、16進数ならFFである。
これを2進数にすれば11111111と、1が8個並んだものになる。
美しい。
レベルアップする経験値も、16進数や2進数のキリが良い時ではないか?
と想像してしまうのだ。
レベル2に上がったタイミングは、経験値が30~90の範囲と想定している。
この中で、2進数としてキリが良いのは32と64だ。
31は16進数なら1F、2進数なら11111と1が5個並んでいる。
これが32になると、16進数で20、2進数で100000となる。
2進数で考えると、5桁から6桁に変わったわけだ。
32の次にキリが良いのは64だ。
63は16進数なら3F、2進数なら111111と1が6個並んでいる。
これが64になると、16進数で40、2進数で1000000となる。
2進数で考えると、6桁から7桁に変わったわけだ。
もし32でレベル2になったのなら、64でもう一つレベルアップしても良い様に思える。
このことから、レベル2になったのは、64のタイミングではないだろうか?
で、レベル3になるタイミングを考えてみる。
経験値が112~132ポイントの間に、レベル3になる閾値があるとの想定だ。
112~132の間でキリが良いのは128だ。
127は16進数で7Fとなり2進数なら1111111と1が7個並ぶ。
128で16進数が80となり2進数なら10000000となる。
2進数で考えると、7桁から8桁に変わったわけだ。
そうなると、レベル4になるのは、256か?
255は16進数でFFとなり2進数なら1が8個ならんでいる。
そんでもって、レベル5は1が9個並ぶ511から512に上がるときかな?
これは、2のべき乗で考えることもできる。
64は2の6乗
128は2の7乗
256は2の8乗
512は2の9乗
というわけだ。
この計算が正しければ、後半のレベルアップは、かなり厳しいものになるだろう。
だって、レベルを上げるには、今の倍の経験値が必要になるんだから。
レベルの上限が低いのかもね?せめて20とか。
まあ、すべては机上の空論。勝手な妄想でしかないのだが。
んでは、現実に戻ろう。さっき作った【低級回復薬】でも納品しますかね。
個別の依頼に1個だけの納品はなかったので、常時クエストから納品する。
《依頼》
依頼者:商人ギルド
依頼内容:低級回復薬の納品
達成ボーナス:10ガル/個
取得経験値:1ポイント/個
依頼品を右側のカゴにお入れください。
カゴに入らないサイズの場合は、職員をお呼びください。
さて、1個だけ入れるか。
しかしこの装置は作りこみが甘いな。
さっき、2つがくっついていただけで10個を9個を判断していやがった。
上手くやれば、偽装して納品することもできそうだな。
まてよ?偽装?
俺の手が、勝手にCtrl+Cに伸びた。
止まった。
画面の一番下に#のプロンプトが表示される。
よし、コマンド入れてみよう。
# ls
表示されたファイルは2つだ。
# ls
quest.sh
request.txt
quest.shは納品画面を動かすやつだろう。
request.txtを見てみるか。
# cat request.txt
Requester:"商人ギルド"
Content:"低級回復薬の納品"
Bonus:0x000a*n
Experience:0x0001*n
上の2行はそのままだな。
3行目を見てみると
『Bonus:0x000a*n』
なんじゃこの暗号は。
えっと、元々は何て書いてあったっけ?
『達成ボーナス:10ガル/個』
0x000a*nだと?
*はアスタリスク。これはコンピュータの世界では掛け算の×と同じ意味になる。
つまり『0x000aかけるn』だ。
1個あたり10ガルもらえるんだから、これを掛け算にすると
1個の場合は10×1
2個の場合は10×2
3個の場合は10×3
:
n個の場合は10×n
これだ。
nは個数が入る変数だな?
じゃあ*の前に書いてある0x000aが何か?って話だ。
0はアルファベットのオーじゃなくてゼロに見える。
なるほど、わかったぞ!
わかったけどさ、ステータス画面と書き方が違うじゃないか。
おそらく組み込んだ担当者が違うんだろうな。
プログラム内で一貫性を持たせてほしいものだ。
先頭の0xは、16進数を表すときに使う。
例えば20と書いたとき、10進数の20と16進数の20では値が異なる。
このような混乱を避けるため、16進数の場合は0x20などと書くことがある。
ここでは0x000aと書いてあったので、16進数のaとなり、10進数なら10になる。
つまり
『0x000a*n』
は
『10×n』
で
『達成ボーナス:10ガル/個』
これと辻褄が合う。
よし、いじるか。
金には困ってない。
いじるのは、経験値だ。
『Experience:0x0001*n』
これをさっきの達成ボーナスと同じ考えで置き換えると
『取得経験値:1×n』
ということになる。
やっちまうぜー
さて、レベルはいくつにしようかな?
0x0001という書き方から想定するに、4桁しか入らないのだろう。
つまり、0xffffが設定最高値になる。
現在の取得経験値は、さっきの仮計算によると132ポイントだ。
これに0xffffつまり、65,535が追加されるのだから、合計で65,667になるのか。
さっきの仮説を思い出す。
65536が2の16乗となるので、レベルは12になるはずだ。
さてさて、仮説は正しいでしょうかね?
おっと、設定を変更しましょうか。
# vi request.txt
Requester:"商人ギルド"
Content:"低級回復薬の納品"
Bonus:0x000a*n
Experience:0xffff*n
:qw!で保存。
納品画面を起動しましょう。
# ./quest.sh
よかった、ちゃんと元の画面に戻った。
で、このように表示されたわけだ。
《依頼》
依頼者:商人ギルド
依頼内容:低級回復薬の納品
達成ボーナス:10ガル/個
取得経験値:65535ポイント/個
依頼品を右側のカゴにお入れください。
カゴに入らないサイズの場合は、職員をお呼びください。
ふぉっふぉっふぉ。
一番お手軽な納品で、アホみたいな経験値が入るぞ?
さっそく納品ですよ?
どうなることやら。
《Information》
依頼達成によりヨシュアのレベルが上がりました。
依頼達成によりヨシュアのレベルが上がりました。
依頼達成によりヨシュアのレベルが上がりました。
依頼達成によりヨシュアのレベルが上がりました。
依頼達成によりヨシュアのレベルが上がりました。
依頼達成によりヨシュアのレベルが上がりました。
依頼達成によりヨシュアのレベルが上がりました。
依頼達成によりヨシュアのレベルが上がりました。
依頼達成によりヨシュアのレベルが上がりました。
新しい魔法を覚えました。
クエスト達成報酬として10ガルを入手しました。
レベル10達成ボーナスとして、ボーナスポイントが10付与されます。
ボーナスポイントが9ポイント付与されます。ポイントの割り当ては、ギルド端末から行ってください。
なんか色々流れたぞ?
目論見通りレベルが上がったようだ。
ギルドカードが薄く光り、情報が上書きされた。
《ギルドカード》
名前:ヨシュア
職業:生産職
レベル:Lv12
ランク:F
すべて計算通りだ。
ってことは、レベル13になるには、経験値が2の17乗である131072ポイントを超える必要があるのか。
途方もない数字だな。
一瞬でできるが。
別にレベルを上げる必要性は今のところないので、これぐらいにしておこう。
自分の仮説が正しかっただけで満足です、はい。
満足したら、急に腹が減った。
腹時計はゲームの中でも狂わないようです。
面倒だ、ギルドの食堂で済ませるか。
今日のディナーはカレーです。
でも、ライスじゃなくてナンでした。
ナンもいいけど、やっぱりライスが欲しくなるよね。
この世界にライスはないのかな?つライッス。
家に帰ると、誰もいなかった。
いや、いるんだろうけど、実体化してないだけか。
テーブルの上に、置手紙があった。
『お風呂は沸いてるからね。』
『入ったあとは洗っておいてね。』
『入らなくても、洗ってね。』
『お風呂のお湯を飲むなよ?変態。』
ふむ。照れ隠しだね。
ありがたくお風呂をいただきましょうか。
湯舟に浸かりながら、頭の中を整理しよう。
まだゲーム開始2日目なのに、色々な事が起きている。
そうだ、まだ2日目なのだ。時間の経過が遅いな。
まず確認したいのが、地下の合成装置だ。
この家にある理由を知りたい。
そういうのは、この家の住人に聞くのがいいだろう。
2階の子供部屋に住んでいる、いや棲んでいるEとF。
あれ、名前なんだっけ?エリザとフリオだったかな?
あの2人の親が所持していたことが濃厚だ。
厳しく入室を規制されているので、部屋の外から声をかければいいかな?
さて、そろそろ風呂を出ましょうか。
で、楽しみの風呂掃除だ。
魔法を使ってみたかったんだよね。
まず、栓を抜いてお湯がなくなるのを待つ。
よし、なくなったぞ!【クリン】だ!
んー、これは綺麗になったのかな?
差がわからないな。
で、着替えるわけだが、服は1セットしかない。
着る前に【クリン】を掛けておく。
うん便利だ。
これがあれば風呂に入らなくても体は綺麗になるのだが
風呂は心も洗うのさ。
何言ってんだ俺。
気を取り直して2階に向かう。
エリザ、フリオ。どっちに聞くかな?まあ、エリザだろうな。
部屋の扉をノックする。
コンコン
「エリザいる?」
コンコン
「エリちゃーん」
コンコン
「エリー my love so sweet」
コンコン
「I knockin' on your door」
E「うるさいわね、聞こえてるわよ。」
「よかった、返事がないから死んでるのかと思ったよ。」
E「死んでるわよ。」
「そうか、リアルにお前はもう死んで「言わせないよ」あら残念。」
部屋に入れてもらい、ソファーに座った。
エリザはベッドの上に座っている。
その距離、約3m。
警戒されてる?まさかね。
「あのさ、この家に地下室あるよね?」
E「うん、あるけど、あそこはパパに入っちゃダメって言われてたの。」
「そうか、じゃあパパは何をしている人だったのかな?」
E「パパは自分の事はあまり言わない人だったわ。ママが言うには国のために働いてる偉い人だって。」
「どこかで働いてたの?それともずっと家にいた?」
E「家にいることが多かったけど、しょっちゅう王都に呼ばれてたわ。」
「地下の部屋に、本がいっぱいあったんだけど、あれ読める?」
E「入っちゃダメって言われてたから知らないわ。」
この子から、これ以上の情報を得ることは難しいだろう。
フリオは・・・、いいか。聞いても泣いてるだけで何も出てこないだろう。
わかったことは、この家の元住人は、国のお抱えの何かだったのだろうということ。
宮廷錬金術師とか?そんなのあるか知らないがな。
さて、寝室に向かいますかね。
大きなベッドに滑り込み、明日は何をしようか考えながら目を瞑るが、思いつく前に寝てしまった。