- スターター作品
- なし
- 今回の完成サンプル
- なし
シューティングゲームとは
シューティングゲームはプレイヤーが敵を撃って倒したり、敵の弾を避ける爽快感が楽しいゲームです。ゴールは高いスコアを叩き出すことや、難解なステージをクリアすることでしょう。
Scratchでも最も人気のあるジャンルの1つです。作品もたくさん公開されていますが、共通点は「避けて、撃つ」という2つ。この2つをどうやって作るのかが、作品の特徴になります。
さらに、オプションも作りやすい点もシューティングゲームのいいところです。自分が考えた奇抜なアイデアを盛り込みやすいのです。「避けて、撃つ」という単純なのに多くの人が好む特徴があるので、どんなに奇抜なアイデアを盛り込んでも、シューティングゲームという体裁が崩れることはなかなかありません。そこがいいのです。
Scratchのシューティングゲームには2Dと3Dがあります。今回は2Dのシューティングについて見ていきます。
ちなみに、Scratchの公式サイトで検索するときは次のようなキーワードが有効です。
- シューティングゲーム
- shooter game
- shump
- 追記)stg(ドイツ語の突撃銃を意味するSturmgewehrの略)
弾幕とは
弾幕というのは敵から発射される多数のミサイルやビームなどの弾のことです。シューティングゲームの醍醐味の1つです。
大量に襲いかかる敵弾をかいくぐって敵を倒す爽快感が生まれるため、シューティングゲームにはなくてはならない要素といっても過言ではありません。(もちろん弾幕がないシューティングゲームもたくさんあります)
Scratch公式サイトで検索する際は以下のキーワードが役立ちます。
- 弾幕
- danmaku
- ballet hell
弾幕の魅力
弾幕に数学的な法則性を持たせて、幾何学模様の美しい模様に惹かれる人もいます。「これは絶対避けられない!」と思うような緻密に襲いかかる弾幕をギリギリ避ける爽快感にハマる人もいます。このステージでこれだけキツかったんだから、次のステージはきっともっとすごい弾幕に出会えるだろうという期待感がたまらないという人もいます。
こういった魅力は弾幕シューティングゲームならではの特徴と言えるでしょう。このサイトでも弾幕の魅力のほんの一端でも皆さんに伝わるようにレッスンを増やしていきます。
弾幕シューティングゲームの名作集
スクラッチではありませんが、弾幕シューティングゲームの有名どころを紹介しておきます。
- 怒首領蜂:元祖弾幕シューティングゲーム。難しいです。
- ギガウィング:バリアで弾幕を跳ね返すところが特徴的。
- サイヴァリア:弾と自機がかするとパワーアップするという特徴が面白い。
- エスプガルーダ:敵弾をスローにすることで弾幕をかいくぐれるところが面白い。
- 虫姫さま:ウルトラモード、ゴッドモードという超高難易度モードが面白い。
- 東方プロジェクト:1つ1つの弾幕に名前をつけて重宝するほどの弾幕シューティングゲーム愛がすごい同人ゲーム。
- プロギアの嵐:横スクロールの弾幕シューティングとして有名な作品。
- 斑鳩:白と黒の弾がパズルのように緻密に織り込まれた弾幕が美しいゲーム。
- グラディウス:一時停止して上上下下左右左右BAというコマンドを押すと最強装備になるという裏技で一世風靡したシューティングゲーム。ちなみに次作では同コマンドで自爆をするようになった点は賛否両論ある。
シューティングゲームの特徴的な要素
シューティングゲームで王道と言われる要素をスプライトに置き換えて整理しておきます。
登場するスプライト
自機
プレイヤーが操作するスプライトです。飛行機や宇宙船、ロボットや人、戦闘機がよく使われます。
パワーアップすると自機スプライトのコスチュームが変わるパターンもあります。ゲーム開始時に自機の色や形を選べるスクラッチプロジェクトもあります。
弾
自機と敵が撃つショットのことです。ミサイルだったりビームだったり、様々です。
スクラッチでは弾スプライトを作るパターンと、自身のクローンに弾コスチュームを割り当てるパターンがよく使われます。
弾を破壊できるかどうかはゲーム次第ですが、一般的には弾の破壊はできないゲームが多いでしょう。
敵
カンタンに倒せる敵を「ザコ」と呼び、ステージのラストに登場する強力な敵を「ボス」と呼ぶことが一般的です。ときどき中ボスと呼ばれる存在もいます。
実は弾幕シューティングゲームの場合は敵は必ずしも必要ではありません。弾幕だけあれば十分楽しいと言う人もいます。
それでも敵が弾幕を撃ってくる、その敵が左右上下に動くことで弾幕にも動きが生まれる、敵を倒せば弾幕が止まるといった動きはゲームの幅を広げてくれます。どれだけプレイヤーの心に響く敵を作れるかもシューティングゲームの醍醐味でしょう。
背景
ゲームの雰囲気・世界観を作るのにかかせないのがステージ背景です。スクラッチではデフォルトで宇宙空間や月面、空や街などの背景が用意されています。これらを使うだけでも十分に世界観が出せるでしょう。
武器・アイテム
弾ではなく、弾を発射するための武器もこだわっている作品が多くあります。武器に合わせて弾の種類も変わります。ビームやミサイルやボムといった特殊な弾を発射させる武器を作ることも、もちろん可能です。
自分が考える最もクールな武器を実装しましょう。
また、パワーアップアイテムもよく見かけられます。バリアやファンネルやヒットポイント回復(機数アップ)など。
スコア
ハイスコアを叩き出す、という点もシューティングゲームでは見どころです。特にスクラッチでは「クラウド変数」というゲームを終了しても残る変数があり、これを使って誰々が何点だったというランキングを作っているプロジェクトも多く見かけられます。
当たり判定
シューティングゲームでは「当たり判定」を独自に実装するパターンもあります。
スクラッチでは「(自機の色である)赤に触れたら」や「(自機の)スプライトに触れたら」といった判定方法が用意されていますが、あえてこれを使わずに当たり判定を狭く・小さくするという工夫をしている人もいます。
理由は、弾幕シューティングゲームの場合は特に、避けることの爽快感を感じてほしいという製作者の願いがあるからです。当たり判定を小さくして、絶対かいくぐれなそうに見える弾幕を避けて敵を倒してほしい。まるで映画のワンシーンのようなヒロイックなシーンを当事者としてプレイしてほしい。そういった切なる願いを込めて作られるのが「当たり判定」なのです。
とはいえ、最初は無難に「自機に触れたら」「赤に触れたら」といったスクラッチの基本ブロックを「もし〜なら」ブロックで作る判定方法を使いましょう。慣れてきたら色々試してください。
下の表は一般的な当たり判定の早見表です。参考にしてください。
当たり判定早見表 | 自機 | 自弾 | 敵弾 | 敵 |
自機 | - | - | 自機ダメージ | 自機にダメージ |
自弾 | - | - | - (相殺も可) | 敵にダメージ |
敵弾 | 自機にダメージ | - (相殺も可) | - | - |
敵 | 自機にダメージ | 敵にダメージ | - | - |
シューティングゲームの基本的な動きを作る手順
ここまではシューティングゲームの基本知識をまとめました。
ここからは、いよいよ弾幕シューティングゲームの具体的な作り方が始まります。
こちらの「緑の旗」をクリックすると、今回作るシューティングゲームのサンプルを実行できます。ためしにクリックしてみてください。
#01 作り込むプログラムの設計を確認する
今回作るスプライトやステージの仕様(設計や操作のこと)は次のとおりです。レッスンが進むと仕様が追加されることがあります。
プレイヤー
条件 | 結果 | 備考 |
---|---|---|
左右上下の矢印キーを押したら | 左右上下に動く | |
スペースキーを押したら | 弾が出る | x座標をプラス方向に進む。スペースキーを押しっぱなしでも連射されない。 |
プレイヤーの弾
条件 | 結果 | 備考 |
---|---|---|
クローンされたら | プレイヤーから弾が発射される |
ボス
条件 | 結果 | 備考 |
---|---|---|
表示されたら | 上下に不規則に動く | |
一定間隔で | 弾幕を発射する | 自身のクローンを作る |
#02 プレイヤーの動きを作ろう
上矢印キーを押したらY座標をプラスします。ここでプラスする数値を大きくすればスピードが上がります。あまり早すぎても動かしづらくなるので、何度か試して調整してみてください。
上以外の右・左・下も同じように作ります。
左右上下でスピードは合わせておくとよいでしょう。
#03 プレイヤーの弾を作ろう
弾はクローンを使って実装します。
弾のスプライトを作ろう
まずは弾のスプライトを作ります。スタータープロジェクトであれば、すでにコスチュームまで作成済みです。ここではただの黒い丸を描いています。
スペースキーで弾を発射しよう
次にクローンを作る処理です。これは分かりやすくプレイヤーのスプライトにコードを追加します。
以下はスペースキーが押されたタイミングで、弾のクローンを作る処理の例です。
#04 ボスの動きを作ろう
ボスは上下に動くだけにします。変則的な動きを作るために、ランダムに-100から+100を行ったり来たりするようにします。
ここで「1秒でx座標を○、y座標を○に変える」ブロックを使うことで、スムーズに、かつスピードを変則的にできます。
#05 ボスの弾幕を作ろう
いよいよ弾幕です。
弾幕には様々なパターンがありますが、今回は弾幕の入門編として、シンプルな弾幕を作ります。
コードの実装方法は、「クローンを作る▶角度を変える▶一定速度で左方向に動かす」ようにします。
こうすることで弾が拡散していくように発射されます。これを一定間隔で繰り返します。こういう弾幕をn-way弾幕と呼んでいます。
n-way弾幕以外にも、いろいろな弾幕を作ってみたい人は下記リンクもチェックしてみてください。
ボスのクローンを作ろう
プレイヤーの弾は新たにスプライトを作りました。しかしボスの弾はボス自身のクローンを使って作ってみます。
この実装で重要なのは弾の角度です。角度を設定し、その方向に進むようにコードを組みます。
このとき「x座標を○ずつ変える」や「y座標を○ずつ変える」ブロックは使わずに「○歩動かす」ブロックを使います。そのために角度が大切になるのです。
そしてこの角度の指定には変数を使います。
クローンを作る前に変数の値を指定して、それからクローンを作れば、クローンは変数の値を引き継ぎます。ここでは−30度ずつ変えてクローンを作ります。
クローン | 角度 |
---|---|
クローン1 | -30度 |
クローン2 | -60度 |
クローン3 | -90度 |
クローン4 | -120度 |
クローンされたときの処理を作ろう
また、クローンのコスチュームを変えることを忘れずに。弾となるコスチュームに変更しておきます。
#06 雰囲気を作ろう
条件 | 結果 | 備考 |
---|---|---|
緑の旗が押されたら | 雲を右端から左端に流す | 左端で消える。大きさはランダム。大きさに合わせてスピードを変えることで、擬似的に遠近法を演出する。 |
緑の旗がおされたら | 音楽を流す | ずっとループする |
雰囲気を出すために雲を流します。じつは雲を流すことで、まるで画面が横スクロールしているような錯覚を生み出すことができます。
雲は左端で消えるようにします。単純に「端に触れたら」という条件では、出現するタイミングで右端に触れているため、流れる前に消えてしまいます。そのため、左端で消える工夫をします。
また、音楽も用意しましょう。これはステージにコードを追加しておくとよいでしょう。
これだけでだいぶ世界観がしっかりしてきます。
#07 プレイヤーの当たり判定を作ろう
ボスの弾がプレイヤーに当たったらダメージを受ける、いわゆる当たり判定を作ります。
弾幕シューティングの当たり判定は小さくして弾を避けやすくするほうがゲームが面白くなりますが、その場合コードが複雑になります。
今回はカンタンに「○に触れたら」を使うのでシンプルに作れます。
メッセージイベントを使おう
緑の旗が押されたらこの監視コードを実行します。
ボスの弾はボスのクローンなので、このコードを使うことで「ボスの弾」と「ボス本体」に触れたときに「プレイヤーにダメージ発生」メッセージが送られます。
メッセージを受け取ったら、変数「当たった回数」に1をプラスします。今回はヒットポイントが減らしたり残機を減らしたりするのではなく、当たった回数が増えるというルールで行こうと思います。
もう少し後半でゲームをクリアできるようにしたときは、当たった回数でゲームのクリア達成度を測ろうと思います。この方法の良いところは、ゲームオーバーがないので最後までゲームをプレイしてもらえる点です。
#08 ボスの当たり判定を作ろう
ボスにダメージを与えられるようにします。ここでも今回はヒットポイントを減らす方法ではなく、当てた回数を加算していくようにします。
メッセージを使っておきます。「ボスにダメージ発生」メッセージを受け取ったら、色を変えたり音を鳴らしたりします。
#09 ボスに当たったショットを消そう
先ほど作成した「ボスにダメージ発生」メッセージを利用して、プレイヤーのショットを消します。
#10 クリア処理を作ろう
ここでもメッセージが役に立ちます。ボスに十分ダメージを与えたら、クリア!というメッセージをおくりましょう。
クリアを受け取ったら、ひとまずはボスを消す処理を実装しましょう。
ここからは、各スプライトで次のステージに進むための処理を行います。いよいよ次のステージの実装も見えてきました。