ドラスティースピア -PILOT EDTION- マスターアップ

C92新作の「ドラスティースピア -PILOT EDTION-」です。

新しく作ったので新作ではあるんですが、まだまだ未完成な部分がかなりあるため、あくまで『こんな感じのゲームに仕上げていこうかなー』的な内容です。

そして今まさにDVDが焼き終わりました!

PVも一応出来たんですが、諸事情で曲はありませんー

後は「スウィンぐるん」と「がんばれーる」をまとめたパッケージも用意しました。

今回もEasyGameStationさんのところで委託販売して頂きます~

迫撃砲の攻略

ステージ4から登場する「迫撃砲」を撃破するのが難しいという意見を頂いたので、攻略の参考になりそうな情報を書いてみました。

まず迫撃砲についての基本情報です。

  • プレイヤー戦車に向けて爆弾を発射する
  • 爆弾は着弾時に爆発し周囲にダメージを与える
  • 爆弾発射前に着弾予想位置が出る
  • プレイヤー戦車の弾に反応して高速移動(回避運動)する
  • 回避運動以外の移動はしない
  • シールドは使わない
  • キャラの顔がほとんど見えないw

ダメージ大きい爆弾を発射+高速で逃げ回る厄介な相手です。
特に回避運動はあっという間に遠くに移動することもあり、なかなか捕捉できなかったりします(一応車体がUFOなのであんな動きになっています)

しかし敵味方の配置に関係なく爆弾を発射するので使い方次第では敵戦車の撃破に大きく貢献してくれますw

以下、具体的な攻略のヒントです。

攻略ヒントその1「青シールドは爆発を完全に防ぐことができる」

エネルギー残量が50%以上の時に使える青シールドは爆発によるダメージを100%無効にできるので、着弾予想位置(赤色の円)から脱出できないと思ったらシールド使いましょう。ただ、エネルギー残量が少なく黄シールドの場合は爆発のダメージは全く防げないので注意です。迫撃砲と戦う前にエネルギーを回復させておくのもいいと思います。

攻略ヒントその2「ロックオンを積極的に使う」

迫撃砲はこちらの攻撃を回避しようと高速移動するため、高速で逃げる迫撃砲を追いながら弾を命中させる必要があります。
この時、なかなか弾を当てられない場合は迫撃砲をロックオンして攻撃が楽になります。
※ロックオンは弾の命中を100%保証するものではありません

敵を補足しているとき(敵の上に赤色の四角が表示されている)に左CTRLキーを押すとロックオン状態となり、キーの押下中は砲塔はロック中の敵を自動追尾します。ロックオン中に表示される青矢印は本体正面になります。

攻略ヒントその3「無駄弾を撃たない」

迫撃砲はプレイヤー戦車の弾に反応して高速移動するので、弾の発射は計画的に行いましょう。ガトリングや連装砲のように弾速が速い弾でエネルギー残量が豊富なら無駄弾含めた力押しも可能だったりします。

攻略ヒントその4「敵の移動先を予測する」

迫撃砲の高速移動は「できるだけ広いスペースに移動する」という特性があります。そのため、ある程度移動先を予測することが可能です。
ただ、広いところに逃げられると弾を当てるのが難しくなるので、できれば狭いところで一気に撃破するまで弾を当て続けるのが理想だと思います。

攻略ヒントその5「自滅させる」

迫撃砲はシールドが使えず、こちらが弾を撃たなければ移動しない特性を利用して、「迫撃砲に隣接+弾を撃たせて爆発に巻き込む+自分は青シールドで無傷」
ということができますw

以上の攻略ヒントその1~5を駆使すれば迫撃砲の撃破は楽になるかと思います。

 

がんばれーるで使用しているAssetについて

がんばれーるで使用しているAssetについてになります。
ホント、毎回Assetには助けられています。

過去に何度か紹介している普段から使っているAssetは

になります。
どのAssetも有名どころだと思うのであえて説明する必要はないかなと。

描画関係で使っているAssetはキャラクタとタンクの描画に Toony Colors Pro、背景の一部に UNOShader UNLIT w/TOON support を使っています。
両シェーダーともかなり高機能かつ便利なんですが、ワークフローや仕様上の問題でおそらく次は自作シェーダーになると思います。

爆発等のパーティクルは Sci-Fi EffectsWarFX、Skyboxは First Fantasy for Mobile のものを使っています。
Sci-Fi Effectsは爆発系以外にもレーザーや炎、ホログラフと色々なエフェクトが入っていたり、ターレットエディタで好きな砲台が作れたりとAsset単体でも結構楽しめます。
また非常に助かるのはエフェクトにあわせた効果音も入っているところですね。エフェクトにあった効果音探すのも結構時間かかるんです…

ステージ開始時のカメラ動きは Pegasus を使いました。DustShootersで使っている Camera Path Animator でもよかったんですが、たまには別のAssetを使ってみたかったので。次は無償になった Cine.Machine Base Rig も使ってみたい思っています。

version 1.01から追加したボイスは Voice Pack Vol.1vol.2 です。
やはりボイスがあるとないとでは全然違いますね。

以上、かなりざっくりですががんばれーるで使っているAssetの紹介でした。

がんばれーる1stの v1.01 アップデータを公開しました

がんばれーる1stの v1.01 アップデータを公開しました。
ダウンロード

  • アップデート方法

ダウンロードしたgb1st_v1.01_Update.exeを実行してください。
このような画面になるので、ダイアログに従ってアップデートを行ってください。

1点だけ注意点ですが、参照先を選択するダイアログのところでがんばれーるのインストールフォルダを選択するところがあるので、環境に合わせて変更してください。

アップデートの内容ですが、環境設定の機能強化が主になります。

  • 環境設定で各種ポストエフェクトのON/OFFを行えるようにしました

ポストエフェクトの「Antialiasing」「Ambient Occlusion」「Bloom」を個別にON/OFFできるようになりました。ポストエフェクトを全て無効にすると描画パフォーマンスはかなり変わりますので、実行環境に合わせて設定してみてください

ポストエフェクトを全てONにしたときと、全てOFFにした場合、見た目はこれぐらい変わります

個別に組み合わせた感じだとこんな感じです

「Ambient Occlusion」を有効にするとキャラの顔が怖く(?)なりますが、背景の見た目はよくなります

ちなみにポストエフェクトは画面全体にかかるので、Ambient Occlusionをキャラの顔だけOFF、背景だけONというのは標準ではできません。
(今作っているシェーダーはステンシルバッファを使って任意のマテリアルだけAmbient Occlusionをかけないように出来ます)

Bloomはキャラの見た目よりゲーム中のエフェクトに影響がでます

  • ボイスを追加しました

賑やかしのボイスを追加しました。
それに伴い、音量調整の部分にボイスが追加され、再生テストボタンを追加しました。
いずれボイスも何パターンか用意してカスタマイズ項目に追加したいですね。

  • ゲームパッドのスティック入力をデジタル値として扱うオプションを追加しました

ゲームパッド+ラジコン操作だとスティックの構造上アクセル100%右旋回100%のような操作が行えませんので、閾値を設けてスティックの入力をデジタル的に扱うように出来ます。
ただ、操作がピーキーになるのでゲームパッド時はラジコン操作ではなく「方向キーの入力方向に移動」を選んだ方がいいと思います。

  • タイトル画面のメニュー項目をマウスで選択できるようにしました

地味な改良ですが、タイトル画面のメニューの選択だけマウス対応しました。

以上、version 1.01 の更新内容についてです。

最後に、アップデータにはPatchWise Freeを使わせて頂きました。
(自前のaoUpdaterを入れてもよかったんですが、ノートンなどのセキュリティソフトに削除されるトラブル対応が面倒で…)

がんばれーるのゲーム本体について

がんばれーるのゲーム本体についてです。

実はがんばれーるの元になるゲームは10月に既に作っていました。
これがいわゆるプロトタイプになります。

このゲームは

  • DustShootersの主人公の制御方法の見直し(CharacterController+Rigidbody的なものにしたい)
  • NavMeshの応用研究(DustShootersのボスの移動がNavMeshなので)

を主目的とし、さらに個人的に不定期で実施している

  • 瞬発力を鍛えるために24時間で1本ゲームを作る

という「一人ハッカソン」的なもので誕生しました。
このゲームにキャラカスタマイズ機能を追加したのが「がんばれーる1st」になります。

ただ、ゲームロジック部分の思想が異なっていて、プロトタイプはシューティングゲーム的な自機と敵の組み合わせに対し、がんばれーるは自機も敵も「タンク+キャラ」という部分を共通化し、プレイヤーが操作する自機に相当するタンクにはユーザー操作を許可するコンポーネントを追加することでキー操作を行っています。

そのため、がんばれーるの内部ロジック的にはCPUs vs CPUsのような自動バトルロイヤルが可能だったりします。

一応プロトタイプの流れでシューティングゲームとして作りましたが、もしかしたら次は(がんばれーる2nd?)シミュレーションゲームになる可能性もあったりなかったり…

次回は使ったAssetについてです。

描画パフォーマンスについて

ゲーム本体についての前に、がんばれーるの動作が遅いとの意見を頂いたので、手持ちのPCで特にパフォーマンスの出にくいノートPCでFPSを計測してみました。

解像度は1280×720(GT330のみ1280×768)、No Effect はPostEffect処理(Antialiasing、Ambient Occlusuin、Bloom)を無効にした場合です。
※頒布中のがんばれーるではPostEffectを無効にすることはできません

Good Beautiful Fantastic
i7-640M
GeForce GT330M
D11 15 11 9
D9 16 13 11
D11 No Effect 27 19 14
D9 30 25 17
i7-4650U
Intel HD Graphics 5000
D11 21 19 13
D9 28 23 17
D11 No Effect 37 27 19
D9 40 30 23
i7-6650U
Intel Iris Graphics 540
D11 34 31 29
D9 39 35 29
D11 No Effect 60 43 37
D9 60 50 36

若干ですが、DirectX9モードで動かした方がFPSは出るようです。

また、やはりPostEffectの無効化はやはり影響が大きいです。
もちろん見た目もこれぐらい変わりますが…

ちなみにPostEffectはImageEffectではなくこっちを使っています

まぁ結論としては当たり前ですが描画クオリティの設定機能は必要ってことですね。

後は動作スペックの下限をどのあたりに設定するかも課題かもしれません。
一覧には入ってませんが、Intel HD Graphics(i7-640M)ではDirectX11で起動せず、DirectX9でGood品質の時 4fps(No Effect で7fps)でした。さすがにこの世代でプレイするのは非常に厳しいです。

【補足】
FPSを計測したのはタイトル画面です。
環境によりますが、ゲーム中(見下ろし画面)のFPSはタイトル画面の 1.5 倍程度出ます。

キャラクタの描画について

がんばれーるのキャラクタの描画についてです。

がんばれーるのキャラやタンクの描画にはToony Colors Proを使っています。

Toony Colors Pro+Mobile(Asset Store)

シェーダーの構成としてはStandard PBS(物理シェーダー)+アウトライン+ランプです。

特に難しいことはやっていませんが、当初カスタマイズで色変更を考慮していなかったので、後から色変更(そのために複数テクスチャ化)に対応するため1メッシュ複数マテリアルというパフォーマンスの悪い実装になっています。もっともPCならさほど問題でもないでしょう。

例えば髪のレンダラーはこんな感じに複数マテリアルになっています。
chara_bobcut_colが髪、chara_bubcut_maskがハイライトになり、chara_bobcut_colの Albedoを変更することで色変更に対応してます。

ただ、やはりパフォーマンスや取り回しを考慮するならシェーダーを自作するべきでした。
例えばStandard PBSでテクスチャを3枚重ねるだけなら

#pragma surface surf Standard fullforwardshadows

void surf (Input IN, inout SurfaceOutputStandard o)
{
    fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;

    fixed4 tex2nd = tex2D(_Tex2nd, IN.uv_MainTex) * _Color2nd;
    c.rgb = lerp(c.rgb, tex2nd.rgb, tex2nd.a);

    fixed4 tex3rd = tex2D(_Tex3rd, IN.uv_MainTex) * _Color3rd;
    c.rgb = lerp(c.rgb, tex3rd.rgb, tex3rd.a);

    o.Metallic = _Metallic;
    o.Smoothness = _Glossiness;
    o.Albedo = c.rgb;
    o.Alpha = c.a;
}

だけで済みますし、アウトラインを入れるならUsePass “Toon/Basic Outline/OUTLINE”でUnity標準のアウトラインシェーダーを呼べばいいでしょう。
ランプテクスチャを用いた階調表現はUnity標準のToonLit.shaderを参考にすればいいと思いますが、Standard PBSと合成したいとかなると自前で実装する必要があると思います。もしShaderForgeを使うなら

Unity道場 14 Shader Forge 102 ~ShaderForgeをつかって学ぶシェーダー入門~ カスタムライティング/トゥーンシェーダー編

の30ページからランプシェーダーについての説明があるので、これを参考にするのがいいと思います。

なお、今回の反省をから後日シェーダーに関しては自作してみました(途中)。
普段なら直接シェーダーを書くところですが、せっかくなのでShaderForgeで作ってみたり。
※ShaderForgeを使うにあたり、上記Unity道場の内容は非常に参考になりました!

左がToony Colors Pro、右が自作シェーダーになります。
ランプの実装がまだ途中なのでいまいちですが、全ての処理が1マテリアルで完結しているので、マテリアル情報が MaterialPropertyBlock で変更出来るようになります。
(MaterialPropertyBlockはレンダラーに対しての設定のため、マテリアルが複数ある場合の設定のしかたがわからなかった…)

ちなみにこれらで得られたノウハウはもれなくDustShootersに反映されています。

次回はゲーム本体についてです。

がんばれーる1st反省会

がんばれーる1st反省会(その1?)

前作のスウィンぐるんは3週間、それもかなりのオーバーワークで作ったので、今回は何を作るにしてもとりあえずゆるゆると6週間で開発すると計画したものの、結果的に5週間のオーバーワークという前回より状況は悪化しましたw

大雑把な内訳は

  • キャラ+タンクのカスタマイズ機能に3週間
  • ゲーム本体に2週間

でしょうか。

特にキャラカスタマイズに半分以上の時間を使ってしまったのは大失敗でした。
実装方法をあれこれ試していたのもありますが、一番の問題はエディタ拡張を作るのに時間をかけてしまったことです。なにせゲーム自体の進捗にはほとんど寄与しないので…

どうせゲーム内でカスタマイズするので、最初からランタイム動作のカスタマイズエディタを作ってしまえばよかったんですよねぇ。

ちなみにUnityエディタ上で動作するカスタマイズエディタはこんな風です。

キャラクタのカスタマイズ

タンクのカスタマイズ

それでも今までエディタ拡張を積極的に使ってこなかったこともあり、今回のカスタマイズを作って色々と得るものはありました。今更でしょうが Inspector が見やすくなるのが素晴らしいですw

次回はキャラクタの描画についてです