世界はXXで出来ている その3
魔法関係の説明回?
パソコン用語のわからないものはスルーしてくださいませ。
「……ん?」
訳もがわからず、首を傾げる。
……今、一瞬、意識がとんだか?
瞬間停電で、ほんのコンマ何秒か電気の流れが遮断されて蛍光灯がほんの少し明滅するような。ほんの、ほんの少しの記憶の断絶。
直前まで何をやっていたのかは確かに覚えている。記憶は連続していると思うのだが。
なぜだろう、何か違和感を覚えてしょうがない。なんというかビデオを一時停止して、再生されたような。コマが一枚か二枚、飛んだような?
「おにいちゃん、どうかしたのー?」
「だいじょうぶなのー?」
膝の上のちみっこたちが、小さく首を傾げて俺を見上げてる。俺はその肩にちょっと手を乗せて「なんでもないよ」と答えた。
よくわからない違和感があったのは確かだが、何をやっていたのか、やろうとしていたかに疑問はない。ちみっこどもから異世界のソースコードをもらって、解析しようとしていたのは確かで、実際パソコンの画面には適当に開いたソースコードが表示されていた。
そうだ、魔法関係ちょっと調べてみたいよな。あのルラレラの異世界で俺が魔法を使えるかどうか、ソースコード解析すればわかるんじゃね?
えーっと、そうすると、ジョブとか種族とかをまず見つければ。
……っと、これ種族のかな。つか、日本語でファイルの名前つけんなよな。
ningen.javaとかかれたソースファイルを開く。中には種族:人間を定義するクラスが定義されているようだった。
ここでいうクラス、というのは学級という意味でも、職業というような意味合いでのものではなく、オブジェクト指向という考え方におけるクラス(class)だ。ややこしい話になるので詳しくは説明しないが、ものすごく大雑把な話をすると、クラスというのは設計図だ。この設計図には、メンバとよばれる値と、メソッドと呼ばれる振る舞いが定義されている。
例えば今開いたファイルには、人間のメンバとして、HPやMP、力やすばやさなんかのいわゆるステータスと呼ばれるものがメンバとして定義されていた。その人間ができること、ふるまいとして、いくつかのメソッドが書かれている。例えば、歩く、走る、飛ぶ、などだ。
そして、魔法を使うためのメソッドらしきものも定義されていた。
つまり、このソースが正しいのであれば、人間であれば誰でも魔法が使える、ということになる。
……とすると、俺が魔法を使えないというのはどういうことだ?
「ふうふう、ようやく画面表示されるところまで戻って来られました……」
画面の端から、ずいぶんと疲れた様子のナビがふらふらと現れて、ぱたん、と倒れた。
そういやナビのやつ、ちみっこにどっか放り投げられてたっけ。
「ん、ちょうどいいや。ナビ、プレイヤーデータか、人間のデータかわからないが、ちょっとデータベースから俺のデータを探してくれないか? あと、比較対照用に……」
誰がいいかちょっと思いつかなかった。よく考えたら向うに純粋な人間の知り合いっていないし。
「……誰でもいいから、適当な人間種族のデータをひとつ、探してくれ」
「了解です、太郎様」
ナビが答えた瞬間に、ウィンドウがひとつ開いて結果が表示された。
「……あれ、微妙にデータの構造が違うな」
表示された数字の羅列をみると、似た並びではあるが何箇所か違うところがある。
「まさか」
先ほど開いたファイルの近くにあるファイルをいくつか開く。
「う、種族人間だけでクラスが五つくらいあるな」
つまり、向うの世界の人間と、俺では、実体を生成するためのクラスがどうやら別であるらしい。
俺のデータの構成からみて向うの俺を構成するクラスって……ningen-Oniichan.javaってこれか? おにいちゃんって、おい。
「えーとね、おにいちゃん」
「なんどか言ったけれど、おにいちゃんはこっちの世界そのまんま、向うに行ってるの」
膝の上のちみっこたちが俺の服をくいくいと引っ張る。
「おにいちゃんは、ままの世界の人間だから、ままの世界の人間の定義なのー」
「だから、わたしとわたしの世界の人間と、ちょっと定義がちがうのー」
「なるほど」
ningen-Oniichan.javaを開いて確認する。すると、驚いたことにこちらにも魔法を使えるらしきメソッドが定義されていた。
「……この世界でも、魔法とかあるんだな」
なら、俺も使える、のか?
いや待て、こっちでも魔法があるなら向うで魔法を使えない理由が……ってあれ?
よく見ると、メソッドの名前が微妙に違った。
ルラレラ世界の魔法を使うメソッドの名称はmahou()。この世界の魔法を使うメソッドの名前はmagic()。どちらも魔法を使うと言う意味では似ているが、違うメソッドだ。
ルラレラが、こちらの世界で魔法を使えるなら向うでも使えると言った理由がなんとなくわかった。
ゲームで例えてみよう。昔風のコマンド式RPGを頭に思い浮かべて欲しい。
俺が、ドラゴンクエストの勇者だとする。この俺が、ファイナルファンタジーの世界に行ったと仮定する。この場合、俺は、「じゅもん」というコマンドを使用して、ホイミやメラといった魔法を使える可能性はあっても、「まほう」というコマンドを使用して、ケアルやファイアといった魔法を使うことは出来ない、ということなのだ。
どちらも似たようなもんじゃないかと思うだろうが、名前が違うだけでもう別のものなのだ。
「ぐは。ちくしょう、やっぱり俺、魔法つかえねーのかっ!」
おもいっきり気落ちした。
いやまてよ、俺を構成するクラスningen-Oniichan.javaにルラレラ世界のninngen.javaのmahouメソッドを書き加えちまえば、俺も向うで魔法つかえるんじゃね?
そこまで考えて、ああそれが女神パワーで魔法使えるようにするってことか、と思い当たった。反則だからやらない、ってちみっこどもが言ってたな。
ちらっと膝の上のちみっこたちを見ると。にこーと微笑み返してくれた。
まぁ、テストプレイだというのに、テスターが自分のやりたいようにゲームを改造するというのも無茶苦茶な話だしな。
それなら、この現実世界のにあるらしい魔法を習得すれば……! って、そんな簡単にいくわけないしなぁ。この世界の人間でも魔法を使えるのは確からしいが、パンピーの俺が簡単に魔法習得できるくらい一般的であるとはとても思えない。
ん、いやまさか、細かく見てないがmagic()って、手品用のメソッドだったりしないだろうな?
……くそう、あきらめるしかないのか。
せめてどんな魔法があるのかだけでも、見ておきたい。
そう思って、魔法を定義しているクラスを探してみたのだがなぜかそれらしきものが見つからなかった。向うの世界のmahou()メソッドをざっと解析してみるが、特にどこかを呼んでるわけでもないようだ。
どういうことだ?
適当にファイルをどんどん開いていくと、不思議なものを見つけた。
「ん? なんでC言語のソースファイルが」
C言語というのは、Javaと同様、コンピュータプログラムを記述するための言語だ。別のプログラム言語であるため、通常混ぜて使うことはないのだが。
開いてみると、それはどうやら魔法自体の定義のようだった。
メイン関数まで記述されてるから、これ、単体で動くな。なるほど。これをJavaから直接叩いてるのか?
C言語のソースファイルを漁るが、あまり数は多くなかった。
「みぃちゃんや、ロアさんが使ってた魔法って、入ってないっぽい?」
首を傾げていると、膝の上のちみっこたちが服をくいくいと引っ張ってきた。
「Cのそーすは、黒魔法なのー」
「ロラさんがつかったのは、神代魔法で、みぃが使ったのは白魔法なのー」
「何が違うんだ?」
尋ねると、ちみっこたちは微妙な顔になった。
「さいしゅうてきな原理は同じなのー」
「ぜんぶ自然現象なのー」
「黒魔法は、別の世界で定義されたものを取り込んで使えるようにしたものなの」
「効果はそれなりに高いけれど、あまりゆうずうがきかないのー」
「白魔法は、精神のちからをぶつりげんしょうに変換するものなの」
「ちょーのーりょくみたいなかんじなの。イメージ次第でいろいろできるの。でも、個人の精神力が源なので、出来ることはたかがしれてるの」
「この黒魔法と白魔法を使用するのに、さっきおにいちゃんがみていたmahou()コマンドが使われてるの」
「……ロアさんが使ってた、あのメチャクチャな破壊力の神代魔法ってやつは? mahou()メソッド使わないのか?」
「あれは、呪文詠唱するだけなの」
「あるいは、書くだけなの」
「……つまり、言葉を読み書きできるなら使用可能ってことかっ!」
それは、俺でも魔法が使えるってことだなっ?
「ただし、とっても正確な発音が必要なのー」
「ぐは。あれか、すっごく昔風の魔法使いのイメージだな」
正確に韻を踏まなきゃ魔法が発動しないとか、そういう系統か。
俺あんまり滑舌とかいいほうじゃないんだよな。
「書く方って、巻物とかか?」
「正確にいうと、神代魔法はその場でプログラムを記述して実行するイメージなの」
「それなら前もって記述しておけば、いいんじゃないか? スマホとかにいれといて、必要な時に実行とかって出来るか?」
「ん、おにいちゃんのスマホなら、セカイツクール入れればたぶん可能なの」
「セカイツクールをおにいちゃんにあげたのはままだから、たぶんやっていいってことだと思うの」
「おおお~!」
俺は思わず握りこぶしを天井に向かって突き上げた。
「つまり、直接チートはなしだけど、間接的にはチートありってことだなっ!」
寧子さんに大感謝! あいしてるぜぃっ!
前もって魔法を記述しておけば、向うで魔法が使える。つまり、俺、魔法を作れるってことだよな!
さっそくなんか作ってみたい!
「ナビ、なんか魔法データのサンプルとかないか?」
「はい、簡易データ作成ツールなどございますよ」
ナビがひょいとどこからかウィンドウを引っ張りだして、広げる。
「名前、消費MPを決めていただきまして。効果は規定のものから選択できます。演出は画像と動きを組み合わせてパターンを作ります」
「ふむふむ」
えーっと、この氷の結晶みたいなのが吹雪のようにぐるぐると相手を取り囲んで。
ん、よし、動きはこんなもんか。
おお、即死効果とかあるんだな。んじゃ。
「そは大いなる死の翼。永久の棺にして常世の神籬。白き闇と酷寒の裁き。幾億もの貫く氷。吹き荒れろエターナルフォースブリザード! 相手は死ぬ!」
鼻息荒く叫んだら。
「……」
「……」
ちみっこどもが、微妙な笑顔で俺を見上げていた。
……いや、そんな目でみないでほしい。
く……黒歴史がっ!
かっこいい呪文とかなかなか思いつかないもんですねぇ。