ドラスピ大反省会(2)

ドラスティースピアのゲームシステムは至ってシンプルで『ザコ戦』と『ボス戦』のみのレールシューティングです。

プレイヤーの操るドラゴンは

  • MP残量によって威力が変わる「ショット」
  • 緊急回避用の「ローリング」

が使えます。

ちなみにローリング中は無敵に加え移動速度が倍になるので、回避以外にも使いどころはあるかもしれません。

ザコ戦はタイムテーブルに従って敵(編隊)を登場させています。
一見ランダムっぽく見えますが、ランダムで登場するのはクラゲだけで、それ以外は一定のルールに則って登場するようにしています。なお敵を早く倒せば次が早く出てくる早回しにはなっていません。

しかしこのザコ戦ですが、実は後から追加した要素で、これが後々色々と問題を起こすことになりました(※これについてはまた別の話題で書きます)

攻守交代によるボス戦のプロトタイプは随分前に作っていました。
(去年の9月頃だったと思います)

ちなみにこの攻守交代の元ネタは「Wing War」ですw

Wing War – Sega Arcade – HD – YouTube

これをドラゴンでやってみよう!って話になり、結果今のボス戦っぽい感じのものが出来ました。

この段階ではドラゴンのモデルはこれを使わせてもらいました。
Animated Witch and Dragon Monster(Asset Store)

背景の『がんばれーる』でも使ったこれです
First Fantasy for Mobile(Asset Store)

さらに、奥に進んでいくだけでは見た目の変化が少ないので、左右旋回や上下アップダウンを入れられるレールシューティングにしたものこの時だったと思います。
レールにはDOTween Proを使い、事前にシーン上に設定したパス上をプレイヤードラゴンやボスが移動します。

DOTween Pro(Asset Store)


こんな感じにDOTweenでWaypointを設定してパスを作成しています。
ちなみにこのパスを1周するに約9分程度かかります。

次回はレールシューティングあるある(?)を書く予定です。

ドラスピ大反省会(1)

数回にわたってドラスティースピアの開発について書こうと思います。

毎度のことですが開発期間が足りていません。
特に今回は当初4週間で作ろうと計画したものの、色々あり2週間程度しか捻出できず、かなり荒削りな内容となっています。

さて、足りない期間をなんとかするために取る手段ですが、いつも通り

  • 割り切る
  • Asset Storeを活用する
  • 過去のものを使う

です。

『割り切る』のは非常に難しい問題で、作る側のポリシーが一番影響するところでもあると思います。アオダマテイはどちらかと言えばリリースを優先しているので、必要なら心を鬼にしてバッサバッサと仕様を切り捨てています(本当に必要な仕様だったらちゃんと後から追加しますし)

Asset StoreのAssetには今回もお世話になっています。
例えばざっと表示に関係しそうなところだけでもこんな感じです。

※使用したAssetについては個別に書いていく予定です。

『過去のもの』を使うは、ソースコードや各種リソースだったりします。せっかく作ったものは大いに活用しましょう。今回は過去作品からの効果音の流用が多いです。ざっとわかる範囲で

  • タイトルのスタート→PanzerStrikeのスタート音
  • アイテムゲット→DustShootersのゴミ回収音
  • ロックオン→DustShootersのロックオン音
  • ローリング時MP不足→DustShootersのバッテリー不足音

です。
なお時間がないときに書くソースコードはクソコードが多くなるので再利用は期待できないものが多いです…
(ソースコードは残りませんが、実装ノウハウは蓄積されています)

次回はゲームシステムについてです。

ドラスティースピア -PILOT EDITION-を公開しました

以下からC92で頒布したものと同じ「ドラスティースピア -PILOT EDITION-」がダウンロードできます。

ドラスティースピア(PE)

まだ「ドラゴン」+「レールシューティング」+「攻守交代によるボス戦」だとこんな感じのゲームになるかなーぐらいの内容です。今後はこれを土台に内容を詰めていこうと思っていますが、これ以上未完のタイトルが増えていくのもどうかと思ったりも…

とりあえず近いうちにドラスティースピアも恒例の開発裏話的なものを書いていく予定です。

ドラスティースピア -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の紹介でした。