魔法のスクリプト

 ケイとローザ姉妹とのショッピングの後。

 リズと一緒にブラブラ歩いていると、ピラフをテイクアウトの弁当にしている店を発見。サラダと一緒に3人分購入する。プラス1人分は明日の俺の朝食である。


 事務所に戻った。


「うーん、疲れた」

「いっぱい買い物して楽しかったよ、デレク」

「そりゃ良かった」


 俺は精神的に疲れた。ケイとローザの姉妹にでくわしたのが大きかった。

 しかし、リズの買い物ができたから結果的には良かったかな。


 まだ夕飯には早いから、少し休んでから魔法管理システムの端末にログイン。


 画面の下の部分には、アプリのアイコンだけではなく、よく使うディレクトリへのリンクと思われるアイコンがいくつか並んでいる。ちょっとクリックしてみるか。


 まず、「魔法スクリプト」と名付けられたディレクトリの内容を見てみよう。

 系統魔法の名前のディレクトリが並んでいる。

 火系統を見てみる。レベル1相当のライト・キャンドル、ファイア・ボールからレベル5のヘル・フレイムまでの名前がついた、数個のディレクトリがある。

 さらにそのディレクトリの中に、プログラムなどのファイルが存在している。


 もしかしてこれが、普段われわれが使っている魔法の「定義」なのか?


 プログラムのファイル、つまりソースファイル自体は SWEET言語で記述されていることが分かった。SWEETという言語は優馬がゲームの開発でも使っていた言語で、オブジェクト指向だけにとどまらないマルチパラダイム言語とされる。開発元はプロトコル指向言語と呼んでいた。


 ダブルクリックすると……あ、統合開発環境のツールが起動した。


 このコンピュータの統合開発環境のソフトウェア自体の名称は Xidex(ザイデックス)というらしい。

 統合開発環境(IDE)とは、ソースプログラムの編集、実行ファイルの作成、テスト、デバッグなどが全てひとつのツールの中で行えるものである。かなり複雑かつ巨大なツールなのが普通だが、ソフトウェア開発で行うべき作業はどんな環境(つまりOSなど)でも似たようなものなので、慣れれば使い方は段々と分かってくる。


 さて、オープンしたのは「ライト・キャンドル」のソースプログラムである。周囲を少し照らす程度の小さな明かりを出す魔法で、明かりは燃えている火ではない。

 どれどれ、何が書かれている?


 パッと見たところでは、……正直、よく分からないなあ。

 ファイルの行数自体は50行足らずといったところだけれど、複数の関数呼び出しの間でパラメータをやり取りしているだけにしか見えない。

 そういえばリズが言っていたな。「魔法を定義しているプログラムは、ライブラリやシステムコールを使う」って。


 統合開発環境なのだから、使われている関数の用途や与えるべきパラメータについてのドキュメントがあるはずだ。少なくともまともな開発者なら、自分が作成した部分についてのコメントくらいは残しているだろう。


 そう思ってゴソゴソしていたら、 Xidex(ザイデックス)でライブラリやシステムコールに関するリファレンス(参照文書)を表示させる方法を発見。

 おお、これでソースプログラムの意味が読み解けそうだよ。


「そろそろご飯にしようよ」

「あ、そうだね」


 さっき買ってきたピラフの包みを持って食堂に移動。ピラフは笹に似た大きくて丈夫な葉に包まれ、さらに外側を紙で包んである。買ってから少し時間が経過したので、少々冷めてしまったかな?

 コーヒーを淹れて、ピラフはレンジでチン。


 厨房から器とスプーンを探してきて、食堂のテーブルでいただきます。

「うまいなあ。やっぱピラフは熱いのがうまいな」

 二人であたたかいピラフと美味いコーヒーに大満足である。


 さて、昨日、風呂に入ったから今日はシャワーだけでいいよな。

「ちょっとシャワーだけ浴びてくるよ」


 そもそも、この世界の人々は毎日風呂に入るという習慣を持っていない。というか、優馬の世界の日本人だけか?


「浴室に乱入したりするなよ」

「てへ」

「でも、待っている間は暇だよね?」

「暇過ぎたら、休眠スリープ状態になってるからいいよ」

 ううむ、しかしそれはなんか申し訳ないというか、可哀想な感じだよなあ。


 シャワーから出てきたら、リズが髪の毛をいじって何かしている。

「リズ、何してるの?」

「えっとねえ、髪の毛を三つ編みにする練習」

 なるほど。右と左に2つの三つ編みを作っている。大きさがちょっと不揃いかな?


「左右で大きさが少し違っちゃっているかな?」

「そうなんだよ。初めてだから難しいよ」


 どうやら例によって、知識はあるがやるのは初めてと言うことらしい。

 三つ編みって「手が覚えている」種類の知識だから、これは練習あるのみだなあ。

 そういえば、リンスをなんとか考えないと、リズの髪の毛がボサボサになってしまうな。リンスなあ。酢か何かから作れるんだっけ。……忘れたよ。



 その後小一時間、リファレンスを参照しつつ、ソースプログラムと格闘。処理の流れがだいたい把握できたっぽいので、リズと一緒に不明点を洗い出してみよう。


「リズ、いいかな?」

「うんうん」

「これ、ライト・キャンドルのプログラムらしいんだけど」

「へえ。あたしも見るのは初めてだよ」


「まず、最初の行」

「うん」

「術者のレベルを確認する関数だとされているが、多分、いわゆる『魔力』が十分あるかを調べている。だから呼び出しに失敗することがあって、失敗したらそこで終わり」

「ほう」


「次に、これは術者が前方に出している手のひらの座標を取得する関数らしい」

「ほう」

「魔力があることが確認できたら、その腕の手首の周りに円形の魔法陣(マジックサークル)を出す。これは『魔法を出しますよ』という感じを表すだけのもので、まあ、こけおどしというか、ゲームを多少なりとも盛り上げる演出にすぎない」

「意味はないよね」

「そうそう。逆に、これから魔法が出るってことを敵に察知されてしまうから、なんのこっちゃという感じだよね」

「あはは、確かに」


「ただ、これを出さないようにもできるはずなんだよね。この直前に、術者の属性を調べる関数を呼び出している部分があって、『魔法エフェクト』のオン/オフを条件判断で使っているんだ」


 そういえば、優馬の記憶で思い出したことがある。

 魔法の発動を魔法陣で表現する方法だが、「分かりやすくていい」という意見と「ありきたりだ」という意見があり、プログラミング・チームの中でかなり議論があった。

 結局、ゲームの企画を出してきた会社が「デフォルトでは魔法陣あり」と決定した。そのため、普通は魔法陣を出す設定だが、ユーザ側の設定で無しにもできるようにした記憶がある。それがここに反映されているのだろうか。


「魔法エフェクトをオフにすると、魔法陣は出なくなるの?」

「そのはずなんだけど、さっきの UserSetting(ユーザセッティング)でユーザの情報を見ても、対応する情報はないみたいなんだよね」

「うーん。多分、デフォルト値のままの情報は表示しないんじゃないかな?」

「そうか。デフォルト値も含めて全部表示させるオプションがあるかもしれないな」


 もう一度 UserSetting(ユーザセッティング)を起動して調べたら、『すべての値を表示』というチェックボックスを発見。

 これにチェックを入れてから自分の情報を表示してみる。


 名前: デレク テッサード

 ……(さっきと同じなので中略)

 魔法レベル: 16

 防御魔法: ON

 体力減衰: ON

 魔法エフェクト: ON

 ドロップアイテム: 10%

 幸運度: 10%

 ……(その他にも何か出たが分からないので省略)


「なるほど。じゃあこれを OFF にしてみるよ」

 ダブルクリックで変更可能にして『OFF』を選択。


「で、魔法を使ってみよう」

(ライト・キャンドル)と念ずる。


 かざした手の上に明かりが灯るが、魔法陣は表示されない。


「あ、本当だ。……でもせっかくだから、属性を切り替えて、魔法陣ありの起動と、なしの起動を使いわけたいな。この端末からいちいち設定するのは面倒なんだけど」

「システム魔法に属性操作魔法があったはず」

「ということは、火系統の魔法のディレクトリじゃなくて、システム魔法について調べると分かるかな?」


 ライト・キャンドルのプログラムは開いたままにしておいて、別のウィンドウでシステム魔法を調べに行く。


「あ、あるね。属性操作魔法。詠唱はこれか」


 詠唱してみる。

「ザ・システムの管理権限を有する我デレク、管理者番号9番が属性『魔法エフェクト』をオンに変更することを申請する。設定」


 再び魔法を起動。

「ライト・キャンドル」

 魔法陣が表示されて、かざした手の上に明かりが灯る。


「なるほど。ここにどんな属性があるかを把握しておくと、色々できそうだな」


 属性の一覧にもう一度目を通してみる。

「……この『防御魔法』って何?」

「魔法が使える人は、魔法のレベルに応じて、攻撃に対応した防御魔法が自動的に発動できるんだけど、知らない?」

「え、そうなの?」


「誰かが魔法で別な人を攻撃するよね」

「うん」

「すると、攻撃目標になった人は、攻撃を察知して、その威力を軽減する防御魔法を起動できるんだよ。魔法のレベルが高い人ほどその能力が高いから、レベルの低い人が高い人に攻撃を仕掛けても、あまりダメージを与えられないんだよ」

「え、何それ、ずるくない?」

「でも、これまで数百年、そういうルールで魔法は使われているはず」

「そうなのかあ」


「じゃあこの『ドロップアイテム』とかは何?」

「ダンジョンでモンスターを倒した時にドロップアイテムが出る確率。『幸運度』は、そういった運任せの現象でどれだけラッキーなことを起こせるか、だね」

「何それ。じゃあ、ここを 100%に設定しておいたら、レアなアイテムが取り放題ってこと?」

「あくまでも確率だから、確実にレアアイテムがゲットできる保証はないと思うけど」


 なんか、まるっきりゲームのパラメータだ。

 しかも、プレーヤが好き勝手に設定したらいわゆる無双状態じゃないかな?


「確か近々、守備隊でダンジョンに行く研修があるんだ。こりゃあ楽しみだな」

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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