Scratch はじめました、そして After Burner!

# はじめに

## Scratch はじめました

さて、本業では全くプログラミングしてないただの企画屋です。

長らくプログラミングの世界から遠ざかっていましたが、息子が小学生になり Scratch に興味を持って触り始めたので、色々聞かれたときに答えられるよう Scratch 触ってみることにしました。

やり始めて気づいたのですが、これ、**超面白い** ですね。

ビジュアル・プログラミングって普通のプログラミング言語を使うよりも数段下に見ていたような気がする（すみません）のですが、バカにできんことがわかりましたよ。

こんな学習用だけではなく、普通のシステム言語もこんな風な感じでできると、実はバグも減ったりなかなかどうして侮れないのでは、と思いました。Scratch だとライブラリ化とか細かい点で不足が多いけど、形態としてはかなり可能性も感じる。

ただ、Scratch でもスプライトごとに部品化とかできそうな気がしたので、Scratch の部品化を一つのテーマにちょっと記事書いてみようかな、と思いました。

**あわよくば、どこかの出版社の方の目に留まって Scratch 本作らせてもらえるような日が来ることを夢見て。**

> ➡ [Scratch ライブラリと Scratch Tips](https://qiita.com/Kray-G/items/e1900d5b6c6dcfbe5321/) というページを作ってみました。

## G-14 Great Fighter Jerrydog

で、勉学のため、スクラッチ作品３作目にしてアフターバーナーに挑戦（１作目と２作目は頃合いを見て公開するかもしれない）。その名も **「G-14 Great Fighter Jerrydog」**。

Scratch 歴 2 か月程度にして初めてアカウント作りました。ずっとローカルで試してましたのでドキドキしました。

さて、F-14 の F は Fighter の F ですが、G-14 の G は Great Fighter の G です。ご存じ本物の F-14 Tomcat がアフターバーナーのモチーフですが、Tom と言えばトムとジェリー、cat と言えば dog。合わせて G-14 Jerrydog。

結果、、、なんというか、控えめに言って **超絶面白ゲーム** が完成しました。自画自賛ですが、いやぁ、自分でやってて本当に面白いんですよ。ぜひぜひ皆さんにやって欲しいなぁ。

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

[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/1e5975a4-204f-c734-50bc-9ccac11a33c4.png)](https://scratch.mit.edu/projects/1042567369)

> 激しい敵ミサイルをくぐり抜けるんだ！

## （ほぼ）完全オリジナル

ところで、今回はプログラム作るだけではなく、絵も音楽も（ほぼ）全て自作で頑張った結果、色々オリジナルな要素がたくさん含まれています（いや、爆発エフェクトのコスチュームは Superpowers Asset Packs by CC0-1.0 license 使わせてもらいました。全部自作と言い切れなくてすんません）。

敵戦闘機とか、空母とか、ミサイルとか雲とかいっぱい絵も描きましたよ。音楽も自分で作曲しました。しかも曲自体 Scratch の音楽機能を使って作曲。昔々、打ち込みやってた頃を思い出しました。

というか、プログラム作る時間より **曲作ってる時間のほうが明らかに長かった**。

音楽は、それこそロックな世界で AC/DC とかガンズ・アンド・ローゼス、ときどきメタリカな人生を歩んできましたが、元をただせば私が最初にはまった音楽は元祖アフターバーナー。忘れもしない「セガ体感ゲームスペシャル」を友達から借りて、カセットにダビングして擦り切れるまで聞いてました。

アフターバーナーというゲーム自体は全くと言っていいほどやったことが無かったにも関わらず、アフターバーナーとアウトラン、ハングオン、スペースハリアーの音楽は毎日聞いてました。なので、Final Take Off も After Burner もメロディ無しバージョンのほうに違和感ある派です。

## 難易度

正直、自分で作っておいて普通に Normal モードで１面で死んだりします（ぉぃ）。。。すんません、ゲーマーではないので腕はからっきしです。

難易度は Super Easy ➡ Easy ➡ Normal ➡ Hard ➡ Super Hard の 5 段階なんですが、Super Hard の最終面あたり、かなりえげつないのではないかと。。。Normal でも私はバンバン死にます。というか、そんなにゲームが得意なわけでもないのでバランス悪いかもですが、こういうゲームで腕に自信がある方いらっしゃいましたら、ぜひレビューコメントもらえると嬉しいです。まぁ、無限残機モードがあるので、やられっぱなしでもエンディングは見られるでしょう。

よく「ノーミス・プレイ」みたいな YouTube 動画上げてる人いますが、そういうの見せてもらえるとすごく嬉しいかも。自分では絶対にできないので（敵の出方も完全ランダムなので、無理かも...）。ありがとう、の言葉以外、他には何もさしあげられませんが。

バグの報告はもちろん（公開直後からもいくつかバグを見つけて修正...）、こうしたほうがもっと良いですよー、みたいなアドバイスも大変有難いです。とは言っても必ず対応できる、とは言えないので申し訳ないのですが...。

> ↓修正してみました。
> ~~ひとつ言っておくと、最初っから左（もしくは右）に操作入れっぱなしだと敵ミサイルにあたりません（後ろからのホーミングミサイルは別）。これは改善しようとしたけどやり方に迷って未実装です。そこはプレイヤーのプライドと「それで楽しいのかな？」という問いかけのもと、各自ご判断をお願いします。~~

# ゲーム紹介

## 内容紹介

### ストーリー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/3276eeb1-f0f6-5c57-c652-ea5935f4d72c.png)

> あなたは密かに敵の基地から秘密情報を入手せよという命令を受けた。敵基地からの情報入手に成功したあなたは、そこから脱出しなければならない。
> 
> しかし、あなたは見つかってしまった！
> 
> 幸い、敵側にも多少の味方がいる。彼らは空母や森の中の秘密基地であなたを助けてくれるだろう。
> 
> Okay、Great Fighter 14番、君の愛機「Jerrydog」と一緒に行こう！
> 
> 幸運を祈る。

### オープニング

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/46d85e74-6668-9bd3-6c19-9353339343cd.png)

オープニングは無駄に 192 個（16 x 12）のクローンを使ってグリグリ回転させてます。クローンは全部で 300 個まで、という上限があるので、オープニングで使ったクローンはオープニングが終わると同時に根こそぎ削除しなければなりません。アフターバーナー II のオープニングで II の文字がグリグリ回ってるのをイメージしての所業です。

G-14（通称 Jerrydog）がビューンと飛んできてしばらくするとまたアフターバーナー吹かして飛び去って行く、という動きのあるオープニングです。

<kbd>START</kbd> と <kbd>OPTIONS</kbd> のメニューをカーソルキーで選択します。<kbd>OPTIONS</kbd> を選択するといくつか設定を変更できます。

### オプション変更

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/802952b0-cfb0-141f-1b16-d8605f4fc308.png)

スタートさせる前に、<kbd>OPTIONS</kbd> ボタンを選択するといくつか設定変更できます。

|    項目     |       意味       |           範囲           | デフォルト |                                概要                                |
| ----------- | ---------------- | ------------------------ | ---------- | ------------------------------------------------------------------ |
| Level       | 難易度           | Super Easy ～ Super Hard | Normal     | 敵の出現率とか敵ミサイルの発射数とかが変わる                       |
| Ships       | 残機数           | 3, 10, Infinity          | 3          | Infinity は無限だ！                                                |
| B.G.M.      | BGM              | On, Off                  | On         | 音楽不要なら Off                                                   |
| Volume      | BGM のボリューム | 1 ～ 10                  | 7          | 音楽はあった方が良いけどちょっとうるさい、みたいな場合は音を小さく |
| Up/Down     | 上下キー操作     | Normal, Reverse          | Normal     | 下矢印キーで上昇がいい、という人は Reverse を選択                  |
| Auto Vulcan | 自動バルカン     | On, Off                  | Off        | 結局押しっぱなしだし、という人は On                                |

<kbd>EXIT</kbd> で戻って <kbd>START</kbd> でゲーム開始です。

### 発進！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/3d7925b8-e3b0-5c04-fbeb-b72e57d25259.png)

さて、ここからが本番です。

オープニングからシームレスにつながって空母に着艦し、Get Ready? の声が聞こえたら **スペースキー** を押しましょう。白煙を吹かしながら華麗に発進です。この Get Ready? は Scratch の音声合成の声を録音したものです。

何気にこの着艦～発進までのシーンがカッコ良すぎて、我ながらここだけで見とれてしまいます。

### さあ戦いだ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/a679d4e0-c8a8-4206-ce5f-6e001d236ddc.png)

武器はバルカンとホーミングミサイル。スペースキーでバルカン、z キーでホーミングミサイルですが、ホーミングミサイルはロックオンしてないと撃てません。ロックオンすると、おっさん声（私の声を加工したもの）で「Fire!」と言われ、照準が赤く変わりロックオン状態となって敵を捕捉します。なぜおっさん声なのか。Scratch の音声合成だとあまり緊迫感の無い落ち着いた声だったので、やむを得ず。しかし今思えば Scratch のでも良かったかもしれない。

敵もミサイルを撃ってきます。敵は３種類いて、ホーミングミサイルも撃ってくるのでボーっとしていると誘導弾に撃墜されます。

こまめに旋回することで敵ミサイルはかわせますが、こっちのホーミングミサイルは超高性能なので必ず命中します。かわいそうに。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/6bb3c3f7-cafb-21cc-878f-2b66ff2a18e9.png)

素早く左から右（またはその逆）にキー操作をするとローリングして旋回します。ただ、無敵になるわけではないので移動先にミサイル飛んで来たら撃墜されます。

元祖アフターバーナーとは異なり、敵は完全ランダムに出現するので、ミサイルを撃ってくる前に撃墜、とかはできません。後半は荒れ狂う弾幕を避けながら敵をロックオンして撃墜しましょう。何気にこちら側が撃てるホーミングミサイルは制限なしです。どこかで時間があれば元祖のように制限を付けるかもしれません。でもその場合は補給機の演出も必要だな。

ただし、敵ミサイル自体もバルカンで破壊できます。

敵がある程度近づくとロックオンできなくなりますが、バルカンで撃ち落とすことも可能です。

スコアは敵の撃墜ポイントと飛行距離で算出されます。また、ホーミングミサイルで撃ち落とした場合の HIT 数が 8 ポイント、バルカンの場合 4 ポイント、敵ミサイルを破壊すると 1 ポイントです（今の所ですが。変えるかも）。そのステージで得た HIT 数 x 10 ポイントがステージクリア後にボーナスとして加算されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/38ef6369-0fbe-40cd-005f-2d1486921ada.png)

アフターバーナーを吹かして加速もできます。c キーで一定時間加速状態になります。敵も敵のミサイルも２倍の速さで迫ってきますが、この後出てくるホーミングミサイルから逃げ切るときなどここぞという時に使えます。

### 後ろからの攻撃！～夜の戦闘

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/fe04370a-a718-9e57-e662-27b314a98495.png)

２面は夕方の海。

ある時点まで行くと後ろから敵のホーミングミサイルが追いかけてきたりも！前と後ろと同時に攻撃される感じになるので要注意です。

おっさん声（私の声を加工したもの）で「Be careful!」と言われたら後ろにホーミングミサイルがいます。徐々に近づいてきて振り切れないと撃墜されます。

振り切り方はある程度距離を離れることです。基本、引き付けてからローリングすると引き離せますが、あまり早いとまた追いついてくるのと、引き付けすぎると間に合わず撃墜されます。追いつかれたときに距離がある程度あれば自機を通り越して前方で爆発しますが、距離が近かった場合撃墜されます。

あと最終手段としてはアフターバーナー吹かすと振り切れます。が、スピードを上げると前方の敵のミサイルなども相対的にスピードが上がってすぐに近づいていくるようになるので注意しましょう。タイミングを間違えると自ら敵ミサイルに突っ込んでいきます。c キーでアフターバーナー点火です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579271/c160b984-3213-77d5-c494-99853af37f2e.png)

３面は夜の海。

残機が復活してスコアが激減しているのは２面であえなくゲームオーバーとなってしまったので、ズルして画面キャプチャのために３面からスタートさせたせいです。真似してはいけません。

暗いだけであまり変わりませんが、敵の攻撃はステージが進むにつれて激しさを増してきます。

### その後～エンディング

その後はぜひプレイして確認してみてください。ここまでは海でしたが、この後は海を離れ、荒れた大地（４面）を抜けてから森の上空（５面）で戦闘を行った後、雲の上（６面）での戦闘になります。それを抜けるとエンディングです。エンディングは全く凝ってないけど。

海の場合は空母が待っていてスペースキーで離陸でしたが、この先はステージ変更時の休息が基本ありません。唯一、森から雲に抜ける手前で森の中にあると言われる秘密基地に立ち寄れます。そこでは空母同様にスペースキーで離陸です。

# 中の説明

## 曲紹介

では、早速（プログラムではなく）曲紹介に行きましょう。なんかこっちの方が思い入れがあったりして。プログラムは後回し。

### Introduction - The Story

* あの超かっこいい、モトリークルー Dr.Feelgood のイントロをイメージ。
* 低音でダンダダン・ダンダンダンダンダンダ、とズンズン響くフレーズを中心にシンプルな 4 小節のループ。
* 最初にストーリーを読ませるだけの 20 秒程度の演出なのだが、ベースとドラムだけで十分カッコいい感じになったと思う。

### High Energy - Opening/Ending

* 最初はオープニングなので短めに、と思って長く伸ばしたパワーコード（最終的には曲の最後に置いた）だけでループさせるつもりだったのだが、なんとなく似合いそうな動きのあるベースラインを思いついてしまったので、それをベースにテンポを上げて味付けしてみた。
* 結果、割とノリノリな感じの良さげな曲になった。
* ということで、オープニングだけの予定だったのだが、結構気に入ったのでイントロのフィルだけ少し変えてエンディングにも使うことにした。オープニングは慣れてくると飛ばされて最後まで聞かない感じになっちゃうしね。

### Challengers - Stage 1-2

* アフターバーナーと言えば、あの明るい曲調がかっこいい **Final Take Off** で始まるという、出だしでの何とも言えない**爽快感**。なので、やはり１面は明るい曲がいいな、と思って作った曲。
* Aメロに入る直前のドラムソロが個人的にかっこいい。私自身はドラム叩けないけど。
* この曲と５、６面で使った Last Mission は、Bメロとソロパートも作ろうと思ったが全体的に短めにまとめた方がいいな（容量的にも）、と思ってAメロ＋αくらいでループさせることにした。時間があったらちゃんと完成させるかも。

### Enemy In The Night - Stage 3-4

* 中盤にあたる３面と４面は緊張感のある曲が良いなと思い、アフターバーナーの **Super Stripe** と **Red Out** を足して二で割った感じをイメージ。
* パワーコードで伸ばすところはディレイが合うなー、と思ってわざわざ別トラックで重ねてみたり。
* ベースラインはドンドド・ダドンド・ドンドド・ダドンドとヘヴィに響かせたいと **Led Zeppelin** の「移民の歌」をイメージしたのだが、ベースラインを細かくすると Scratch のリズム感が狂いまくるので良い塩梅に音を抜いてみたところ、結果オーライ、逆に良くなった気がする。

### Last Mission - Stage 5-6

* 最終面にかけては最後の踏ん張りどころということで、これもアフターバーナーのメインテーマのようなマイナーキーの哀愁漂うハードロックがいいな、と思ってそういう感じを目指して作ってみた曲。
* ただ、途中ブリッジの部分で一瞬 C メジャーに転調させることで多少の雄大さというか大空を飛ぶ感じを演出。

### Goodbye - Game Over

* ゲームオーバーの曲なので、悔いなく潔く散っていったかのような穏やかな感じをイメージ。
* おしゃれ感漂う 9th コード中心のコード進行にビブラフォンの透明なメロディを乗せてみたら割といい感じになった。
* この曲だけループさせてないので、実際のゲームオーバーの画面では曲が終わってちょっとしたらエンディングと同じイントロで High Energy が始まります。
* コンティニューはありません。

## プログラムについて

やっと本題でしょうか。お待たせしました。

Scratch なので基本１品モノみたいに思いますが、スプライトで独立させてライブラリ的に扱えるのでは？と思ったのでその辺を中心に記載したいと思います。

と、言いつつ、長くなったので今回はここまで！（え？）

どっちかというと、まずは細かいプログラムのことは置いておいて、**ぜひゲームを楽しんで感想をいただける** と嬉しいです。その上で、中を見てみてもらえると嬉しいです。何やってるのか、もっとこうすると良いんじゃないか、とか。

そして、この記事だけでなく **Scratch 側にも高評価** もらえると有難いです。モチベーション維持のためにもぜひ。

* https://scratch.mit.edu/projects/1042567369

作りながら、だいぶノウハウ分かってきたので、そのあたりで記事をいくつか書いてみてますが、概ね Scratch プログラムの再利用方法みたいな感じでアップできるように考えてみてます。あとはやってみてわかった Tips 的なモノですね。

ではまた！

> G-14 Jerrydog は若干、内容をアップデートしました。
> https://qiita.com/Kray-G/items/1ae34f9182d1736b7acf