がんばれーるNEXT反省会おまけ

がんばれーるNEXTに新しい技術的な何かはほとんどありませんが、描画に関しては結構変わっています。

1stはキャラや戦車はToony Colors Pro 2をマルチマテリアルで、背景はUNOShaderやStandard Shaderを使っていましたが、NEXTはほぼ全てをArktoon-Shadersに変えてみました。

またマルチマテリアルはパフォーマンス的によくない+色替えにマルチテクスチャが必要なため、Arktoon-Shadersを改造してマルチテクスチャ対応させています(と言っても数行追加するだけですが)

例えば1stのMesh Rendererが

こうなります。

あと地味なところで画面のアスペクト維持をLayout Groupでやっています。そのためゲーム画面部分はRender Textureに描画してUIで表示しています。

がんばれーるNEXT反省会

いつもの反省会ですが、今回は言い訳ですね。

反省① 大事なキャラエディットがない

実はInspectorからはエディット出来るんです。
ただUI作る時間がなくて…

反省② 戦車のエディットがない

実はInspectorからは(ry
でも選択出来る車両/砲塔の種類は公開しているものと同じです。

反省③ 敵の動きがおかしい

敵AIは1stから一部流用したため、プレイヤーと違って車両と砲塔の制御が独立しています(例えば砲塔を旋回させながら移動できる)。端的に言ってズルいですが、その代わりシールドが使えなかったり、エネルギーの回復量が低くなっています。

反省④ ゲームシステムが雑

NEXTを作るにあたり、まず

  • カメラを見下ろし→客観に変える
  • 移動の操作方法をシンプルにする

の2点を検証しよう→あれ?もう夏コミ!?という感じでした…
また、残弾はエネルギーから独立した方がいいかなと思ってUIは作ったんですがシステム側が間に合いませんでした。

反省⑤ ブリーフィングが手抜き

ブリーフィングはガレージ的な何かにする予定だったんですが、突貫工事のため背景はC95のLookingGlass展示に使ったときのデータ、メニューはuGUIのImageとTextのみで作られています。

反省⑥ ゲームパッド使うとメニュー操作おかしくない?

Rewireの使い方がよくなった模様…

以上、時間がないのはいつものことですが今回は本当に足りなかった…
それでも一区切り出来たので、一度頭を冷やしてから鋭意開発は継続です。

 

C95お疲れ様でした

C95お疲れ様でした。

前日に買ったサンワサプライのUSB Type C-HDMI/VGA/DVI/DisplayPort変換アダプタ「AD-ALCHVDVDP」のおかげでSurface Book2とLookingGlassが接続でき、無事会場でデモを出すことが出来ました。
(今回は新作が作れなかったのでデモが出せてホントによかった)

なお、私も含めてあの場にいた全員LookingGlassの関係者ではありません
正確な情報は公式サイトで確認してください

LookingGlassとの接続トラブルや、Unityでの実装方法のような技術的なところも含めていずれ書こうと思いますが、とりあえず備忘録として。

  • 展示するにあたり、LookingGlass本体が倒れないように前方の隙間は発泡スチロール、後方は金属棒で固定した
    • 本体のボタンが押せなくなる
  • LookingGlassの上面から覗く人が多かった
  • デモれた時間が短かった
    • Surface Book2は2時間でバッテリー切れ
      • 時間と共に徐々にフレームレートが低下
      • 残り10%で勝手に省エネモードに移行(フレームレート超低下)
    • 急遽借りたGS40 6QEは40分でバッテリー切れ
      • 満充電ではなかったかも
      • 本体HDMIだとLookingGlass認識せず(サンワサプライのアダプタで無事認識)
    • 1日デモるなら外部バッテリーが必要
  • LookingGlassが地味に重い
    • VRと同じで、現物を見ないと伝わらないので頑張るしかない

各ゲームの開発状況について

たまにはキャッスルバーニア以外の話題でもと思い、備忘録を兼ねて開発中の各ゲームの開発状況の報告です。

「ダストシューターズ」はUnity2017.1系に移行していますが、さすがに 5.x 系からの移行なので色々問題が出ています(例えばAsset StoreのAssetの一部はUnityのバージョンアップに追随していないので、使えなくなったAssetの機能は代替or自作で対応等)

同時にルン子さんはUnity標準にToonからUTSに切り替え中です。
技術的なところでは大量に出現させるゴミの処理はECS対応してみたいですね。
あと操作系をゲームパッドメイン(キーボード操作も可)にしてもいいと思っています。今はゲームパッドで遊ぶプレイヤーも多いと思いますし。

「がんばれーる」は5.x系から2018.1に移行中です。
未使用のタンク部品(砲塔・車体)が数多く残っているので、それらを出すためゲームシステムも含めて改修中です。ゲームシステムは従来通りのシューティングでもいいんですが、この際RTSっぽいものに変えてみても面白いかなと思っています。

がんばれーるもUTS移行の予定ですが、キャラカスタマイズの都合(特に色替え)もあるのでまだ検討段階です。

「ドラスティースピア」は2017.2で作り始めたので、今のところ最新のUnityに追随するのはそれほど難しくありません。が、レールシューティングなのでステージデザインが非常にコスト高のため続きの作業が滞っています。

技術的な部分ではレール移動処理を自前パス処理からUnity標準機能のTimeline+Cinemachineに置き換えたいですね。
例えば↓の後半のシューティングゲームのTimelineでの実装方法とか面白そうですし

「キャッスルバーニア」については反省会で書いていますので割愛ということで。

あくまで全体の方針としては

  • 出来るだけ最新のUnityで開発
  • 主役級キャラはUTSに移行
  • イベントやカメラワークはTimeline+Cinemachineに統一
  • ShaderForgeからShaderGraphに移行
  • Aseet Store依存度をちょっと下げる

という感じです。

ただ、それぞれの完成時期については相変わらず未定です…

なにせ↓も完成していませんしorz

キャッスルバーニア反省会(4)

登場キャラクタ紹介です。

キャラクタのシェーダーは基本Unityちゃんシェーダーを使ってます。
(一部Standard Shaderを併用しているメッシュもあります)

※画像はUnityのScene Viewのキャプチャのため、ゲーム画面とは見え方が異なります

【ササリーヌ=NaNa=RB=アストロ】

このゲームの主人公。通称ササ姫、ササ子。
ササとかナナとかアストロとか気になるワードが…

実は夏コミのPOPに説明文が書いてあったりします。

ゲーム中では操作キャラ以外にゲームの説明も兼ねて自らVTuber的なことをやっています。残念ながらしゃべりませんが。

参考までに実装はVTuber用のカメラでRenderTextureに描いてからuGUIで描画です。
なお、ゲーム中にテンキーではない方の[1]~[8]を押すとVTuberササ姫のモーションが切り替わります。デバッグ機能が有効なままリリースしてもうた…

注目すべきは手に持っているモノです。一見ゲームパッドに見えますが、じつは…?

今回揺れモノはUnity-chan SpringBone を採用しました。
(ドラスティースピアの主人公ドラ子はDynamic Boneです)

【ホーリーバーニア】

ササ姫の移動手段であり攻撃手段でもあるスペシャルな兵装。
動力源等全てまだ考えてない不明で、今後明らかになる予定です。

【ゴースト】

今回のやられ役です。よく燃えます。
もっと大量に出してガンガン燃やしたかった…

【サッカーボール&ゴール】

ゲーム開始直後のフリータイム時に置いてあります。ボールはササ姫の体当たりで動かせます。ちゃんとゴール判定を入れてミニゲーム的な感じにしたかったんですが、時間切れで実装ならず。

【???】

悪魔城ドラキュラに出ていそうなアレですが、時間が足りず登場ならず。

ボスの巨大コウモリはドラスティースピアで登場したモデルなので省略。
小コウモリに分裂して移動する予定でしたが、時間が足りず(ry

 

以上、登場キャラクタの紹介でした。
今回も魅力的なキャラに助けられ、まだ未完成なゲームながらも何かしらの可能性を感じられるような内容になったと思っています。

なにせ、これが

これになるんですから!

 

 

キャッスルバーニア反省会(3)

キャッスルバーニアの一番特徴である「バーニアアクション」を支える技術についてです。

バーニアの出力はスティックの倒す量で小・中・大の3段階に切り替わります。

本当はスティックの倒した量でパーティクル自体のエミッション量を制御したかったんですが、ちょっと難しそうだったので3段階用意しました。

そしてパーティクル自体に当たり判定を付けることでバーニアの出力=パーティクル数=攻撃力としています。例えば出力が大のときはこんなコリジョンが発生しています。

ちなみに出力が大のときは中と小、出力が中のときは小のパーティクルが同時に出ています。

パーティクルのコリジョンを有効にするにはParticleSystemのCollisionを有効にし、さらにSend Collision Messageを有効にする必要があります。

これでOnParticleCollisionが入ってくるのでスクリプトで処理するだけです。
キャッスルバーニアではヒット数のみカウントして、実際のヒット処理はUpadteで行っています。イメージとしてはこんな感じです。

void OnParticleCollision(GameObject other)
{
    hitCount++;
}

void Update()
{
    if( hitCount != prevFrameHitCount)
    {
        prevFrameHitCount = hitCount;
        // ヒット処理
    }
}

全てのColliderに対して判定する必要がなければCollisionWithで当たり判定対象のレイヤーを設定できます。

とりあえずParticleSystemを正しく設定すればこのような防火シャッターみたいなのはすぐに作れます。シャッターになる方にもColliderを入れることをお忘れなく!

なおゲーム中ササ姫に炎が当たらないのは炎除けのSphere Colliderが入っているから炎は友達だからです、きっと。

 

OnParticleCollisionは結構前からあったと思いますが使ったのは今回が初めてです。もしOnParticleCollisionが期待動作しなかったらキャッスルバーニアは誕生しなかったかもしれません。

ただ、パーティクルの量を出すとそれなりに処理負荷も高くなりそうですし、パーティクルシステムの仕様に依存するので(動的にエミッション量を変えられないとか?)、今ならECSで独自実装するのも面白いかもしれません。

ちなみに最初は扇形で判定してました。バーニア出力に合わせて半径を変えれば出力に対して当たり判定を取ることもできますが、OnParticleCollisionを使えば見た目と当たり判定も一致しますし遮蔽処理も簡単です。

と、色々書きましたが、キャッスルバーニアはUnityの標準機能に支えられていますw

あ、バーニアでの移動については単にAddForceしているだけなので特に書くことはないかな…

キャッスルバーニア反省会(2)

今回は本当に反省というか解決しないといけないネタです。

同人で作るゲームではできるだけ新しいことにチャレンジするようにしていますが、闇雲にチャレンジすれば当然失敗します。
例えば今回はやたらとEmissionするオブジェクトが多いのでDeferred Renderingに挑戦したんですが、Deferredにするとキャラの描画に問題が。なお普段Deferred Rendering使っていないためノウハウゼロです。

Deferred時は背景の有無で描画結果が変わってしまいます。
(そもそもこれがUnityちゃんシェーダーのマテリアル設定の問題なのかDeferred Renderingの問題なのかもわかっていなかったり…)

もちろんDeferredで描画した方がバッチ数はかなり削減されます。G-Buffer生成や合成負荷は発生しますが、Deferredの方Forwardより+18FPSぐらいになります。
↓はタイトル画面(ほぼゲーム中画面と等価です)のバッチ数になります。

まぁこういう症状はFrame Debuggerで追えばわかるような気がしますが、時間がなければ問題が出ない方を選択するしかないので公開しているゲームはForward Renderingです。そのため描画はそれなりに重いです。

またCPU処理も負荷が高いことをやっているので重いです。CPU処理についてはまた別の機会に書きます。

なおこの描画問題は今も未解決です。解決次第改めて投稿する予定です。

キャッスルバーニア反省会(1)

キャッスルバーニア反省会~
第1回はキャッスルバーニアが完成するまでの流れです。

当初の予定はダストシューターズかドラスティースピアの続きを作るつもりでしたが、今年は元旦から修羅場が続いてしまい、全く時間が捻出できないままコミケまであと1ヶ月という状況になってしまいました。

そのため、急遽2~3週間で作れる何かを考えることに。まぁこれでまたPILOT Editionが増えることになるんですがw

07/09

コミケまであと一ヶ月しかないので、とりあえずなんとか半日時間を捻出してプロトタイプを試作。コンセプトは「ツインスティック操作」「ドリルでど突く」
ちなみに赤いタンクはがんばれーる 2nd のプロジェクトより友情出演!

07/14

ツインスティック操作でど突くのが結構難しいため、一度オートショットによるバルカン+ミサイル攻撃を入れてみる(ミサイルは画面に出てませんね…)
なおキャラはUnityちゃんシェーダー移行中のルン子さんです。

同07/14

やはりショットだと面白みがなかったので、この際ジェット噴射自体で攻撃してみようと試作。これがキャッスルバーニアのベースになってます。

07/24

正式な主人公が入りました。コードネームはササ子(もしくはササ姫)
背景はスウィンぐるんだったりします。
タイトルが「キャッスルバーニア」になったのもこの頃だったかな。

07/25~08/07までは別件の出張+修羅場突入でほぼUnity作業は何も出来ず。

この間に背景モデルが届いたり曲発注(多忙な中、引き受けてくれた kaz さんには毎度感謝!)を行いました。なお作曲にあたりゲームのイメージは「悪魔城ドラキュラ」+「アストロロボササ」と伝えましたw

また、デザイナー自らUnityのTimelineでカットシーンを作るという超ありがたいことがあったんですが諸事情によりゲーム本編に反映できませんでした。PVにあってゲーム本編にない演出はほぼこれです。どうして反映出来なかったのかは別の反省会で。

08/07修羅場終了後、

08/08:フェーズ構成、VTuber機能・効果音追加
08/09:曲到着、PV作成
08/10:デバッグ、マスターアップ(8/10の4:26頃)

のような感じでとりあえずの完成を迎えました。

まだかなり荒削りの状態ですが、気持ちのいいツインスティック操作+魅力的なキャラ&世界観で開発は継続中です。

とりあえず第1回反省会はここまで。第2回に続きます。

C94は新作「キャッスルバーニア」のPILOT Editionになります

本日のC94で新作「キャッスルバーニア」のPILOT EditionをEasyGameStationさんのところで委託販売して頂きます(場所は1日目 西ら-27a)。


ゲームはこんな感じですが、実際のゲームはここまで作れていません…特にUnityのTimelineで作った演出はゲームに反映できませんでした。この辺については恒例の反省会で詳細(いいわけ)を書く予定でいます。

そして今回はDVDを焼かずDLカードにしました。
これでギリギリまで作業できます!