Mirage Solo買いました

まだまだ休みなしで身動き取れない状況なのですが、その反動で「Mirage Solo」を買ってしまいました。まだしばらくはお預け状態ですけどね。

購入の決め手は

  • 完全ワイヤレス
  • 外部センサーなし6DoF
  • Chromecast 対応
  • Unityでゲームが作れる

でしょうか。

これはPCVRで感じる「ケーブルが邪魔」「準備が手間」から一気に解放され、まず使用機会が増えると思います。デバイスの起動も速いしね!

もちろんPCVRと違ってスペック固定(Snapdragon 835)なので、ゲームを作る時はスマホVR基準で作らないとです。アオダマテイのゲームを動かすのはちょっとキビシイです(そしてどのゲームも3DoFで十分だったり…)

とりあえず初期不良とかあると怖いので、動作テストとして↓を参考にさせて頂いて「Unity-Chan “Candy Rock Star”」をMirage Soloの6DoF対応で動かすところまではやってみました。元々Androidのビルド環境が入っていたので15分程度の作業でした。

Mirage Solo の6DoF 対応コンテンツをマッハで Build する – ギャップロ
https://www.gaprot.jp/gaprot-x-chogiken/xr/mirage-solo

ただ、ポジショントラッキングの範囲が1.5m程度と制限されているので、周囲の安全を確保した上でEnable safry graphicsのチェックを外して移動無制限にすると外部センサーなし+ワイヤレスの恩恵が!ステージ上をどこでも移動出来ますよ!

とりあえずわからないことはハッシュタグ #MirageSolo で Twitter を検索すると色々出てきます。ホント助かります。

ドラスティースピアPE2反省会

まさかドラスピPE2の反省会がこんなに遅れるとは…
(元旦から昨日までほぼ休み無しになるとは思わなかった)

そんなわけで

ドラスティースピアPE2反省会(今更なのでダイジェスト版)

になります。

ざっくりですが良かったところ

  • 専用の曲とボイスが入った!(楽曲提供のkazさん及び声優のあおのいさんに感謝!)
  • スキルの実装が間に合った
  • やっぱUnityちゃんシェーダーいいね!

悪かったところ

  • 追加したものの当てづらく存在意義の問われる非誘導弾
  • 常に進行方向しか向けない貧弱なカメラワーク
  • 敵を含む登場キャラ全てがUnityちゃんシェーダーなので描画負荷が高め
  • 単調なステージ構成
  • 曲・効果音・ボイスのボリュームがバラバラ

でしょうか。まぁ急造したゲームシステムは未成熟ですし、ステージ構成はまだまだ見直す必要があります。この辺は今後に期待してください。

今回も技術的に特筆すべき所はありませんが

プロトタイプ(1vs1の対戦タイプ)

PE1(レールシューティング化)

PE2(複数ステージ+演出)

と短期間で色々追加したのもありソースコードがかなりよろしくい状態なので、スクラップ&ビルドの精神で最新のUnityで作り直すつもりです。その際、何か新しい実装方法で出てくれば発表していきたいと思います。Unity 2018 になれば「C# Job System」「ECS」等色々チャレンジ出来そうですし。

Unite 2018のタイミングでUnity 2018 のβが取れるといいんですが、Unityが新しくなる度に使っていたAsset StoreのAssetが対応してくれるか心配になったりも。まさか Shader Forge がサポート終了になるとは…

あ、毎年参加していたUniteですが、今年はスケジュールの都合がつかず不参加です。

ドラスピ大反省会(最終回)

ちょっと時間が空いてしまいましたが、これまで書いていないドラスティースピアの開発に関係することについてです。

  • 弾やヒットエフェクト

弾やヒットエフェクトはMagic Arsenal(Asset Store)を使いました。
ただパーティクル内のPoint Lightは無効にしています。

  • ポストエフェクト

最終的な絵作りのために今回もPostProcessingStack(Asset Store)を使っています。
いつも通り Antialiasing、Ambient Occlusion、Bloom だけ設定・調整していますが、このパラメータ調整はいつも悩ましい…

PostProcessingStackのパラメータ調整についてはこの動画がお薦めです

  • シーン管理

ドラスピのシーン構造は試作中だったマルチシーン構造を採用しました。
マルチシーン自体はUnity標準機能なので特筆することはありませんが、シーンをまたいだりすると何かと面倒そうだったので、SceneManager.LoadSceneでシーンを追加後、SceneManager.MoveGameObjectToSceneで全てSystemシーン内に移動しています。

まだ研究中なのでこのやり方がいいのかわかりませんが、せっかくのマルチシーンなのでうまくシーン分割して効率のいい開発体制にしたいところです。

  • その他

今回もギリギリまで作業していたため、コミケ当日の早朝にDVDを焼くという慌ただしさだったので、焼く手間から解放されるダウンロードカード式も気になっています。有名なところだとconcaでしょうか。

conca(コンカ)
https://conca.cc/

ただ手間からは解放されますが、コストはDVD焼いた方が圧倒的に安いかなー

とりあえずドラスティースピアの反省会はこれで終了になります。
本編は鋭意開発中ですが完成時期については未定なので気長にお待ちくださいませー

ドラスピ大反省会(7)

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

PanzerStrike以降の作品はuGUIのみで作っています。
(PanzerStrikeのUIについてはこっちで書いています)

そして作るのが手間なところはアセットで対応しています。

ゲージ類は定番の「Energy Bar Toolkit(Asset Store)」を使っています。
今回のようなシンプルなバータイプのゲージならImageコンポーネントだけで作れますが、ずっとお世話になっているアセットなので反射的にインポートして使ってます。

フォント類はこれまた定番の「TextMesh Pro(Asset Store)」です。
無償になったことで、フォント描画についてはUnity標準と言っていいかと思います。
ただ事前にフォントを作成しておく必要があるので、使用する文字数によってはテクスチャサイズが大きくなる点だけは注意かと。

少し前にUnityインターハイブログで紹介されていたので、使い方等はこちらを参考にするといいと思います。

TextMesh Pro(テキストメッシュプロ)でテキストUIをカッコ良くしよう
http://inter-high-blog.unity3d.jp/2017/08/18/textmeshpro/

ロックオンカーソルの動きや会話ウィンドの移動+フェードのようなUIのアニメーションは全てスクリプトで書いていますが、スクリプトの場合は修正する度にビルドが走るので正直あまりお勧めできません(調整パラメータは最低限Inspectorで変更できるようにしておかないとビルド待ち地獄に…)。
アニメーション付けはUnity標準のAnimationを使うか、もしくはSpriteStudioのような外部ツールでもいいと思います。

OPTPiX SpriteStudio – ウェブテクノロジ
http://www.webtech.co.jp/spritestudio/

ドラスティースピア内の演出にありませんが、文字単位で動かしたい場合は「Typeface Animator(Asset Store)」を使うと楽です。ただしその場合TextMesh Proは使えないのでuGUI標準のTextコンポーネントを使うことになります。この辺は使い分ければいいと思います。

そろそろ書くネタもなくなってきたので、次回はこれまでに取り上げてこなかったその他のことについて書く予定です。

ドラスピ大反省会(6)

ドラスティースピアの背景についてです。

上空の雲は「3D Animated Clouds(Asset Store)」をガンガン配置しています。
といってもフィールド全体に配置するとさすがに描画負荷が上がるので、レーンの周辺のみに配置しています。

まぁそのせいでレーンの形や進行方向がわかってしまいます…
敵の配置もそうですが、今後の課題としてレール感がでないように先を見せないようにする何かしらの工夫は必要ですね。

当初は時間の都合「Volumetric Fog & Mist(Asset Store)」を使って雲の上のみのステージにしようと思ったんですが、試しに使って見た「Horizon[ON](Asset Store)」が予想以上にいい絵になったのでそのままHorizon[ON]を使うことにしました。

今回はHorizon[ON]で


夕方


の三種類を用意したんですが、切り替えの仕様が定まらず残念ながら昼のみ使うことにしました。そのせいでボス戦が白飛びして見づらかったり…

背景についてはやはり時間に沿ってリアルタイムに変化させたいので、もう少し色々試して見たいと思っています。時間経過系で試していない手持ちのアセットだと「UniStorm(Asset Store)」「Weather Maker(Asset Store)」「Instant Good Day(Asset Store)」があったりするので、これらのアセットの使用を含めて検討したいと思っています。

次回はUIついて書く予定です。

ドラスピ大反省会(5)

ドラスティースピアの登場キャラクタについてです。

まずこのゲームの主人公「ドラ子(仮名)」

コミケ前日に「ドラスティー」と名前が決まった模様
ちょっと頭の弱そうな子かもしれない…!?

ドラ子の相棒「ドラゴン(仮名)」

名前は…まだない
サラマンダーよりずっと速いらしい

ボス戦に出ててくる黒い奴ら

名前は…当然まだない
慣例に従うなら「クロ子」「黒ドラ」と呼ばれる予感…

ザコたち

開発中は見たまんまの「くらげ」「コウモリ」「トビウオ」と呼ばれてました。おそらく今後もそう呼ばれるでしょう…

これらキャラクタは全て「ユニティちゃんトゥーンシェーダー2.0」を使っています。Unityのセルルックでは一番使われているんじゃないかなー

動きの部分ではドラゴンの尻尾やドラ子の髪の毛には「Dynamic Bone(Asset Store)」を仕込んであります。
(ボーンの可視化には「Simple Bones Animation(Asset Store)」を使用しています)

 

ドラスティースピアではマテリアルの調整やモーション確認専用のモデルビューアープロジェクトを用意しています。

フルセットのゲームプロジェクトにビューアー専用のシーンを作る方法もありますが、Asset Storeで購入したアセットのライセンスの問題や、ビューアーに関係ないファイルを省きたいというのもあり、今は別プロジェクトにしています。

次回は背景について書く予定です。

ドラスピ大反省会(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

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

ドラスピ大反省会(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のバッテリー不足音

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

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