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と同じで、現物を見ないと伝わらないので頑張るしかない

LookingGlassが認識できなかったノートPC一覧

※ 2018/12/28の状況です。何か変化があれば更新する予定です

↓こっちにまとめました
https://qiita.com/toqkz/items/9013c16251fee407be77

共通
Windows10 Pro version 1803

PCGPU出力変換
アダプタ
LKG
接続
3k
接続
デスクトップPC
GTX 1060HDMI
DVI
Surface Book2GTX 1060USB-CHFM-00006×
Surface Pro4Intel Iris
Graphics
540
DisplayPort ノーブランド× ×
MSI GS60
(2QE-234JP)
GTX 970MHDMI×

LKG…LookingGlass
3k…2560×1440の液晶モニタ

デスクトップPCは特に問題なし。

USB-CからHDMIに変換する「HFM-00006」はHDMI 2.0 および 4K 対応のアクティブ型のアダプターだけどLookingGlassは認識せず。

無名のDisplayPort→HDMIの変換アダプタはかなり古いモノなので1920×1080までしか出力できない模様。まぁ変換出来てもGPU性能的に動作は期待出来ません…

GS60のHDMIで繋がらないのは完全に謎です。Optimus関係?

なんかWordPressの投稿画面が使いづらくなったなぁ…
技術記事はいい加減Qiitaに書くようにするか

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

今回はDLカードについてです。

キャッスルバーニアの頒布はDLカードで行いました。
カードはこんな感じです↓

裏面にはシリアルナンバー等を印刷したラベルが貼ってあります。
ラベルはシリアルナンバーを流し込める印刷ソフトを使うと楽です。
(あ、シリアルナンバーとシリアルコードが混在してますが同じモノです)

今回はカード自体は自作してシリアルナンバーの発行のみconca様の「コードオンリープラン」を利用するかたちです。

conca
https://conca.cc/

DLカードを採用した理由は

  • 前日のDVD焼き作業から解放される!
  • ギリギリまで作業できる!
  • 会場への輸送が楽!

です。

特に今回は作業時間の確保が難しかったので、前日(実際はコミケ当日にやってますが)のDVD焼き作業から解放されるのは非常に助かりました。マスターアップ作業はzipにしてサーバーにアップするだけなのでギリギリまで作業出来ます。

あくまで個人的なデメリットは

  • カードサイズが小さい
  • 今回のような体験版を配布するには1枚あたりの単価が割高に感じる
  • (ギリギリまで作業できてしまうw)

ですが、これは頒布内容や数量次第で変わると思います。

今回はカード自体を自作するにあたり、カードも大きくL版にしてポストカード的な意味合いを持たせるようにしました。

ちなみにカード1枚あたりの材料費はだいたいこれぐらいです。

シリアル ¥32 ¥1,598/50個
カード(L版) ¥16
ラベル ¥1.6
¥2.5
印刷 ¥10
合計 ¥62.1

今回使ったL版の用紙はちょっと贅沢に「ピクトリコプロ・セミグロスペーパー Lサイズ」なのでやや価格が高めですが、普通の用紙にすれば¥5/枚ぐらいなので1枚¥50ぐらいに出来ます。

参考までにDVD-R+プラケースだと1枚あたり¥64ぐらいだったので、実は費用的にはあまり変わりませんでした。

最後に、がんばれーるのDLカードも作りDVD-Rメディアと同時頒布を行ったところ、DVD-Rを選ぶ人の方が多かったです。頒布にどちらを使うかはまだまだ難しいところかもしれません。

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

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

「ダストシューターズ」は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回に続きます。