Brackeys Game Jam 2022.1に参加してみた!

少し時間的に余裕ができたので、Brackeys Game Jam2022.1という日本でいうところのunityroomの1週間ゲームジャムのようなイベントに参加してみました!

UnityでWebGLのゲームを作成しました。

今回はゲーム自体は非常にシンプルで、操作はクリックだけど3D謎解きゲームになっています。アイテムなどをクリックして探索をして、暗号を解いて出口から出ればクリアとなります。ゲームはシンプルですが、今回のゲームでは結構内部的にしっかり作りました。特にこだわったところは以下になります。

・UniRx、UniTaskをなるべく使うようにしました。
・マスターデータの管理にJSONファイルを使い、JSONファイル内のデータはExcelで作成するようにしました。

また、今後は以下を改善したいと考えています。
・ExcelからJSONファイルへの書き込みの自動化(Unityエディタ拡張か、Excelマクロか)
・今回は状態管理的な機構をゲーム内に入れなかったが、入れておいたほうがよかったかも。(今はポーズ中、プレイ中、初期化中、タイトル画面中など)

プレイ動画は以下になります。
ゲームのURLはこちら
(WebGLなのでブラウザでプレイできますが、PCの要求スペックが高めかもしれません)
https://tarosansei.itch.io/prisondream

unityroomへアップロードするときのファイル拡張子が「.gz」の件

Compression FormatをGzipに変更しても、結局ビルドされるファイルが「.unityweb」だったのでどうすればいいのか迷ってしまった。

結論としては、「.gz」のファイルでビルドされるわけではなかった!
なので、「.unityweb」でビルドされたファイル群を手動で「.gz」にファイル名を変更したのちに、今までと同じようにunityroomへアップロードすれば問題なくプレイできた。
ビルドされたら生成されるファイル群
手動でファイル名を変更した
ちなみに、自分のサーバーなどで動作確認する場合は、拡張子を「.gz」にすると動かなかった。「.unityweb」に戻すと正常に動作した。

UnityのStandard Asset内のスクリプトで自分のスクリプトの変数にアクセスできない問題

非常にハマってしまったので、メモで残しておきたいと思う。

何をやりたかったかというと、UnityのStandard Asset内にある、FPS用のプレハブ「FPSController」を使って、FPSゲームを作ろうと思っていた。しかし、このプレハブにアタッチされているスクリプト「FirstPersonController.cs」内を編集しようとしたときに問題が発生した!GameManagerクラスを自作し、このクラスをシングルトンにしていて、このクラス内の変数に 「FirstPersonController.cs」 内でアクセスしようと思っても、アクセスできなかったのだ。原因は非常にシンプルだった。「Standard Assets」というフォルダ名は特殊フォルダーになるらしく、自作スクリプトよりも先にコンパイルされるらしい。そのため自作スクリプトへはアクセスできないということだった。

https://docs.unity3d.com/ja/current/Manual/ScriptCompileOrderFolders.html

対策としては以下2つが考えられる。
①フォルダ名「Standard Assets」を別のフォルダ名に変更してしまう。
②フォルダ「Standard Assets」内にある使いたいスクリプトだけを別フォルダへ移動する

自分は今回は①の方法で解決した。
フォルダ名変更

Unityの大量のテクスチャの設定を一気に変えるエディタ拡張を作ってみた。

UnityProjectはGithubに公開しておりますので、ご自由にお使いください。

https://github.com/taroyan/TextureSettingChangeBatch

Unityのテクスチャ(pngやjpgファイルなど)で圧縮設定とかをMipmapの使用などを各テクスチャで切り替えたりすると思いますが、大量にテクスチャがあると1枚ずつやっているのが大変すぎるので、エディタ拡張を作りました。ちなみに1つのフォルダ内に入っているテクスチャであればファイルを複数選択して、インスペクター内で設定したい項目を変えれば一気に選択したファイルの設定を変えられるのですが、複数フォルダ内に入っているテクスチャの設定を変える場合はフォルダごとにファイルを複数選択しなくてはいけないため、複数フォルダを選択した状態でボタンを押すと、すべての選択中のフォルダ内のテクスチャの設定を一気に変えます。(多分複数フォルダ内の子フォルダも含めてすべて一気に変えることはUnityエディタでは標準ではできないはず。)

使い方は、フォルダを選択した状態で、ボタン「Import Settings Batch Conversion」を押すだけ!


テクスチャ設定の細かい項目をいじりたい場合は、スクリプトを直接変更してください。むしろ今は、最低限の変更(画像サイズなど)しかしないようになっています。

STYLY ARジオラマアワードでSILVER賞と小峠英二賞をいただきました!

9月に開催されていたARジオラマアワードでSILVER賞と小峠英二賞をいただきまして、ありがとうございました!
受賞作品サイト
小峠教官のサイン入りTシャツと目録
今回の作品を作ろうと思ったきっかけですが、第一にARアプリを作ったことが無かったので作ってみたかったということです。 そして、何を作ろうかと思ったのですが、まずは、ガリベンガーVの番組自体は結構見ていたので何とかして番組と絡ませた内容にしようと思いました。そして、番組の一番の見どころはやはり小峠教官のツッコミだと思い、そこだけにフォーカスして青空AR講義を作りたいと思いました!STYLYさんのほうで色んなアセットを無料提供されていましたが、今回の青空AR講義にはちょっと近未来すぎて合わないアセットが多かったため、今回はあえてブイ子以外はオリジナルで素材を用意しました。結果、少しオリジナリティのある作品になったのか、今回のような賞をいただくことができました。小峠教官にもアプリを見ていただけていたら幸いです。

STYLYでAR講義アプリを作ってみた。

STYLYというプラットフォームは、AR機能も簡単に作成できるということらしいので、ARアプリを作ってみました。

ちょうどガリベンガーV、ARジオラマアワードというイベントをやっていたので、ガリベンガーVのネタで1つアプリを作成してみました。

ガリベンガーVはよく見ていました。コトウゲ教官のツッコミが鋭すぎて、これを何とかしてみんなに知ってもらいたいと思い、「コトウゲ名言講義 in AR」を作成してみました。
ARにする必要があるのか?というツッコミが飛んできそうですが、どこでも講義が始まるのがなんとなく面白いかも?と思って作ってみました。

STYLYでの作成は、VRコンテンツを作るのとほとんど一緒(初めのテンプレートをAR用にするだけ)だったので、すごく簡単でした。

よかったらご覧ください。
スマホでQRコードを読み込むとプレイできます。
https://gallery.styly.cc/scene/9078adc2-1389-4274-a96d-f6d695b14c75


Youtubeでプレイ画像を見ることもできますのでなんとなく雰囲気を見てみてください。

clusterで初めてゲームワールドを作ってみた

作った時の技術的(というほどでもないが)な内容はQiitaに投稿したので、URLを貼り付けておきたいと思います。
https://qiita.com/taroyan/items/a75360b592413836841c

またプレイ動画をYoutubeにアップしていますのでよければ見てみてください。
こちらでは、主に作ってみたときの感想を書いておきたいと思います。

とにかく、2020年6月5日に疾風Pさんが2年半ぶりくらいに新曲を公開されたので、「何かしなければ!」という感情が先走ってしまった感じがしますね。前々からBeat〇aberのようなVR音楽ゲームを作りたいなと思っていて、VRChatででも作ってみようかと考えていたりもしていたが、まず悩んでいたのが、和風のゲームをどうやって作ろうかというところでした。ゲームのシステム自体は音楽ゲームを踏襲すればいいのでなんとなくイメージはつくのだが、和風の雰囲気をどうやって出せばいいのだろうかというところでずっと悩んでいました。そのときにちょうどclusterでゲーム機能が追加されたというのを知り、かつ、ゲームコンテストをやっているようなので、それならこのコンテストを機会にとりあえず作ってみようと思いました。悩んでいてもなかなか作り始めれないので、何かきっかけがあるのはいいですね。しかし、コンテストに気づいたのが6月末で締切が7月12日だったのでちょっと時間が無いなと思っていました。ダメならダメで遅れて投稿しようと思っていたんですが、何とか期限以内に間に合いました(もう少し直したいところとかありましたが)。

作成時に大変だったところとして、Qiitaにも書きましたが、ノーツの調整が超大変でした。またゲージのメモリを上げていくところも大変でした。どうやったかというと、スクリプトが使えないので、赤と青のゲージそれぞれにアニメーターを付けてノーツの個数分のアニメーションを作り、ノーツが消されるたびにひとつずつアニメーションを遷移させるということを行いました。一つの色で200個ほどのアニメーションがありましたので、アニメーター内で並べるだけでも大変でした。。。

あと結構時間がとられたのが、緞帳や歌詞の表示を画面の前面に貼りつけるところです。なんとなく映画の字幕のような雰囲気を出したかったので、前面にずっと貼り付けておきたかったのですが、いろいろやってもなかなかうまくいかず、何とか今の状態に落ち着きました。時間がとられたのは、VRで確認するためにはビルドしてclusterを動かしてみないとわからないところです。このビルドがかなり時間かかるため、試行錯誤することができなかったのがつらかったです。clusterワールド制作時にVRモードで動作確認できる方法があればいいと思います。clusterのPreviewのUseVRにEnableがあるのでできるのかもしれせんが、EnableにしてもVRで確認できないので、何かしら設定が足りていないのかもしれません。

とにかく、作り始めてからは大変ではありましたが、意外に順調に進んだ気がします。今月末にまたゲーム制作のイベントがあるようなので、時間が取れれば参加してみようかと思っています。まだclusterのゲーム機能もほとんど使用していないので、いろいろ使ってみたいと思います。

UnityのTerrainで独自のシェーダーが使えなかったときの対処

どうやら、UnityのTerrainで草や木や地形にマテリアルを割り当てるときに、独自のシェーダーを適応しているマテリアルは割り当てられないようになっているようだ。
おそらくApplyすればUnity標準のTreeCreatorBarkが適応される(差し替えられる)ような気がするが、そうすると独自シェーダーが適応できなくなってしまうので、エラー文の対応を見ると以下の2点を直せばいいらしい。

1.シェーダーの名前に「leaves」または「bark」がはいっていること。

2.依存性に関する1行をシェーダー内に記載すること

それぞれ以下のように対応したら一応独自シェーダーが適応されたマテリアルでもTerrainで使用できた。

1.独自シェーダーを開き、シェーダーの名前を変える。(今はCustomShaderbark)に変更。「bark」が入っていればどんな名前でもいいんだと思う。
2.依存性に関する1行を末尾に加える。(これは、ビルドインシェーダーをUnity公式から落としてきて、TreeCreatorBarkの該当する1行をそのままコピペしただけ)
でも結局、Unity標準のシェーダーのほうがなんか見た目がよかったので、それを使った。。。

Unity2019.3にしたらTextMeshProが動かなくなった。

なんかエラーがいっぱい出てよくわからない状態になった。 とりあえず解決したので備忘録で残しておきます。
  • Windows -> Package Manager -> TextMesh Pro 2.0.1をインストール
  • 一旦Unityプロジェクトを落とす
  • Asset -> Library -> PackageCache -> com.unity.textmeshpro@2.0.1を削除
  • もう一度Unityプロジェクトを立ち上げる
  • Asset -> TextMesh Proフォルダを削除
  • Windows -> TextMesh Pro -> Import TMP Essential Resourcesをクリックする。(TextMesh Proフォルダが再生成される)
これで直った。 Unityプロジェクトを落としてPackageCache内を消す必要なもしかしたらないかも。

Unityroomの一週間ゲームジャムで「ドローンインザダーク」を投稿しました。

一週間ゲームジャムの「さがす」のテーマで「ドローンインザダーク」を投稿しました。よかったら是非プレイしてみてください!

Unityroom配信リンク

毎回Unityの新しい機能を使用することを目標としているのですが、今回は以下に挑戦してみました!
・UniRx

特に便利に思ったのは、シングルトンとReactivePropertyを組み合わせれれば、
プレーヤーデータなどのどこからでも参照する変数を、いちいち参照しに行かなくても、
購読しておけば変数が変更した場合にすぐ検出できたことです。
コルーチンと連携するとさらに便利らしいのですが今回は使わなかった。

© 2022 Husky Studios (タロ三世商会), All rights reserved.