[ue4]ぷちコンに投稿したゲームについて


#【前提】
__・ヒストリアさんが開催されているue4のゲームコンテスト「ue4ぷちコン」に投稿したゲームの話題を投稿しています。__
__・うそを書くつもりはありませんが。経験に基づいて記述しているため、間違いが多分にある可能性があります。__
__・Windowsを使用しているため、説明文の特殊キーやマウスは、他の環境の場合は読み替えてください。__

__※注意：全てのURLリンクを開くときは、マウスの左クリックで「新しいタブで開く」で開いてください。__
__また、画像が小さくて見づらい場合は画像をクリックしてください。__

#【目的】

私がue4ぷちコンに投稿した「跳弾サバイバー」というゲームの内部的な説明です。

#【ue4ぷちコン】

まず、はじめにue4ぷちコンって何？という方のために簡単に説明。

世にUnreal Engine4が登場した去年の春、その頃から精力的にUnreal Engine4(以下ue4)の勉強会を開催したり
（私も行きました）

ue4の情報を多数発信されている株式会社ヒストリアさん
http://historia.co.jp/

が定期的に開催されているue4の作品コンテストです。

基本はゲーム中心ですが。ue4を使用した作品ならゲームである必要はない模様です。
http://historia.co.jp/ue4petitcon
↑ぷちコンのサイト

現在までに、4回開催されていますが。
私は第2回と、第4回に参加しています。

第3回も参加しようとゲームは作っていましたが
間に合わなかったという、、、

そのゲームがのちにEpicさんのGameJamに参加するきっかけになります。

もし間に合っていたら、そのあと続く8回ものEpicさんのGameJam参加があったかどうか。

ちなみに、こんな風に記事を書いていますが
特にue4ぷちコンで入賞したとかではないのでご注意ください（笑

#【第4回投稿ゲーム】

第4回のときに投稿したゲームは「跳弾サバイバー」と言います。
第4回の時のテーマが「反射」だったので、弾丸が反射して跳ねるゲーム、そのままですね。
![1.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/96e24fca-0a29-cb21-0370-b117a472e3b8.jpeg)

投稿したときの動画
https://www.youtube.com/watch?v=rLKmnAOjIb8&list=PL42VZspg9utugIJc16ClR581fhhg8sFlJ&index=5

全てではありませんが
一部、shippingした実行ファイルです
https://drive.google.com/file/d/0B-7H8IjwA4Oydy1tY3RQZlpoSGc/view?usp=sharing

遊べます。

###【跳弾サバイバー】
#####【ルール】
このゲームのルールは以下です。
・ゲームの目的は次のレベルに進むこと
　　ステージクリア型のゲームです。
　　クリアの方法は二種類存在します。
　　　　①ボスを倒すこと
　　　　②秘密の出口を見つけること
・敵も2種類存在する
　　①プレイヤーが撃つ弾丸を一定数　跳ねさせて（反射）させないと倒せない敵
　　②跳ねさせなくても倒せる敵

　　最終的なボスや、ダンジョンの出入り口近くいるのは①タイプです。
・全部で4レベル存在する
　　4レベル全てをクリアすればエンディングに行けます。

#####【テーマ】
ぷちコンのテーマが「反射」ということで、弾を跳ねさせて敵を倒すというのがこのゲームの肝になります。
![2.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/b5e5f6b9-f274-da04-c293-d45b2f2a049c.jpeg)


#####【ゲームシステム】
このゲームのシステムは一言で言うと「グラディウス」というシューティングのぱくり
__いえ、リスペクトです。__

グラディウスのパワーアップシステムをUI以外は、ほぼ参考にしています。
（コナミさんすみません）

グラディウスのパワーアップシステムはご存じの方はご存じのとおり。
パワーアップカプセルを集めて、少しずつパワーアップしていくシステムです。

| SPEED UP| MISSILE | DOUBLE |LASER |?    |
|:--------------|------------:|:------------:|:------------:|:------------:|
| 自機のスピードアップ | 地上ミサイル | 上方に弾が飛ぶ |レーザー砲 |バリア    |

な感じで左から右にカプセルをとるごとに取れるパワアップが変わっていきます。

で
この「跳弾サバイバー」は
同じようにPow（パワアップアイテム）を取ると銃をパワーアップできる項目が変わっていきます
![3.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/00207dec-f7b7-7bd8-260c-a1fccfd7e61b.jpeg)

これが「跳弾サバイバー」のパワーアップです。


|  BULLET 　| SPEED UP | LONG SHOT | 3WAY SHOT |REFLECTION    |
|:-----------|------------:|:------------:|:------------:|:------------:|
|  弾数が10増える | 弾の発射速度が上がる | 弾の飛距離が長くなる | 散弾(3つ弾）になる |弾が反射するようになる    |

#【ProjectileMovement】

上記のゲームシステムを実装するに当たって、ue4に標準で実装されているコンポーネント__「ProjectileMovement」__を使用すれば比較的簡単に色々実装可能です。
（ていうか、これがあったから考えついたとも言えます）

##ProjectileMovement導入手順

##手順1　テンプレート
ファーストパーソンテンプレートを使用します。
![4.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/4857f822-ddcb-15ff-f1af-b57846a92992.jpeg)

上記の写真のテンプレート選択で「ブループリント」の「First Person」のテンプレート選択しプロジェクトを作成します。

##手順2　弾丸アクター作成

![5.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/61ba9b78-4dbd-326e-3161-d1aeae1f9718.jpeg)

テンプレートが開いたら、このゲームの肝部分である弾丸のアクターを作りましょう。
ue4は元々「Unreal」というFPS（ファーストパーソンシューター）生まれのゲームエンジンだけあって
FPSで使いそうな機能が豊富にデフォルトの状態で盛り込まれています。

![6.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/5f5d6cfb-6f94-c90d-b39d-989c44e84a34.jpeg)
テンプレート内に、既に赤枠の弾丸のアクターが組み込まれていますが。
せっかくなので新規でアクターの作り方をやってみましょう。
（もちろん、そのまま再利用するのもありです）

コンテンツブラウザーのフォルダのどこか（この例ではblueprint内）で右クリックしメニューを開きます
そこで赤枠のブループリントクラスを選択します。

![7.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/34da1683-4cdf-791d-8333-c17fbe9fc8e8.jpeg)

アクターを選択し作成します

![8.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/be37b6e2-2dbf-d3f6-9f5a-2032be7c9c01.jpeg)

以下のように新しいブループリントクラス（アクター）が作成されました
![9.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/e2989c48-ea3c-7589-8f70-8a8c9c4c6e9e.jpeg)

とりあえず、アクターの名前を変更しておきましょう。
後で分からなくなることの無いように分かりやすい名前を付けます。

![12.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/5db20fc0-e083-2a0f-6362-0f621f1dd395.jpeg)


__a_dangan__という名前にしておきました（私は古い人間なので基本的に日本語のマルチバイト文字は使いません）

![11.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/d50b1cc8-ea03-b1c4-26c4-ae9a2898b885.jpeg)

名前を変更したアクターをダブルクリックで修正していきます。

![13.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/d9f4269d-bc7e-0a01-fb7f-9b5f439c0171.jpeg)

タブがビューポートになっていることを確認し、問題の「ProjectileMovement」を追加します。

右にある緑の部分「コンポーネントを追加」をクリックし「ProjectileMovement」をアクターに追加します。
![14.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/cc07f0b3-03c1-6f6b-aec1-747796a9c98d.jpeg)

検索の部分に「pro」を打ちこんで探してみましょう
矢印の「Projectile Movement」が見つかるはずです。
![15.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/b9038a1b-deee-099d-1ffd-27664d7b462a.jpeg)

追加しましょう

![16.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/2190faa1-622b-d197-1ffa-33060becaee1.jpeg)

追加しました。

##手順3　ProjectileMovement機能確認

ProjectileMovementの右側の変数群（機能スイッチ等）を確認してみます。

![17.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/83e96653-e4ab-87fd-6e92-d24b1c8dcc7e.jpeg)

弾丸の発射時の初速や最大スピードを設定できる変数群があります。
あと、重力(Gravity)の影響などの項目があります。
・弾丸の初速が変わる
・弾丸の最大スピードが変わる
・弾丸の重力の影響が変わります。
重力の影響を強くすると、まっすぐ飛ばず落ちていきます

![18.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/4da80887-c920-7c13-5ff8-539fcc864f30.jpeg)

次は、このゲームの肝部分の反射(Bounce）のスイッチなどの項目があります。
特に反射(Bounce）のスイッチをtrueにすると弾丸が壁などのコリジョン（当たり判定のあるもの）に反射するようになります。
これでこのゲームは跳弾のありなしをスイッチしています。

![19.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/f19c3172-5cd6-eefc-e8dd-23d829ddc736.jpeg)

ここは、使用したことがないので間違いがあるかもですが
物理シミュレーションの影響についてだと思われます。
![20.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/19c07d8b-4257-a5af-ab6a-06eb89b54213.jpeg)

次にホーミング（追尾ミサイル的な）のスイッチ
これをスイッチを入れると追尾弾が比較的簡単に実装できます。
![21.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/6ad4ed4b-a0aa-aeb9-6aee-def5d775191d.jpeg)

いかがでしょうか？
このコンポーネントだけでも色々できそうな気がしてきませんか？


#【コントロール】

これらの弾丸に搭載されているProjectileMovementのコンポーネントのパラメータやスイッチを
プレイヤーのアクター側でコントロールしてあげれば、弾丸が反射したり、しなかったり
弾丸の初速度を変えたりが可能です。

|  BULLET 　| SPEED UP | LONG SHOT | 3WAY SHOT |REFLECTION    |
|:-----------|------------:|:------------:|:------------:|:------------:|
|  弾数が10増える | 弾の発射速度が上がる | 弾の飛距離が長くなる | 散弾(3つ弾）になる |弾が反射するようになる    |

この中の２つはそれだけで実装可能です。

弾丸の飛距離やショットガン（3WAY)の、弾数等々についてはちょっと小細工が必要ですが、、、

【最後に】

今回はue4ぷちコンに投稿した弾丸のアクターはこんな感じです。

![22.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/0d06835e-ab27-ef00-28a5-0550353b34cb.jpeg)

イベントグラフはこんな感じ
![23.jpg](https://qiita-image-store.s3.amazonaws.com/0/59114/6bc51a4f-5b90-b625-c862-843c27d10055.jpeg)

まだまだ、書きたいこともありますが。
Qiitaの画像のアップロードの上限制限もありますし、それにあまり長くだらだら書いても仕方ないので
今回は、このゲームの肝である弾丸の移動を司る「ProjectileMovement」について書いてみました

気が向いたら他にも色々あるので他記事で続きを書くかもしれません。

最後まで読んでくださってありがとうございました。