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

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

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

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

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

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

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

もうすぐC92ですが

残念なことにDustShootersの完成はまだまだ先になります。
TimelineとCinemachineが追加されたUnityが出たら本気だすとか思っていたら、もうUnity 2017出ちゃいましたねw
カットシーンを作るのにTimelineやCinemachineを使って見たいので、区切りのいいところで移行する予定です。

一応今月に入ってからC92向けのゲームを作り始めていますが、どこまで作れるかはまだなんとも…

とりあえず背景はこんな感じで、多分シューティングになります。

Unity上でEDTrackerを使ったヘッドトラッキング

Unity上でEDTrackerを使ったヘッドトラッキングを実験したので、その備忘録。

EDTrackerとはArduino+ジャイロセンサーを使ったヘッドトラッキングデバイスです。完成品のProと自作向けのDIYの2種類があり、DIYは専用基板を買って作ることもユニバーサル基板上で完全に自作することもできます。詳細は公式サイトで確認してください。

EDTracker

今回はリファレンス機としてProを使いましたが、自作したものでも結果は同じだと思います(自作用のパーツは用意したんですが、まだ作ってないので…)

EDTrackerはopentrackを経由することで既存のさまざまなゲームで使えるような運用になっているようです。

今回はopentrackを経由せず直接EDTrackerの情報をUnity上で扱えるようにするのが目的です。

EDTrackerはWindowsからはジョイスティックとして認識され、トラッキング情報はジョイスティックの軸データとして取得できます。joy.cpl(昔はコントロールパネルから実行できたんですけどねぇ)で確認すると、X軸・Y軸に-1~1の範囲でデータが入ってくるので、このデータをヨー・ピッチとして使えば良さそうです。

【注意】EDTrackerUIでYaw ScalingとPitch Scalingを1.0にしておく必要があります

しかしここで問題が。Unity標準のInput.GetAxisRawでは期待した値が取得できませんでした。問題切り分けのためWin32APIのJoyGetPosExでEDTrackerのスティックデータを取得したところ期待していた-1~+1の範囲の値を取得出来ました。
おそらくUnity側の問題だと思うんですが、あまり突っ込んだ調査はせずJoyGetPosExをC#から呼べるようにしてUnityで使えるようにしました。
(Win32APIをC#で呼び出す方法は”C# DLLImport”等でググると出てきます )

ちなみにヨーのデータは正面を 0 として左方向にマイナス、右方向にプラスで、真後ろが-1もしくは+1になります。

なので

float axis = (((float)JoyInfoEx.dwXpos - 32767) / 32768);
Yaw = Mathf.Clamp(axis, -0.5f, 0.5f) * 180f;

とすれば、左を向けば -90f、右を向けば 90f がYawに格納されます。
あとはカメラのTransformを回転させればヘッドトラッキングが実現出来ます。

transform.rotation = Quaternion.Euler(
-Pitch * RotationSpeed,
Yaw * RotationSpeed,
0f * RotationSpeed);

まぁリアルに頭を90度横に向けてしまうと画面が見られないので、opentrackのマッピング機能と同等の機能を実装して調整出来るようにする必要があると思います。

とりあえず今はインスペクタである程度調整できるようにしています。
(上はヘッドセットの入力を左右30度の入力でカメラを左右90度回す設定)

これでとりあえずUnityでEDTrackerが使えるようになりました。
ヘッドトラッキングだけではVRのような没入感は得られませんが、頭の動きにカメラが追従するのでだけでも結構楽しめますし、なにより高価なHMDを使わないので簡単に利用出来るのもメリットだと思います(EDTrackerを完全自作するなら部品代は1500~2000円ぐらいです)

できればNx Head TrackerのようにBluetooth接続できるといいんですけどね。

迫撃砲の攻略

ステージ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についてです。