aodama の紹介

Unity始めました。 ちょっと前から自転車(ロードバイク)に乗り始めました。

ドラスピ大反省会(4)

ドラスティースピアのサウンドについてです。

ザコ戦の曲は Game Music Pack – SUITE(Asset Store) の rpg_09_loop を、

ボス戦の曲は Mega Game Music Collection(Asset Store) の Energy Hard Rock Pack から Let’s Rock(looped)を使わせてもらいました。

素材集の曲は色々な方が使われるので、良くも悪くも被ることが多いのがちょっと悩ましいところかも…

効果音は以前書いたとおり過去作品からの流用と

Universal Sound FX(Asset Store)
Ultimate Game Music Collection(Asset Store)

から使わせてもらいました。
過去作品の効果音も何かしらの素材集のものを使っていることが多いです。
(どうしてもイメージに合うものがない場合は自分で作ったりもしますが)

あと効果音を入れるタイミングは「とりあえず」でもいいので早め早めがいいと思います。なにせ見つからないときのピンチ感は半端ないので…

ちなみにゲーム開始時のこの演出は

「ドラゴンスピリット」のオマージュですw

ACドラゴンスピリット 実機プレイ ノーコンクリア

開発中も作業BGMとしてもヘビーローテションでしたが、ドラゴンつながりしかないんですよねw

次回は登場キャラクタについて書く予定です

ドラスピ大反省会(番外編1)

ドラスティースピアの開発中の問題といえば、開発中(7月末頃)に

ノートPCがひん曲がる大問題が発生しました

わかりやすいようにアルミ定規を挟んでみました。
赤色部分が歪んで出来た空間です。

ノートPC本体内のバッテリ膨張が原因でしょうが、不幸中の幸い今のところ基板等へのダメージはなくシャーシの変形だけで済んでいます。

とはいえこれ以上使い続けて基板へのダメージやバッテリ自体が発火しても困るので現在は使用停止しています(既に修理に出す算段もついています)。せめて昔のノートPCのようにバッテリが取り外せるようになっていれば…

しかしこのノートがメインPCなので使えなくなると色々不便なんですよねぇ

 

ドラスピ大反省会(3)

今回初めてレールシューティングを作ってみたんですが、単にパスに沿って移動してるだけだからそれほど難しくはないだろうーと思ったら大間違いだった!というお話しです。

実際はレールシューティングに特化した問題ではありませんが、現状でも残っている内容なので「今後の課題」として書いておこうと思います。

1.相対速度が速すぎる

プレイヤードラゴン(以降自機)は結構な速度で移動しています。これは

上空1000mを飛んでいるときにこれくらい背景が
移動しているように見えるといいなー

という見た目だけで速度を調整したからですw

ボス戦のように敵も同じ方向に移動しているなら特に問題はないんですが、ザコ戦のように敵が向かってくる(実際は静止している敵に向かって自機が突っ込むかたちです)場合、敵との相対速度が思った以上に速くなり、敵が登場してもあっという間に通り過ぎてしまいました。

敵の種類によっては通り過ぎるだけでも構わないんですが、今回のコウモリのように弾を撃つ敵はただ通り過ぎるだけではなく、多少は画面内にとどまり、弾を撃ったら画面外に消えていく(例えるならスペースハリアーの「トモス」のような感じです)ようにしたいと思うと、相対速度の問題は厄介です。

今回はザコは登場するとその場で静止していて、自機が近づくと自機と同じ方向に移動して相対速度を遅くするという方法を採りましたが、何かもうちょっとやりようがあったかなと…(まぁステージデザインや演出の問題でもあるんですが)

同様のあっという間に通過してしまう問題はアイテムでも発生するので、アイテムが自機に近づくと誘導が働き、自機との距離が短くなると減速が追加されます。
しかし、よかれと思って入れた減速の影響でアイテムの挙動が不安定になりかえって取りづらいとの意見も…

ちなみに同じ速度で10mと100mを飛んでいる時の比較動画を作ってみました。
さすがに平面感が出てしまいますが、低空は速度感が増して迫力があるので別ステージとして使いたいところではあります。


2.レール上を移動するので予測射撃が難しい

元々ボス戦(対人VS含む)のみを想定したゲームだったので、ストイックに

マニュアル操作による予測射撃こそ正義!

という方向性だったんですが、やはり敵が動きまくるとなかなか当てられないので

照準カーソルに捉えたなら照準補正(ちょっとだけ誘導)ぐらいなら…

にしたところ、レールによる移動+ザコを追加したら

ロックオンして誘導弾にしないと当たらないよ!

という感じになり、今のかたちになっています。

ただ、上に書いたとおり誘導自体の出発が照準補正的なものだったので、今の誘導弾はかなり不完全なものです。
さらに当然ここにも敵との相対速度の問題が出ます。なにせ自機の移動速度よりさらに速い弾が移動するわけですから…


3.進行方向がわからない…?

自機はレールに沿って勝手に進行方向が変わるため、プレイヤーが意図せぬところで勝手に曲がります。まぁレールシューティングなので当然なんですが…
今回はわかりにくさを抑えるため、あえて緩やかな上下左右移動しか入れないようにしてますが、それだと変化がちょっと乏しいんですよね…

しかし実際に気になるのは、事前に進行方向に敵やアイテムが配置されているので、どっちに進むかは結構わかってしまうことだったりします。なにせ見えている敵に突っ込むわけですからなんと好戦的な…

なお途中まではレールに沿ってガイドを表示していたバージョンもありました

と色々書きましたが、どの問題も総じて調整不足なだけだったりします。
サクッと作るだけなら容易でも、やはり作り込んで調整するのにはどうしても時間が必要ですね…

一応、既に問題解消の新しいアイデアや実装案も挙っているので、今後改善されていくと思います。

次回はサウンドについて書く予定です

ドラスピ大反省会(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接続できるといいんですけどね。