原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【進捗報告】秋冬の予定と準備状況

ダイエット

健康診断に向けてダイエットを半年間頑張ったはずなのに0.5kgしか減ってなかった基礎代謝が低めの皆さんこんにちは。こういう時は知らず知らずのうちに何か食べているか日ごろの運動不足かどちらかが原因だと思いますが、私の場合はきっと両方が原因です。近頃は階段上るだけで疲れるし。

 

ゲームの秋

猛暑も少し落ち着いて朝夕は秋の気配を感じる季節になってきましたが、秋と言えば"ゲームの秋"という事で、先週末には幕張メッセにて東京ゲームショウ2024が開催され27万人以上の来場者数を記録、SNSなどを見てもかなりの盛り上がりを見せていました。

そして今年の秋冬は東京ゲームショウを皮切りにゲーム展示会のイベントが目白押しとなっています。

■10月

  • 19,20日:ぜんため(全国エンタメまつり) (岐阜)
  • 26日:神戸ゲームラビリンス (神戸)
  • 27日:東京ゲームダンジョン6 (東京)

■11月

  • 3日:デジゲー博 2024 (東京)
  • 17日:SANUKI X GAME 2024 (香川)
  • 23日:CEDEC+KYUSHU 2024 (福岡)

■12月

  • 7日:INDIE LIVE EXPO 2024 (オンライン)

心情的には全てのイベントに参加したい所ですが、地方民でお金にも余裕がない身にとっては中々厳しいので、上記イベントの中でも展示スペースが広めで出展料が比較的安価な「東京ゲームダンジョン6」と、地元で開催される「CEDEC+KYUSHU 2024」にのみ参加する事にしました。「INDIE LIVE EXPO」はオンラインイベントなので応募する予定ですが、恐らく抽選になるので参加できるかどうかは不明です。

 

東京ゲームダンジョン6

このブログは何度もお知らせしていますが東京ゲームダンジョン6にリズムゲーム「Under A Groove」を出展します。

tokyogamedungeon.com

浜松町の東京都立産業センターで開催されるこのイベント、インディゲーム展示会イベントの中でも特に会場が広く、かつ各ブースのスペースが大きいのが特徴で、今回は170以上の団体が出展予定とかなり大規模なイベントです。私自身は去年に続いて二度目の参加となります。
出展ブースの場所は既に決まっており、私は[C-20]と入口真横の比較的目につきやすい場所を頂く事が出来ました。ありがとうございます。


当日は下のポスターを掲げる予定なので、会場で見掛けたらよろしくお願いいたします。

 

ちなみに当日配布予定のクリアファイル(紙製)の表紙

 

CEDEC+KYUSHU 2024

続いて11/23に地元の福岡産業大学キャンパス内で開催されるCEDEC+KYUSHU 2024に出展することが決まりました。

cedec-kyushu.jp

CEDECはゲーム開発者向け技術交流会でその九州版と言えるイベント、基本的にゲーム技術関連の講演が主なイベントですが会場の一部スペースにインディゲームの展示コーナーがあり、そちらに出展することになります。

3月に行われた福岡インディーゲームEXPOとより少し小規模な15~20ぐらいの出展数となっていますが、ゲーム産業に携わる方々が多く来客されるイベントなので今から少し緊張気味です。こちらも「Under A Groove」を出展する予定。

上の画像は運営に提出した「Under A Groove」のメインビジュアル画像です。どこに掲載されるものなのか分からないので見かける事はないと思いますが、見かけても左上のセンスのないコピーを笑ったりしないでください。

 

準備状況

展示会に持っていくミニPCが壊れてしまったので、Mac版の動作施検証機という意味も兼ね思い切ってMac Book Airを購入しました。

こちらに試遊版を入れて展示会に持っていきます。東京ゲームダンジョンの方はモニターを借りられなかったので自宅にある15incのサブモニターでの展示となりますが、まぁゲーム的に大画面の迫力ある映像で遊ぶようなゲームではない為、これぐらいで丁度良いかなぁ、という気持ち。

試遊版のステージは既に作成済みなんですが、間に合えばもう1ステージ追加して持ち込みたいと思っています。

 

ちなみにタイトル画面はこんな感じで動きます

 

10月,11月とイベントが続くので結構大変なんですが乗り切って、良い出会いが見つかるように頑張りたいと思います。

 

【Unity】Unityエディタ:開発環境を快適にする初期設定

シルバーウィーク

3連休が二週続く秋のシルバーウィークながら季節が真夏モードから変わらないのでどこにも出かける気が起きない引き籠りな皆さんこんにちは。一向に暑さが収まる気配がなく逆に蒸し暑さが増しているような気さえします。エアコンの効いた空間から出る気がしないので来週末の三連休も部屋で過ごすことになりそうです。

 

進捗報告

東京ゲームダンジョン6への出展に向けて会場で配布するクリアファイルのデザインを行いました。
これまで展示会では毎回紙製のクリアファイルを作って配布しているのですが、今回もその例に漏れず紙製クリアファイルを作るのでその表紙のデザインです。

クリアファイルって意外に手に取ってもらいやすいんですよね。特に紙製だと珍しいのか喜んで貰ってもらえるし、制作費としてもプラスティック製よりも安く済むしで良い事だらけ(その分デザインに制約があるけど)
今回も100部刷るので一日で全部配布し終えるように頑張りたいと思います。

 

Unityエディタの初期設定

気温は真夏ですが季節的には秋という事で「勉学の秋」「読書の秋」らしく新しい知識・分野にチャレンジする人が多くなる季節だからか、ここ最近Xやnoteなどを見ていると新たにゲーム制作にチャレンジし始めた方が多い気がします。

なので、そういった方に向けてUnity導入後にやっておいたほうが良い初期設定について纏めてみたいと思います。

 

■シーン再中時にエディタの色を変える

Unityでは再生モード中でもオブジェクトの位置や向きといったプロパティを変えて確認する事ができますが、それらの設定は再生モードを終了すると全て消えて(ゲーム再生前の)元の状態に戻ってしまいます。
その為、再生ボタンを押したことを忘れてオブジェクトの調整をしてしまうと再生モードを終えた途端それまでの作業が無駄になって仕舞うので、それを防ぐ為にも再生モード中はエディタの色を変えて「再生モード中」だと目に見えて分かりやすくした方が良いです。

 

[Edit]→[Preferences]で開いたウインドウの[Colors]メニューから[Playmode tint]の色を変更します。

 

■Auto Refresh を無効にする

デフォルト設定のUnityエディタではUnityエディタがフォーカスを取得したタイミングでエディタのリフレッシュ→スクリプトのコンパイルが走るようになっています。
この場合、例えばVisualStuido等でスクリプトを編集中にうっかりUnityエディタへフォーカスを映してしまうと、即コンパイルが走り終わるまでスクリプトの編集ができなくなります。
スクリプト編集中にいちいちリフレッシュさせない為にもAuto Refresh を無効にし、必要な時にCtl+R(Macの場合はCommand+R)でリフレッシュするようにしましょう

 

[Edit]→[Preferences]で開いたウインドウの[Asset Pipeline]メニューから[Auto Refresh]の設定を[Disabled]に変更します。

 

■エディター再生時にシーンの再ロードをOFFにする

ゲーム実行までの待ち時間を短縮します。デフォルトのUnityエディタでは再生ボタンを押して再生モードを開始するとシーンの再ロード処理が行われた後にゲームが実行されるため、多少待ち時間が発生ます。
同じ欄にある「Reload Domain」をOFFにすると更に早く起動しますが、その場合、Static変数や静的イベントハンドラが再生モードの開始/停止でクリアされない為、注意が必要です。

 

[Edit]→[Project Settings]で開いたウインドウの[Editor]メニューから[Enter Play Mode Options]をONにして[Reload Domain]をONに変更します。



■ImageのRayCastを初期設定でオフ

UIとしてImageをシーンに追加するとRayCastの設定がONとなっています。これはImageがマウスクリック等を検知するために必要な設定ですが、マウスクリックを検知する必要が無いUIにはRayCastの設定は不要で、逆にこの設定がONになっている為にボタンが反応しない等の不具合の原因にもなるので、マウスクリック検知が必要なUIにのみ設定を行うようにしましょう。

 

最初にシーン内にImageを生成します。それから

①InspectorでRayCastの設定をOFF
②右上のSelectPresetボタンを押下
③「Create New Preset」ボタンを押してPresetを作成

 

[Edit]→[Project Settings]で開いたウインドウの[Preset Manager]メニューから

④[Add Default Preset]を押下して[Component]→[UI]→[Image]を選択
⑤Presetで手順③で作成したPresetを指定

 

■Canvas Scaler サイズの初期設定

HUD、UIは主にuGUIのCanvas上に設置しますが、デフォルトのCanvasではUI要素を画面サイズによらずピクセル単位で同サイズに保つための設定「Constant Pixel Size」が割り当てられています。
この場合、画面の解像度が変わるとそれに応じてUI要素の(見た目の)サイズが変わってしまう為、画面の解像度に応じて自動でサイズを変更する「Scale With ScreenSize」に設定することをお勧めします。
ついでにPC向けのゲームならデフォルトの画面解像度(Reference Resolution)には1920 : 1080を設定しておけば後々の調整が楽になります。

 

手順は上の「ImageのRayCastを初期設定でオフ」の設定と同じで

①Canvas Scalerを作成して上記の設定を行う
②右上のSelectPresetボタンを押下してPresetを作成する

 

③Preset ManagerからCanvasScalerのPresetを設定する

 

使っていくうちに各個人にあった別の設定があるかもしれませんが、取り合えず初心者が知ってると少し幸せになれるエディター設定でした。

【Unity】モニターのアスペクト比に合わせてカメラサイズ(OrthographicSize)を調整する

残暑バテ

気温の高さが一向に収まらない所為か残暑バテで口内炎が4つも出来た不健康な皆さんこんにちは。加えて疲れが取れずに寝不足気味で昼食を食べると必ず眠くなるし、夕食後は「食べ終わったらゲーム開発しよう」と誓っても何故か寝そべってYoutubeを眺めたりするので残暑バテの影響は怖いです。ハイ、そこ「ただ怠惰なだけ」とか言わない。

 

ポスター制作

10月27日に開催される「東京ゲームダンジョン6」への出展準備として、今週は会場で掲げるポスターのデザイン作業を行っていました。

私自身は絵が全く描けないので背景画はniji journey先生にお願いして躍動感のあるビビットな絵を描いて頂きました。ありがとうございます。私の作業はこれにタイトルロゴとプロジェクト名を追加しただけ。本当に文明の進化ってありがたい。ちなみに中央に描かれているキャラクターはゲーム内では全く登場しません。

 

モニターサイズ

東京ゲームダンジョン6に出展予定の作品「Under A Groove」はPC向けの作品なので基本的に画面のアスペクト比を16:9として制作を進めているのですが、調べてみるとPCモニターのアスペクト比には16:9以外にも16:10もしくは3:2となっているものがあります。
特にMacBookでは16:10が採用されていたりするので、スマホ向け程ではないにせよPC向けゲームでもアスペクト比が異なるケースでの確認は必要となってきます。

UnityではuGUIを使用した画像、アイコンなどのUIに関しては画面のどこを基準に表示位置を決めるか設定できる為、アスペクト比が変わっても問題なく対処できますが、シーン内に配置したオブジェクトをカメラで捉えた映像についてはカメラのアスペクト比が表示するモニターに応じて変化するため、オブジェクトが見切れたり、逆に写り込んだりと想定外の映像となることがあります。

 

上の画像は16:9のアスペクト比で調整したゲームのタイトルシーンでタイトル文字も3D空間内に配置したTextMeshとなっています。

これを16:10に変えると

画面の横が縮んで縦の視野が広がるため、ズームアップしたような図になります。さらに3:2に変えると

タイトルの文字が見切れてしまいます。

 

カメラ(Orthographic)のサイズ変更

UnityのCameraはSize(orthographicSize)で表示範囲を設定する事ができます。
画面のアスペクト比に応じてこのSize(orthographicSize)を変える事ができれば、上のような見切れや写り込みといった問題を防ぐことが出来ます。

カメラのアスペクト比はCamera.aspectで取得することが出来るので、作成時のアスペクト比(16:9)でのカメラサイズを基準として、実行時に実際のカメラのアスペクト比(Camera.aspect)との割合を算出、その割合を基準サイズにかけ合わせた値を新しいカメラサイズとして設定します。

[SerializeField] private float BaseWidth = 1920;
[SerializeField] private float BaseHeight = 1080;
[SerializeField] private float BaseSize = 7;

public void Adjust_OrthographicSize()
{
    float baseAspect = BaseWidth / BaseHeight;
    float currentAspect = TargetCamera.aspect;

    float aspectRate = baseAspect / currentAspect;
    if (Mathf.Approximately(1.0f, aspectRate))
    {
        return;
    }

    Camera.main.orthographicSize = aspectRate * BaseSize;
}

 

上の処理を組み込んでモニターのアスペクト比を16:10に変えて実行した場合

 

3:2に変えた場合

どちらもモニターのアスペクト比が変わっても、オブジェクトの見え方は変わらず表示できること分かりました。

 

オブジェクトの位置調整

オブジェクトの見え方を一定とする事が出来ましたが、画面端に位置していたオブジェクトはアスペクト比が変わっても同じように画面端に配置しておきたいものです。
こういった場合、uGUIでの設定方法と同様に画面端からの相対位置が一定になるようにすれば対処できそうです。
画面端のワールド座標はCamera.ViewportToWorldPoint()を使うと取得できます。引数が(0,0)で左下、(1,1)で右上となります。

 

Camera.main.ViewportToWorldPoint(Vector2.zero);
Camera.main.ViewportToWorldPoint(Vector2.one);

上のスクリプトを実行して画面端の位置を取得すると、16:9での画面端座標は

となりますが、16:10に変更したときの画面端の座標は

となります。

カメラがOrthographicの場合、画面端のX,Y座標は常に一定なのでアスペクト比が変わった時の画面端位置の差分をオブジェクトの位置へ反映します。
試しに16:9のアスペクト比で位置を調整したタイトル文字に対して

アスペクト比を16:10の場合に16:9→16:10に変わった時の差分を座標に反映します

uGUIのようにアスペクト比が変わっても一定の位置に調整出来ていると思います。

【Unity】意外と知らなかったアプリケーションログの出力場所

短絡的

中韓製のゲームが好評を博すと直ぐに「日本のゲームは終わった」とか短絡的につぶやく人を見ると笑えてくる冷笑系の皆さんこんにちは。別に国別対抗で優劣を争っているわけでないんですがね。ああいう事を言う人たちって必ず競争相手が極東アジア限定になっているのも不思議です。逆に差別意識でもあるのでしょうのか。

 

立ち上がりが遅いゲーム

実況系で盛んに取り上げられていた『Behind the Frame』の制作スタジオの新作という事で購入してみました。

前作が「手書きアートのアドベンチャーゲーム」として話題になっていたSilver Lining Studioの新作ゲームです。

前作同様に手書きアート風のグラフィックは美しく、それを360度ぐるりと見渡せるパノラマ技術で没入感の高いパズルゲームとなっていますが、ゲーム性も前作同様変わらず脱出ゲームのフォーマットに乗っ取ったオーソドックスな作りとなっています。

各章の合間にゲームのストーリーを語るナレーションが入り、各章で提示されるパズルもストーリーに沿った物語性の高いパズルが用意されていますが、ヒントは一切ないのでこの手の脱出ゲームに慣れた方以外は少し苦戦するのではないでしょうか。
また、肝心の物語部分も導入が非常に穏やかでストーリーを進める為の大きな目標が提示されない為、中盤まではひたすらパズルを解くだけに留まり、ゲームとしてもストーリーとしても立ち上がりの遅い、盛り上がりを欠いた印象でした。
(因みにゲームの立ち上がり(起動)自体もすごく遅い)

とは言え、前述のように手書きアニメ風のグラフィックは美しいですし、パズルも趣向を凝らせたものが多いですし、脱出ゲーム好きの方なら十分楽しめるゲームではないでしょうか。

 

展示会出展準備

前々回の記事でもお伝えした通り10/27に開催される『東京ゲームダンジョン6』に出展する為、現在アレコレと準備を進めているのですが、先週一週間が台風の影響でほぼリモートワークで時間に余裕があった為、試遊版のステージを一つ完成することが出来ました。
おかげさまで八月末までに東京ゲームダンジョン方へ提出しなくてはいけなかった出展情報の方もギリギリに提出する事ができ、CEDEC+KYUSHUの方にも出展応募に間に合う事が出来ました。

youtu.be

どちらもゲームのプレイ動画を提示する必要があったんですよね。ステージが一つ完成したことで最初から最後まで通した形で動画を作ることが出来ました。

 

ログを確認したい

上の動画はUnityエディタで実行した際のキャプチャではなく、アプリケーションへビルドして実行したゲームのキャプチャ動画となっています。
これはUnityでゲームをビルドすると稀にある事ですが、Unityエディタで確認した動作とビルド版での動作で異なる場面がちょくちょく見られたりします。

今回は以下の動画の箇所、エディタ上では音楽に合わせて同心円のアニメーションが動作するのですが

 

これがビルド版で確認すると全く動作せず青い背景のまま、という不具合がありました。

同心円のアニメーションはKoreographerというアセットを使い音楽と同期させたイベント処理で実施しているのですが、ゲームの動作を見ただけでは「アニメーション処理に問題があるのか」「音楽との同期イベントが発生していないのか」といった考えうる不具合原因の切り分けは非常に困難で、こういった場合にはアプリケーションの動作ログが確認できれば便利です。

実はUnityでは動作ログを出力しており、これにはスクリプト内でDebug.Logで出力しているメッセージも含んでいます
動作ログは「Player.log」というファイル名で出力され、以下の場所に格納されています。

 

■Windows

%USERPROFILE%\AppData\LocalLow\(CompanyName)\(ProductName)\Player.log

■macOS

~\Library\Logs\(CompanyName)\(ProductName)\Player.log

 

ログを確認することでイベント処理の発生有無が確認でき、処理内のどこに問題があるのか見つけ出す事に役立てる事が出来ます。
因みに、前述の不具合の原因は同心円のオブジェクトと背景のオブジェクトのシェーダの描画順設定(Sorting Order)が同じ値だった為、同心円が背景に隠れる形となっていました。
シェーダの描画順や深度設定によってエディタとアプリケーションで動作の差異が出るのはあるあるなので気を付けましょう。

 

【ゲーム制作】ランダムな配置を考える

失念

気が付くとUnity1Weekが既に終了していたウッカリさんな皆さんこんにちは。ここ最近は東京ゲームダンジョン6に向けた準備でバタバタしていたので夏休み期間中に開催されていたUnity1Weekを全く忘れていて、制作での参加はおろか試遊&評価すらも顔出しせずに終わっていました。今回からランキングでの発表を廃止されたそうで結果がどうなったのかは分かりませんが、参加された方お疲れ様でした。

 

幅は狭いが意気込みを感じるゲーム

中華版ソウルライクとしてネットで話題になっていたゲームを購入しました

 

西遊記の世界をベースとしたアクションRPGでチェックポイントでの敵の復活という仕様があるため「ソウルライクゲーム」と認知されていますが、実際に遊んだ感覚では偶に死にゲー化するGod of Warといった感じでしょうか、古代中国の世界を満喫できる美麗なグラフィックスにスピーディに展開する戦闘アクションが楽しめるゲームで、各ステージは第一ステージを除けば探索経路が細かく分岐して、かつその先には必ずボス敵が配置されている為、探索を楽しむというよりは次々に現われてくるボスを打倒して行くボスラッシュ的なゲームデザインとなっています。


とにかく少し探索すると直ぐにボスに突き当たるため、その数の多さはには驚嘆しますし、各ボスはそれぞれ個性的で攻略法も異なるため非常に遊びごたえのある内容に仕上がっていると思います。
ただ、道中で使用できる武器は棍棒のみで、防御方法はガード無し、パリィ無しの回避動作のみで、法術と呼ぶスキルも敵を足止めする等の補助系のスキルとなっているので、敵と相対する時の攻撃パターンは弱攻撃でゲージを溜めて強攻撃、合間に法術を使う、というパターンが殆どなり、攻略の幅は狭いと言わざるを得ません。
IGNJがこのゲームのレビューで「弾きのないSEKIRO」「やる事が少ない仁王」と評していましたが全くその通りだと思います。

とは言え、他のインディー系のアクションRPGの多くが「ぼくのかんがえたさいきょうのダークソウル」的な趣向となっている中、西遊記をベースにした世界観、多種多様な敵、工夫を凝らしたサブクエスト等でなんとかオリジナルなゲームへ仕上げようとする意気込みは強く感じますし、これがこのメーカーの最初の作品という事を考えれば今後が楽しみに思えるゲームでした。

 

ランダム配置

デザイン畑からの出身ではない為、ゲーム制作において画面の絵作り/デザインの工程では非常に苦戦しているのですが、その中でも「ランダムに配置する」という作業は苦手で「適当にバラバラに置けばよい」と分かってはいるものの、「適当に」「バラバラに」の加減が全く分からないので、いつもその仕上がりには自信がなくて何度も作り直すという事が良くあります。

 

例えば「葉っぱが散らばっている」画を作ろうした場合、葉のImageを画面内に「適当に」配置しようとすると

こんな感じの仕上がり、Imageを並べているといつの間にか「空いている箇所に配置」しようとして、結果ランダムでなく微妙に整列された画となってしまいます。

「適当に」「バラバラに」と言いつつも何かしらの手法に沿って配置しないと思い描いた通りにはならないので、今回は備忘録として、最近デザイン系の書籍から勉強した「ランダム配置」に関する手法について纏めたいと思います。

 

■大きさと向きを変える

位置が揃っていなくても同じ形状で同じ大きさ、同じ向きのものはグルーピング化して認識するため、その中で規則性を見出してしまいランダム要素が薄れます。
逆に大きさ、向きが異なる物はグルーピングから外れ、その分ランダム性が増すため面倒でも大きさ、向きを変えて配置することは重要になります。
しかし、闇雲に変えても手間が増すだけなので、大きさ、向きはそれぞれ3種類(大・中・小/0度,120度,240度)ずつ用意して設定すれば十分です。

 

大きさを変える

 

向きを変える

 

■配置を工夫する

デザイン系の現場ではレイアウト(配置)に「三分割法」という手法がよく使われます。
これは画面を上下、左右にそれぞれ三分割し、その縦横の線が「交差するポイント」に「重要とされる要素を配置」することによりバランスが整った美しいレイアウトが出来上がるというものです。

 

その為、この三分割線近辺にオブジェクトを配置すると例えバラバラな位置にあっても、自然と「意図的な配置」に捉えられて「ランダム配置」とはなり辛くなります。

三分割線近辺に配置したケース

 

という事は「ランダム配置」したい場合は、この三分割線の近辺からは外れるように配置すればランダム性を増すことができます。

三分割線近辺から外して配置したケース

 

罫線なし

これまでの「大きさを変える」「向きを変える」「配置を工夫する」を全て加えてみるとこんな感じに仕上がります。

 

まとめ

ランダム配置を行う場合は

  • 大きさ、向きを変える
  • それぞれ3種類あれば十分
  • 三分割線近辺から外して配置する

上記の事を意識する事が重要です。

【雑記】真夏の進捗報告

偏見

どうしてフェミニストやLGBTQを公言しているアーティストの作品は下ネタが多いんだろう、と思っている色眼鏡が外せない皆さんこんにちは。先週は夏休み期間だったので暇つぶしキース・ヘリングの展覧会を鑑賞したのですが思っていた以上に下ネタの作品が多くてびっくりしました。そしてそれらの作品を中学生ぐらい女の子がマジマジと見ていたことにもビックリ。親御さんが同伴していたので親公認なんでしょうが鑑賞後に親子でどんな会話するんだろう。

 

今年後半の予定

今年もあっという間に半年が終わり、後半戦に突入しました。
ゲーム制作は適度なペースで行っていますが、今後の予定としては以前もお知らせしましたが去年に引き続き「東京ゲームダンジョン」への出展が決まっています。
今年はハロウィン間近の10月27日に行われ、会場は浜松町の都立産業貿易センター浜松町館となっています。

tokyogamedungeon.com

今年は3月に福岡インディーゲームEXPOで「Under A Groove」というタイトルの新作(試作版)を展示したのですが、東京ゲームダンジョン6では同じ「Under A Groove」というタイトルながら、福岡の時とは異なる新バージョンを出展する予定です。

youtu.be

また、11月23日に福岡で行われるCEDEC KYUSHUというイベントにも参加しようかと考えています。

cedec-kyushu.jp

こちらはインディーゲームの出展枠が15~20と絞られていて選考によって採否が決まるので出展できるか分かりませんが、地元のイベントという事もあり応募してみようかと思っています。

 

というわけで進捗報告

今年の展示会には「Under A Groove」というタイトルの新作(リズムゲーム)を展示するので、現在はそれに向けての作業を行っています。少し前にこのブログで進捗報告として紹介してプレイ動画も載せていたのですが、そこではコア部分の動作確認という意味合いが強くて少し地味な映像となっていました。

www.karvan1230.com

現在はゲームのコア部分は大体作り終えたので、前回よりは派手めな演出で遊べるようになっています。

とは言え、現状では楽曲の前半部分しか作り終えておらず、8月末には東京ゲームダンジョンの運営に出展情報としてゲームのプレイ動画を提示する必要があるので、なんとしても今月中に後半部分も作り終えないといけない。

加えて展示会で掲揚するためのポスターの制作、配布物のデザイン等々の作業が必要なのであまり余裕がない状況です。
出来れば上の動画のステージ以外にもう1ステージ制作して東京ゲームダンジョン6に臨みたいのですが、間に合うかギリギリといったところでしょうか。

 

製品版「W.T.」

アーリーアクセス版をリリースから1年が経過していてビックリですが、こちらも牛歩の歩みならがも最終ステージの制作を進めています。

store.steampowered.com

暫くは「Under A Groove」との並行開発となるので開発ペースが上がることはないと思いますが、製品版をリリースするという決心は変わりないので、それまで地道に頑張っていこうと思います。

 

とは言え仮に製品版が完成したとしても、話題にはならないしメディアにも取り上げられない、パブリッシャーも手を上げそうにないし、要はこのままでは一本も売れないので何かしらの販売戦略が必要なのかなぁ、とぼんやり考えていたりします。

まぁ、完成させるのが何より優先ですが

【アセット紹介】綺麗なエッジ検出が可能なカメラエフェクトアセット-MK Edge Detection-

ネットミーム

「ミーム」という言葉の意味が分からないけど周りの調子に合わせて分かった振りをしている長いものに巻かれた皆さんこんにちは。最近、知らない言葉が急に一般常識のように使われだす事が多くて世間のスピードについていけません。怖い、怖い。

 

アウトライン検出

例えば前回の記事で紹介した「Schim」もそうですが「Chants of Sennaar」や「Sable」のように、ここ最近のインディゲーム(主に海外)の中にはフォトリアルを目指すのではなく、色数を絞りエッジを強調してバンド・デシネのような絵作りでアピールするゲームが出てくるようになりました。

Sableのゲーム画面

Unityで上のようなビジュアルを実現するためにオブジェクトのアウトラインを検出・強調したい場合には主に二つの方法があります。

  • オブジェクト側のシェーダでアウトラインを表示する
  • カメラのエフェクト処理でアウトラインを表示する

このうち、オブジェクト側のシェーダで表現する手法はアウトラインを表示したいオブジェクトを限定できる、という利点はありますが、エッジの角度がきつい所謂ハードエッジの箇所ではどうしても線が途切れてしまう、カメラから見て線の太さが一定にならずアウトラインが汚く見える等の欠点があり、どちらかというとカメラエフェクトを使用した手法の方が多く利用されているように思います(私見)

 

とは言え、カメラのエフェクトを使う手法にもそこそこ欠点はあって、特にモデルが重なった部分のアウトラインを綺麗に表示するためにはアウトライン検出のパラメータの調整が必要となってきます。
Unityでのアウトライン検出の手法については以下の記事に詳しく書かれています。

light11.hatenadiary.com

 

MK Edge Detection - Screen Space Lines Shader

アウトライン検出用のアセットとしては比較的高額の部類ですが、それ相応の価値があるアセットを最近導入しました。

Built-InとURP,HDRPのいずれにも対応しており、Built-InとURPではPostPorcessing(PPSV2)と併用する方法とPPSV2を使わない方法を選ぶことが出来ます。

アウトラインの検出法については以下の3つが用意されており、各それぞれでパラメータ調整可能で全ての手法を適用する事もできますし、選択して組み合わせることもできます。

  • Depth:カメラの深度バッファを利用してオブジェクトのシルエットを検出します。
  • Normal:カメラの法線に基づいて内側のエッジを強調します。
  • Scene Color:カメラのレンダリングされた画像に基づいてエッジが表示されます。

 

下の比較画像を見れば分かると思いますが、これらの検出法を組み合わせることで詳細なエッジが検出され、綺麗なアウトラインを描画する事が出来ています。

比較画像1

比較画像2

特に階段の箇所や、建物内部の細かい柱の箇所など、他のカメラエフェクトアセットではあまり綺麗に描けなかったような箇所でもアウトラインが綺麗に描かれていて驚嘆に値します。

 

導入手順

上記のようにこのアセットはBuilt-InとURP,HDRPのいずれにも対応していますが、今回は一番利用者が多いであろうBuilt-InでPostPorcessing(PPSV2)と併用するケースでの導入手順を説明したいと思います。

最初にPostPorcessing(PPSV2)を使うためにメインカメラにPostProcess Layerコンポーネントをアタッチ、Triggerにメインカメラを指定してLayerにPostProcess用のLayerを指定します。

 

次にシーン内に空のオブジェクトを生成して、オブジェクトのLayerにPostProcess Layerで指定したLayerを指定、そこにPostProcess Volumeコンポーネントをアタッチします。

 

PostProcess VolumeのInspectorから「Add effect...」ボタンを押し、「MK→MK Edge Detection」を選択します。

 

Mk Edge Detectionコンポーネントが追加されるのでここでパラメータの調整を行います。

 

アウトライン検出法

前述のようにこのアセットでは3つのアウトライン検出法が採用されています。
それぞれの検出法はInputDataの項目で採否を選択することが出来ます。

 

各検出法の効果を個別に検証するために下のモデルを利用します。

 

Depthのみを適用した場合

オブジェクトの外観部分のエッジが検出されていることが分かります。

 

Normalのみを適用した場合

各オブジェクトの形状が変化する部分のエッジが検出されています。

 

Scene Colorのみを適用した場合

オブジェクト内で色合いの変化が大きい部分がエッジとして検出されています。

 

全ての処理を適用した場合

半透明の箇所を除き、アウトラインとして欲しい部分が検出されているのがわかると思います。

 

エッジ検出専用で結構高額なんですがそれなりに有用なので個性的な絵作りには役立つアセットではないでしょうか。

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。