18

 お昼ご飯を食べて戻ってくると、出かける前と同じ光景が広がっていた。

 ことり先輩の後ろ姿だ。彼女は相変わらずノートパソコンに向かっていた。

 イヤホンをしているせいで、全くこちらの様子には気づいていない。

「先輩、お昼食べましたか」

 カタカタ。

「せんぱーいー!」

 カタカタカタカタ。

 絵里の呼びかけに応じなかった。まったく、集中力の素晴らしさといったら目を瞠るものがあった。

 肩を叩いて呼び掛けようかと逡巡していると、そこに瑠璃さんが部室に入ってきた。彼女は僕たちの様子を一目見て状況を判断したようだ。

 すると、構わずイヤホンを外してしまった。

「瑠璃、どうしたの」

「どうしたのじゃないでしょ。

ことりちゃん、お昼食べた?」

 あ、と驚くことり先輩の表情に目もくれず、瑠璃さんは状況を説明した。もう13時を回っている、やはりお昼ご飯を忘れていたのだ。

「コンビニ行って買ってきてね、イートインが嫌なら文芸部の部室で食べていいから」

 ことり先輩はお財布を持って出ていった。

 僕はこのやり取りをポカンとしながら見ていた。なんていうか、ことり先輩は瑠璃さんがいないと本当に駄目だと思った。


 ・・・


 僕たち3人がルーズリーフに向き合っていると、お昼ご飯を済ませたことり先輩が戻ってきた。こちらの様子を見るなり、声をかけてくれた。

「企画はどんな感じなのかな」

 僕はルーズリーフを手渡した。パラパラをめくることり先輩の前にみんなで説明を始めた。


<企画案>

* 縦スクロール、レトロ

* ステージ数は20~30(?)

* ひとつ5分程度

* 敵キャラは1発で死ぬ

  enemy1:真下に弾を撃つ

  enemy2:弾を撃つと逃げる

  enemy3:速い

  enemy4:3方向に弾を撃つ

* 各ステージに居るボスはさまざまなアクションをする

* プレイヤーは下から上に弾を撃つ

* HP 10(?)

 

 ざっとこんな感じになった。ステージ数やプレイヤーのHPなどは作ってみないと分からないのでハテナ(?)だ。

「よし、じゃあ私が説明しようか」

 そう言ってことり先輩はルーズリーフを閉じた。

 ホワイトボードの前に立つ彼女はさながら教師のように思えた。マーカーのキャップを外しながら僕たちに向けて質問してきた。

「ゲームに必要な要素って分かるかな」

 和也と絵里はタイミングを合わせて即答する。

「強さ」

「どんな見た目、でしょうか」

 うーん、どっちもハズレ。彼女はそう呟いた。

 というか、プログラムのクイズをふたりに出さないであげてほしい。僕は内心苦笑した。

「さっき説明してくれたよね、キャラクターがいてステージがいるって」

 ことり先輩は次のような"骨組み"を説明してくれた。


<プログラムの概要>

* タイトル、ステージ、エンディングなど各シーンを再現するもの

画面上にあるボタンをタップしたら次のシーンに移る(画面遷移という)

* ステージは複数作成することが前提なので、各ステージ用のテキストファイルを都度読み込む

テキストファイルは敵の配置・背景を表すものの二種類を用意する

* 主人公、敵、弾などのキャラクターが配列になっていて、ループにてそれぞれの処理を行わせる

主人公ならボタンを押した方向に動く・弾を撃つ

敵や弾なら進行方向に進むなど

もちろんキャラクター同士が衝突すればダメージを受ける(HPの変数が減る、0になれば消滅する。主人公の場合はゲームオーバーになる)

* BGM・SE(効果音)の再生


「全体的な仕組みは私が作っているんだけど、みんなでステージを作らないといけません。つまり、敵キャラクターの動作と配置を作るんだ」

 とはいえ、いきなりプログラムを書けるのだろうか。僕ならまだしも、このふたりは大丈夫だろうか。

 僕の心配をよそに、授業は次に進んでいった。

「じゃあ次は、プログラムの知識を教えてあげよう。数学で座標系って習ったよね、でもプログラムでの表し方はちょっと違うんだ」

 ことり先輩はホワイトボードに図を描いてくれた。


<座標系>

 [x, y]

 (0, 0)  →  (100, 0)


 ↓


 (0, 100)


 画面の左上を起点とするとのことだ。はじめてみる形だけど、すぐに理解することができた。

「ここで、弾を撃った時のことを考えてみてください。(0, 0)から進んで次はどの座標にいるでしょうか、これが"移動量"です」


<キャラクターの移動量>

 1コマ目 次のコマ

 ○    ●

 ○       ●


 ゲームというのは、実際のところパラパラ漫画をめくるようなコマ送りで表現される。だから、移動量が大きいほどより遠くの座標まで進むことができる。

「最後は大きさ。

これは縦幅と横幅を決めることで、<衝突判定>に使います。

当たり前だけど、弾を敵に当てないと倒せないよね。

その面積です」


<大きさ>

 ┌  ┐


 └  ┘


  ┌ ┐

  └ ┘


 一般的にはキャラクターの画像(上)より少し小さくする(下)という。

 衝突判定というのは、一般的に当たり判定と言われる。

 最近の弾幕系のシューティングゲームではわざと小さくして、敵や弾の間をすり抜けていくスリルを味わうようになっているらしい。

「ここまではいいかな?

テスト出るからね、ちゃんと書いておいて」

 彼女はそう言いながらキャップを閉じた。

 ......別にテストはしないだろう。

「キャラクターに必要な数値は変数になっているよ。あと、弾を撃つみたいな処理はメソッドになっている。これらの基礎的なファイルをコピーして作っていけばいいよ」

 これで、作業イメージが湧いてきた。

 敵ごとに変数の値を決めて、メソッドを組み合わせてアクションをつくる感じだ。これならふたりにもできるし、分担しての作業も可能だろう。


 ・・・


 和也と絵里はさっそく開発用のパソコンに向かっていた。

 僕はことり先輩が作っているゲーム全体の仕組みを共有してもらった。彼らはあまり意識しなくても良いが、僕が編集する可能性もあるだろう。

「素直な子たちで良かったな」

 ことり先輩はこう呟いた。

 そうですか、と僕は少し不思議そうに尋ねる。授業を受けているときは、あまり発言しないふたりだ。それでも、メンバーが増えて明るい雰囲気になっている気がしている。

 これからの活動が楽しみだ。

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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