The Space Mission R - 今度はグラディウス

# はじめに

## Jerrydog 参照数 400 !

Jerrydog の参照数が公開 3 週間で 400 になりました。多いのか少ないのか分かりませんが、Qiita の記事の View 数（[ここ](https://qiita.com/Kray-G/items/9308c72311d642628509)）を超えたので、いい感じなのかもしれない。:heart: や :star: はなかなか伸びないのですが。

## New Scratcher から Scratcher になりました！

アカウント作ってから 2 週間、Scratcher に昇格した模様です。クラウド変数を使ったりスタジオを作ったりできるようになりました。なので、作品をまとめるスタジオや、ライブラリをまとめるスタジオを作りました。共有プロジェクトだけだとゴチャゴチャしそうなので整理する意味で。良かったらフォローお願いします。

|                     スタジオ(リンク)                     |                                                         イメージ                                                          |                  概要                   |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| [G-14 Works](https://scratch.mit.edu/studios/35458610)   | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/87951cbf-1284-d5a2-6ff0-b2a6e0865665.png) | 作品をまとめているスタジオです          |
| [G-14 Library](https://scratch.mit.edu/studios/35458641) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/d4127f6e-bdb3-cf7c-61b7-dcc00e312375.png) | ライブラリ用スプライト素材です          |
| [G-14 Tips](https://scratch.mit.edu/studios/35458644)    | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/bf9e22f3-273d-dcaf-1bef-9a9faac6babe.png) | Tips プロジェクトをまとめるスタジオです |

# 本題

## Scratch 作成ゲーム 1 作目のパワーアップ

前回の G-14 Great Fighter Jerrydog は Scratch プログラミング始めて通算 3 作目だったんですが、実は 1 作目は往年のグラディウスをモチーフにした横スクロール・シューティングでした。訳あって（大した訳でもない）公開しないでいるのですが、今回それを**大幅にパワーアップさせて**公開することにしました。

当初のもの(オリジナル)では全 2 面でボスも火の玉を出す程度、かつスプライトのコスチュームや音楽は Scratch であらかじめ用意されているものを使う、という超軽量仕様だったのですが、本作「**The Space Mission R**」では全 8 面、全てのスプライトのコスチュームも自作デザイン、音楽もすべて自作(自作曲)です。また、スクロールもオリジナルでは横一直線だったものをある程度上下に幅を持たせて移動できるようにしたので、より広がりがある感じになっています（オリジナルは公開してないので誰も比較できないけど）。

## The Space Mission R

ということで、タイトルは「The Space Mission R」です。最初は The Space Mission **X** だったのですが、最終的に R にしました（理由は後述）。ただ、たぶんシューティングとしては簡単な部類です。なぜなら、**私でもクリアできた**ので（Normal モード）。Super Hard がどんな感じかはよく分かりません。

https://scratch.mit.edu/projects/1048245238

[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/5e0a1555-ee7e-703f-e3a5-6a22e08fc73d.png)](https://scratch.mit.edu/projects/1048245238)

サムネで「横スクロール・シューティング」ということが分かるようにしといたほうがいいなぁ、と思ってこんな感じに。

# ゲーム紹介

では、早速ゲーム紹介です。

## 内容紹介

### ストーリー

`Press ANY key to skip` ... 「何かキーを押すとスキップするよ」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/ddee672d-908e-0c64-f551-b2ac1c5f46ba.png)

> A 国と B 国は長年同盟関係にあったが、数年前に宇宙帝国軍がA国の領空である B 国隣接地域に侵攻し、その輸送路が分断された。また、宇宙帝国軍は A 国の首都に侵攻し、その後 B 国への侵攻を計画しているという噂もある。
>
>そんな中、A 国のエースパイロットであるあなたにミッション R の命令が下った。ミッションRとは、"危険"を意味する軍事用語 "レッド" から名付けられた極めて危険なミッションである。宇宙帝国の領空を単独で突破し、同盟国 B 国に極秘のレターを届けるというミッションだ。宇宙帝国軍は制圧した空域で着々と要塞の建設や物資の搬入を行っており、突破の際には激しい抵抗に遭うことが予想される。
>
> 幸いそこはもともと A 国の領空であり、宇宙帝国軍の敵機は A 国の重要な資源であるパワーベルを積んでいるらしい。パワーベルはあなたの宇宙戦闘機 ZENO の性能を向上させるために使用することができるものであり、それを手に入れることができればきっと行く先々で役に立つに違いない。
>
> 幸運を祈る。

### オープニング～オプション選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/56d6b8e3-25ff-cad8-efb6-43fddc1ae1e1.png)

ストーリーが流れた後、オープニングは Jerrydog で作った Introduction の曲でズンズンさせての始まりです。今後オープニングはこれに統一するのもありかも、とか思って。シンプルで分かりやすい曲だし雰囲気あるので。ドラクエとか FF とかのテーマ（あれはシリーズが統一されているからだが）みたいな感じで。

`OPTION` を選択して右キーを押すとオプション変更メニューが出ます。オプションは以下の 4 つの設定を変えられます。

|  項目  |       意味       |           範囲           | デフォルト |                                概要                                |
| ------ | ---------------- | ------------------------ | ---------- | ------------------------------------------------------------------ |
| LEVEL  | 難易度           | Super Easy ～ Super Hard | Normal     | 敵の出現率とか背景/敵スピードとかが変わる                          |
| SHIPS  | 残機数           | 3, 10, Infinity          | 3          | お好みに応じて                                                     |
| BGM    | BGM              | On, Off                  | On         | 音楽不要なら（寂しいけど）Off                                      |
| VOLUME | BGM のボリューム | 1 ～ 10                  | 7          | 音楽はあった方が良いけどちょっとうるさい、みたいな場合は音を小さく |

`BACK` にカーソルを合わせて左キーを押し、`START` / `OPTION` 選択メニューに戻って `START` を選択する（スペースキーか右キーを押す）とゲーム開始です。

### ミッション・スタート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/958313a4-fccf-8d5b-dbdf-8423aaabad35.png)

さぁ、戦いが始まります。あなたの戦闘機の名前は **ZENO（ジーノ）** です。昔好きだったドイツのバンド名です。

敵を倒すと「パワーベル」と呼ばれる戦闘力アップアイテムを落とす時があります（結構な頻度で落とします）。それを取ることによって、画面下部にあるパワーアップ・アイテムの選択肢が順次左から選ばれていくので、パワーアップさせたいアイテムが選択されてるときに 'z' キーを押してパワーアップします。

パワーアップ内容は以下の 7 種類です。

|     項目     |        内容        |                                概要                                |
| ------------ | ------------------ | ------------------------------------------------------------------ |
| `SPEED UP`   | スピードアップ     | 自機のスピードが上がります                                         |
| `MULTI SHOT` | 連射               | バルカンの連射数を最大 3 連射までアップできます                    |
| `BACK SHOT`  | バックショット     | 後方にバルカンを発射します                                         |
| `3WAY SHOT`  | 3方向ショット      | 上下前方にもバルカンを発射できるようになります                     |
| `HOMING`     | ホーミングミサイル | 追尾式ミサイル、ただし連射はできずバルカンも撃てなくなります |
| `BARRIER`    | バリア             | バリアを張りますが、一定数被弾すると解除されます                   |
| `OPTION`     | オプション機       | 同じ攻撃を行うオプションを最大 4 機まで装備できます                |

パワーベルの取得数はボーナス算出の基礎値になります。したがって、装備がいっぱいでも取ることでステージクリア時のボーナスがアップします。

### 装備紹介

では、パワーアップ・アイテムでパワーアップさせる主な装備を紹介しましょう。バルカンはパワーアップするのではなくデフォルトで使えます。

|     装備     |         イメージ         |                              説明                              |
| ------------ | ------------------------ | -------------------------------------------------------------- |
| `VULCAN`     | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/d60e24be-9197-4829-c535-faa63d94ecdb.png) | バルカンです                                                   |
| `BACK SHOT`  | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/346409e4-6367-c216-e71f-4c5778317fc1.png) | 後方にもバルカンを発射します                                   |
| `3WAY SHOT`  | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/d0c5c2a1-d2f8-fd07-0a90-0b4042d0bded.png) | 上下方向にもバルカンを発射します                               |
| `MULTI SHOT` | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/c260d88f-da65-263a-5a02-08d361450e26.png) | 3連射まで可能、後方・上下装備していればともに同一の連射効果が適用されます    |
| `HOMING`     | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/026ce288-9ca2-9274-1137-8f28a9dfd3dc.png) | ホーミングミサイルは、最も近い敵機を追尾して撃墜します                               |
| `BARRIER`    | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/eac41ffa-a845-aeab-e0a0-b30d266ee4f9.png) | バリア、一定数被弾すると効果消滅(右上に被弾可能数を表示)します |
| `OPTION`     | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/010432d9-705e-8a1f-c999-2cc081eab207.png) | 自機を周回し自機と同じ攻撃を行います(最大4機)                  |

バルカンとホーミングミサイルは併用できません。ホーミングミサイルは敵機を追尾して被弾させますが、連射ができないので多数の敵を同時に対処するのが困難です。ホーミングミサイル装備時はオプションもホーミングミサイルを発射するので、オプションを装備することで多数の敵に対応しましょう。

### 敵機

敵機は以下のような種類がいます。

|     種類     |                      イメージ                       |                                                                                             |
| ------------ | --------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| 偵察・運搬機 | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/c3eca638-4c10-1256-e673-f76303d14d55.png) | 無人偵察機ですがパワーベルを運んでいたりもします                                            |
| 突撃機       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/d0d7fd33-e88d-b58a-9983-19b6c8aabeaf.png) | プレイヤーに向かって突撃し、近づいて弾を撃ってきます                                        |
| 攻撃機       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/2513404c-082d-c944-e083-2fe73123acb6.png) | プレイヤーに向かって飛行し、ビームを発射してきます                                          |
| 迎撃機       | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/5ceb10f0-9f25-25f3-1258-f8a9b86b045d.png) | 楕円軌道で動きながら、ホーミングミサイルを撃ってきます                                      |
| 敵宇宙船     | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/a7b10bf2-9856-9c07-025f-37d789950f1c.png) | ちょっといろんなものが重なってて見づらいですが、3面の宇宙船です(他、6面、8面に別の船が登場) |

敵の中にもホーミングミサイルを撃ってくるものがいます。うまくかわすか、ミサイル自体を撃つことで回避しなければなりません。ただし、宇宙帝国軍のホーミングミサイルは一定時間たつと照準が外れてしまう旧式なので、逃げ回ればかわし切れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/eb64ef90-0af2-849c-be4c-3f11c5c429bb.png)

> うわぁ、敵がホーミングミサイル撃ってきた、逃げろ！

また、宇宙船は乗っかっている砲台を全て撃破することで宇宙船そのものを撃墜したことになります。ステージによって違いますが、敵宇宙船のステージでは撃墜すると次が出てきて全て撃破するとステージクリアです。

### ボス

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/7665f261-8a7b-4b68-a805-2bb1c9cd7cb2.png)

さて、通常のステージでは最後にボス戦です！

これは 2 面のボスですが、このボスはコアと呼ばれるオプションのような子機がいてそっちからも攻撃してきます。コアは被弾させれば撃墜できるので、落ち着いていればそんなに怖くありません。つか、ちょっとボス弱すぎなのでもう少し強くするかも。

上記ではホーミングミサイルで攻撃してます。こんな感じで近くにいる敵を追尾します。コアも追尾対象なので、近くにいれば追いかけます（が、コアの動きは速いのでそっちには当たらず本体に当たることも多くありますが）。

ステージは、ボスの待ち構えている通常ステージ（Stage 1,2,4,5,7）と敵宇宙船撃破のステージ（Stage 3,6,8）に分かれています。

ボスを倒すと派手に爆発してステージクリアです。

### 岩石・敵要塞

| タイプ |         イメージ          |             概要             |
| ------ | ------------------------- | ---------------------------- |
| 岩石   | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/cc1fe28e-2ae0-eb6b-2eed-4385e435b658.png) | 勢いよく飛んでくる、敵も当たると撃墜 |
| 敵要塞 | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/8be685ba-77a9-9871-5c6c-67507d645787.png) | 砲台が搭載され攻撃してくる |

ステージによっては岩石、敵要塞、またはその両方が姿を現します。分かりやすいように色合いを変えていて、グレーが岩石です。岩石と敵要塞の主な特徴は以下の通り。

* **岩石**
    * 自機がこれに当たると撃墜される
    * 何気に敵も当たると撃墜される(爆発する)
    * バルカンやホーミングミサイルは通り抜けできない
* **敵要塞**
    * バルカンやホーミングミサイルは要塞自体には当たらず砲台を攻撃できる
    * 敵も要塞には当たらずに通り抜けてくる
    * ただし、敵（迎撃機）のホーミングミサイルは通り抜けられない
    * 自機（ZENO）は当たると撃墜

敵要塞は、それに乗っかる砲台を攻撃する都合上（？）、ミサイルその他諸々は通り抜けます。解釈としては「表面を通っている」感じということで。ただし、敵機自体は通り抜けられても、敵迎撃機の発射するホーミングミサイルは通り抜けません。

### 敵宇宙船ステージ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/c1eebfc4-a405-3b74-3548-b56763ff75b4.png)

敵宇宙船撃破のステージでは、大きな敵宇宙船が登場します。敵宇宙船は先にも言ったように搭載している砲台を全て打ち抜けば撃破できます。倒すとまた次が出てくるので、出てこなくなるまで撃墜です。

上のキャプチャ画面は 3 面ですが、6面、8面ではさらに強力な別の宇宙船が登場してきます。ここではあえて出さないので、ぜひ見てみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/10ba6257-ae6b-f84a-3850-e2f2b1b07504.png)

> 砲台を全部撃破すれば敵宇宙船も撃破だ！

### エンディング

ということで、全 8 面クリアすればエンディングです。エンディングは Jerrydog よりは凝った作りになってますので、こちらもぜひ見ていただければ。エンディングでは簡単なアニメーションさこさえてあります。

# 中の説明

## 曲紹介

いつもの通り、曲紹介から！

...といいますか、毎回作曲するのも何気にシンドくなって来たものの、謎の使命感で曲作りに励んでました。

### Introduction (Opening)

* 作曲に励んだと言いつつ、まずは Jerrydog で作った Introduction がオープニング。
* 私の作品のちょっとしたアイコン・ミュージックとして使えないかなぁ、なんて思っているとかいないとか。
* 今回は意図的に「The Story」はあえて無音にして、タイトル画面で BGM が始まる感じに。始まった感が出せたかな？

### Fighting Spirit (Stage 1, Stage 5)

* 12小節ブルース進行のロックンロール。
* 曲自体は短いものの、ノリノリでゴキゲンな感じが正直大好物なのでいつまでも聞いてて飽きない（私はね）。

### Battle Gate (Stage 2, Stage 7)

* 激しめで半音行ったり来たりする感じの裏から入るリズムが思いついてそのまま打ち込んでみた曲。
* 後半はそれと対比させた形でノリノリのリズムにパワーコードで無機質なメロディを乗せてみた。
* この後半のメロディの一部を切り出して Stage Clear に発展。

### Count Down (Stage 3, Stage 6, Stage 8)

* ボス戦で使えるアップテンポでグィグィ引っ張る曲を、と思って書いてみた。
* そう思っていたのだが、ボス戦はステージの延長線上で BGM 流すことにして、敵宇宙船のテーマ曲にしてみた。
* なんか急き立てられる感じが出ているとは思う。
* こういうベースが「踊る」感じも好き。なので、最後ベースソロを入れてみた。

### Mr. Space Red (Stage 4)

* Mr. Space Red って誰だよ。 ➡ 答えはエンディングで明らかに。
* この曲名が思い浮かんだことで、タイトルを The Space Mission X から The Space Mission R に変えることにしたのでした。
* 曲のイメージ（テーマ）は「孤高のファイター」みたいな。

### After The Battle (Game Over)

* 「終った感」を出すアプローチが Jerrydg と一緒。でも気にしない。
* ただ、今回はビブラフォンではなくサックスのメロディで哀愁漂う感じに。
* Am で終わると見せかけて C のメジャーコードで終わるのが結構気に入ってるのだがどうか。

### Stage Clear

* Battle Gate の後半部分を抜き出したらいい感じになるんじゃね？的なノリで切り出してみた所、思ったよりいい感じに。
* 思ったよりいい感じだったので、わざわざステージクリアしたときに流す形でプログラム修正した。

### Selected

* グラディウスで 1 PLAYER とか選んだ時の効果音っぽいのが欲しいなぁ、と思ってちょっとだけ作った。
* 曲というかコイン投入時の効果音的なモノ。こんな感じ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/d4a0e0fc-4a6d-099d-82bc-bbc0ee4a9c9e.png)

# プログラムについて

また長くなったんでこの辺で（おっと...）。ひとまず、以下のものは流用しているのでこういうのを今後ライブラリ的に公開していきます！

* **ライブラリ**
  * 横スクロール（オリジナルからの流用ね）
  * 爆発エフェクト（横スクロールに合わせて少しカスタマイズ）
  * スコア表示
  * ボーナス表示
  * BGM フレームワーク
* **Tips**
  * 画面外の扱い（スムーズな画面外フェードアウト）
  * 敵や弾の双方向当たり判定

---

### 主要リンク

* [Scratch ライブラリと Scratch Tips](https://qiita.com/Kray-G/items/e1900d5b6c6dcfbe5321)

---

よろしくお願いします。