転生?転移?
いつからか、私はゲームプログラマーに憧れた。ゲームをする楽しみは徐々にゲームを作りたいという気持ちを作り出した。それは一時の気分ではなく、大人になるまで続いた。結果私はゲームプログラマーとして、ゲームを作っている。
「せんぱーい!バグが直りません!」
「お前なぁ?少しは学習しろ!nullエラーとか出すな!ほら、このタイミング!データ入ってないだろ?凡ミスだ。こういうのは減らせよ?」
「はーい」
今の私は後輩にプログラミングを教える事が業務のメインになっていた。私はプログラムを書くより教える方が向いていると上層部に判断されたらしい。
『プログラムが書きたい…ゲームを作りたい』
そんなことを考えても何も変わらない。私は今日も一日を終え、家に帰ろうとしていた。
『はぁ…明日は春風にあれを教えて…木元にはあれ…名原には…』
ドン!っと鈍い音がする。そして身体の感覚が無くなる。私はトラックに引かれたのだ。私はそのまま意識を手放した。
目が覚めると見知らぬ場所に寝ていた。森だ。
「何が起きて…」
そこでやっと自分の身体の変化に気づいた。若返っている。17歳、16歳程度まで若返っている。夢かと思い頬をつねるが痛みがある。幻覚ではないようだ。だが私はトラックに引かれたはず。あれで生きているとは考えにくい。トラックに吹き飛ばされた左足も存在している。こんなのは現代技術じゃ不可能だ。
「何が起きているんだ?」
すると目の前にゲームのウィンドウのようなものが現れる。
___________
貴方は転生しました。
貴方はこの世界で魔王を勇者と共に討伐しなければなりません。
___________
「は?」
それしか書かれていない。転生?魔王?勇者?何を言っているのか分からないがこの世界が元の世界ではないことは理解できる。だがこんな短い文で何がわかるというのだ。
「春風の作った初作のゲームチュートリアルより酷いぞ…」
『まあ、あれも酷かったが…』
春風奏、俺の後輩にして、会社のプログラマーエースだった人物だ。エースとはいえ、そこまでまだまだ知識が足りない。だがらこそ俺が未だに教えていた訳だが…春風の初作は2D脱出ゲームだったのだが、チュートリアルはないのにゲーム性はかなり独特、慣れるのも一苦労だった。チュートリアルを作らせても全く理解してくれない。
「ふぅ…そんなこと思い出してる場合じゃないな」
『ここは見知らぬ森、本当に異世界ならモンスターが現れてもおかしくない。まずは自分のステータスが見たいのだが…見れないのか?』
私がそんなことを考えていると再びウィンドウが現れる。
___________
ステータスと唱えることによってステータスウィンドウを開くことができます。
___________
それと一緒にウィンドウと叫んでいるミニキャラのイラスト…まるでゲームのチュートリアルを受けているかのような感覚になる。
「ステータス」
私がそういうとウィンドウが現れる。
「ふむ、UIはまあまあだな」
VRゲームでよくある半透明なウィンドウ、装飾も多い訳ではなく、細かいものも少ない。
「で、私のステータスはっと…」
___________
名前:柳雪
職業:なし
レベル:10
魔法適正:Unity
___________
他にもHPやMP、STR、SPD/AGI、INT、LUCなどのステータスがある。でも私1番気になったのは…
「Unity?」
Unityは万能と言ってもいい程人気のゲームエンジンだ。そして、私が以前使っていたゲームエンジンでもある。
『でも魔法適性がUnityって?』
そんなことを考えていると後ろの茂みがガサガサと揺れ動く。私は咄嗟にステップをとり距離を離す。そこから出てきたのは二足歩行の緑色の化け物、ゲームキャラで言うとゴブリンに近い。すると再びウィンドウが現れる。
___________
TimeScaleを一時的に0にしました。ここからUnityのチュートリアルを始めます。
___________
「は?」
TimeScaleは世界の速度を表す部分だ。1で等倍、2で倍速、0になれば時間が止まる。だが普通、そんなこと出来るわけが…そしてウィンドウの内容が更新される。
___________
脳内にあるコード、Hand.cs内にあるOnCollisionEnterに以下のコードを書いてください。
void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.ComporTag("goblin"))
{
Destroy(collision.gameObject);
}
}
___________
私はそれを見て、不思議な感覚を覚えた。脳内にターミナルのような、開発環境のような物が現れた。私はそこにウィンドウに書かれていることを書いていく。そこまで難しいことでは無い。そして、何となくコードがわかってしまう…私がそれを書き終わると再びウィンドウの内容が変わる。
___________
5秒後にTimeScaleを1に戻します。手のひらで的に触れてください。
___________
そして5秒が4、3、と減っていく。私は1度深呼吸をする。そして0になった瞬間、再び世界が動き出す。ゴブリンが私に襲いかかってる。私は咄嗟に体をひねり、避けると同時に手のひらでゴブリンの身体に触れる。するとゴブリンは跡形もなく消え去った。そしてウィンドウが現れる。
___________
おめでとうございます。これによりチュートリアルを終了致します。
___________
そしてウィンドウは消え去った。私は息切れをしていた。ステータスを見てみるとMPの数値が減っている。
「はぁ…はぁ…なんなんだよ…これは…」
意味がわからない…だが、この世界で生き残るためにはこの魔法?を使いこなさなければならない…
___________
今日の初登場単語!
TimeScale…時間の速さを調整するfloat型データ、負の値も入るが推奨はされていない
Collision…当たり判定のデータ型
ComporTag()…対象のタグが想定通りかを確かめる機能
Destroy()…対象のオブジェクトの削除