Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【アセット紹介】Volumetric Fog & Mist 2 で霧を作る【Unity】

今回はアセットの紹介をしていきます。
紹介するのはVolumetric Fog & Mist 2。
立体感のある霧を作成するボリュームフォグ&ミストアセットです。

この記事では機能の紹介と簡単な使い方の解説をしていきます

どんなアセット?

Built-in、URPに対応したフォグアセットです
立体感のある霧を作成できます

Volumetric Fog&Mist 2は、Gigaya、Praey for the Gods、MarZ:Tactical Base Defense、Sky Fleet、FrontlineZEDなどのゲームで使用される完全でパフォーマンスの高い没入型AAAフォグソリューションです。

 

 

開発環境

Unity 2021.3.7f1

URP 12.1.7

Volumetric Fog & Mist 2 ver8.3

 

 

インポートの確認

アセットインポート完了時はこんな感じ
VolumetricFogBundle」という名前のフォルダの中にBuilt-in用とURP用で2つのパッケージが含まれています
プロジェクトによって必要な方のパッケージをインポートしましょう

この記事ではURPを使用します

 

URP版の設定 (Built-inの場合はスキップ)

URPの場合RenderPipelineAssetの設定が必要です
Project SettingsのGraphics/Scriptable Render Pipeline Settingsに設定してあるRenderPipelineAssetを開き、Depth Textureにチェックを入れます

 

よくわからない場合はDemo用に用意されている
VolumetricFog2/Demo/URP Pipeline Settings/UniversalRenderPipelineAsset.assetをそのまま設定してあげればOKです

 

 

 

デモシーンの確認

パッケージをインポートするとVolumetricFog2フォルダが作られます
デモはその中のDemoフォルダにあります

 

DemoScene

雲海のような霧にCubeが置いてあるシーン

とくに操作はないですが、Lightによる影の描写がきれい

 

FogOfWarDemoScene

Capsureに合わせて霧が晴れていくシーン

 

 

 

実際に試してみる

いつものURPのサンプルシーンに霧を作ってみます

 

Prefabの配置

Hierarchyビュー上で右クリックし、Effects/Volumetric Fog2/Fog Volumeを選択

 

するとFogを作成するFogVolumeがSceneに追加され、
同時に、Fogにライトの情報などを与えるVolumetric Fog Managerが自動的に作成されます

 

この状態でSceneは霧がかったように白くなります

FogVolumeにアタッチされているVolumetricFogコンポーネントを操作して、霧を調整します

 

VolumetricFogコンポーネントの編集(Profile)

最初にProfileを作成します
Demo用に用意されているProfileを使ってもいいですが、今回は新しく作成

 

NewFogProfileボタンを押すと新しいProfileの作成と初期設定がされ、
Inspectorにたくさんのパラメータが表示されます

 

全てデフォルトの値ですがSceneにもいい感じに霧がでています(色的に煙っぽい)

 

 

 

VolumetricFogコンポーネントの編集(パラメータ)

VolumetricFogコンポーネントにあるパラメータから霧の見た目を調整できます

初期状態では巨大な霧の層になっていますが、Transformの値を変えることで位置や大きさを設定できます

 

 

パラメータの数が多いため解説はしませんが(ドキュメントに書いてある)
霧にかけるノイズ、色、アニメーション速度など自由に調整できました

 

 

 

 

まとめ

・Volumetric Fog & Mist 2を使って立体感のある霧を作成しました
・コードを書かずに大きさや色、動きなど自由にコントロール可能な霧を作成できます
・今回使いませんでしたがLightによる拡散や鏡面反射、特定の範囲だけフォグを無効化するなど他にも機能が用意されています

以上です

 

 

 

ちなみに同パブリッシャーKronnect氏によるポストプロセスアセットBeautify 2も同時に使用していましたが問題なく機能していました

こっちのアセットもオススメ

raspberly.hateblo.jp

raspberly.hateblo.jp

 

 

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。

【イベントレポ】: Indie Games Connect 2022

イベントのレポート(メモ)です。
参加したのはこちら、「Indie Games Connect 2022」

www.konami.com

 

 

ハッシュタグ : #IGC2022 #IGC

 

 

Indie Games Connect 2022とは

インディーゲームの展示会です
参加サークルは60、入場無料

以下公式サイトより引用

「自らのアイデアを注ぎ込んだ渾身のゲームをより多くの人に楽しんでもらいたい」
そんなアナタを応援します!
「自分の手で作り上げた作品をより多くの人に楽しんでもらいたい」
そう願っているクリエイターの想いに応えるため、
KONAMIでは少しでもたくさんの方々の手に触れていただくための、
クリエイターとユーザー、またはクリエイター同士の交流の場を作りたい考え、
今回のイベントを開催する事にいたしました。

 

 

 

※以下体験させていただいたサークル及び作品の紹介です
※掲載している写真は全て許可を得て撮影しています
(人が写っている写真はトリミングや黒塗りなどの加工をしています)

 

No. 55 マジカオス / MAGIC CHAOS

対戦型弾幕シューティングです

 

デジゲー博でも体験した「れーぞく!ネクロマンスちゃん」が対戦型弾幕シューティングになって新登場!

raspberly.hateblo.jp

全方位シューティングという部分は変わらず、複数人による対戦要素が追加されています
スキルとキャラクターを選択して戦闘開始、試遊では制作者の方と対戦しました(勝った)
弾幕など複数種類があるのでかなり奥深そう

 

 

No. 35 レーザーカッティングゲーム

www.konami.com

 

赤外線センサーを使ったアクション?ゲームです
30秒で何回センターの上で手を動かせるかを競います

手を重ねた状態で素早く動かしその回数を競いますがとてつもなく疲れます
周りから見たときのインパクトもありとても人気でした

 

 

No. 54 Puzzle Action Rogue

パズル・アクション・ローグライク要素ありのスマホゲームです

地形をパズルのように組み立ててダンジョンに潜っていきます
ローグライク要素があり、レベルアップしたステータスはダンジョンを出るとリセットされます
ダンジョンの高さの概念があり、一度降りたら戻れないのと、
高い所から落ちて攻撃すると大きなダメージを与えられる(逆もあり)要素もあり戦略性も高そう

 

 

No. 41 ライクドリーマー

 

ポップでかわいいシューティングゲームです

画面横のキャラクターが、プレイヤーのアクションや敵の撃破でリアクションをとってくれるのでとてもかわいいです

 

 

No. 48 nature prhysm

 

3つの色と4つのレーンが特徴の音ゲーです
レーンごとに3色(+α)のノーツが流れてくるので、それに対応したボタンを押していきます
最初は忙しいですが、慣れるとスムーズに行けました

 

ちなみにこのコントローラーは自作とのこと、打鍵感も気持ちいい

 

 

No. 13 ShipSwing

 

スイングバイを使って宇宙船をワープゲートに誘導するアクションゲームです

操作は簡単ですがたくさんのギミックに、ステージによってはルートが2つあるなどやりごたえ抜群でした
独特の操作感と、スイングバイを使った時の高速移動がとても気持ちいいです
何度もゲームオーバーになりますがリトライもかなり早く快適

 

No. 24 QLANET

www.konami.com

 

量子〇×ゲームです

 

1列をそろえた方が勝つ(+そろえなくても5つあれば勝ち)ルールは通常の〇×ゲームと同じですが、
こちらは各マスの状態変化+カードを使ったオリジナル要素があります
ここでは書ききれませんが、相手からマスを見えなくしたり、運ゲーに持ち込んだりととても戦略性が高いです
配られるカードはランダムなので毎回違った動きになるのも面白い

 

 

No. 20 百科ガール

 

街中にあるいろいろなものを武器や道具にできるアクションゲームです
物によっては高速で移動したり、広い範囲を薙ぎ払ったりとアクションも多彩
モチ上ガールでもお馴染み動きまくるカメラワークも素敵

 

 

No. 4 リズムで英語 ビートトーク

www.konami.com

 

英語をテーマにしたリズムゲームです
英語の発声に合わせてリズムよくボタンを押していきます
ボタンを押す時一緒に発生することで英語を話せるようになることが狙いのようです

 

トークのテーマは複数用意されていて、中にはクイズ形式のものがありとてもおもしろかったです
中にはぶっとんだトークもあったり...

 

 

No. 23 ラビィとナビィの大冒険

かわいい見た目の3Dアクションゲーム

ウサギと妖精のコンビを操作してニンジンをあつめるゲームです
さりげない隠し通路にメタ要素が用意してあったりと細かい所まで作りこまれていてすごい

 

 

No. 23 ANOTHER DERBY!

野球ゲームです ハランデイイ

個性豊かな森の畜生どもキャラクターの投げるボールを規定数ホームランすれば勝利です
今回イベント用に特別に作られたキャラクターは物理法則無視とかいうレベルじゃない軌道で突っ込んできます

 

 

 

Unityブース

Unityもサポーターとしてブースがでていました
ノベルティの配布と、オススメアセットのお試しコーナーが用意されていました

 

ちなみにオススメアセットとして載っていたのが以下の8つ

 

個人的にFeelとGrabbitは汎用性が高いのですごいオススメ
過去に解説記事を投稿しています(便乗)

raspberly.hateblo.jp

raspberly.hateblo.jp

 

 

 

 

 

 

イベントの感想

あつい!(物理)

入場無料ということで混雑することを想定し早めに出ましたが、お昼前の時点で入場制限がかかるほどの盛況っぷりでした。午後も入場制限が続いているということで長居せず早めに退場
今回は11のブースでゲームを体験させていただきましたが、どれもとても面白かったです

 

個人的によかったのは、ShipSwingとQLANETですね
ShipSwingは操作感が気持ちよく、QLANETは試遊ということで1回しかできませんでしたが、
最初からルールを把握したうえでもう一回やってみたいです

 

 

以上です

 

 

 

【アセット紹介】Farland Skies - Low Polyでスカイボックスを作る【Unity】

今回はアセットの紹介をしていきます。
紹介するのはFarland Skies - Low Poly
ローポリなスカイボックスアセットです。

 

セール情報

現在アセットストアではお得なバンドルセールを開催中
複数のアセットを超特価で手に入れるチャンス!

assetstore.unity.com

今回紹介するFarland Skies - Low Polyも対象アセットです

 

どんなアセット?

ローポリスタイルのスカイボックスアセットです。
スカイボックス用のマテリアルをプレハブを経由して操作し空をつくります
空だけでなく、雲・星・太陽・月もコントロール可能です

プレハブをシーンに配置するだけで動作するためとても使いやすいアセット

特徴:
•指数を調整できるダイナミックな3色のグラデーションの空。
•調整可能なきらめき速度と地平線の絶滅を備えた3種類の星。
•サイズ、色合い、位置をカスタマイズできる5種類の太陽と月。
•ダイナミックな高さと色合いを持つ3種類の気の利いた低ポリ雲。
•完全にカスタマイズ可能な昼夜サイクル。
スクリプトから、またはエディターで直接制御するのは簡単です。
• ハイパフォーマンス。モバイルデバイスVRプラットフォーム向けに最適化されています。
•ビルトインとユニバーサルレンダリングパイプラインの両方をサポートします。

 

 

以下のリンクからデモを操作できます

Customization Demo
Day-Night Cycle Demo

 

ドキュメント

 

 

開発環境

Unity 2020.3.26f1

URP 10.8.1

Farland Skies - Low Poly ver2.5.2

 

 

 

インポートの確認

アセットインポート完了時はこんな感じです

今回はURPプロジェクトにインポートしましたが、追加パッケージのインポートなどは必要なし

 

インポートすると現在開いているシーンのSkyboxが自動的に上書きされる?みたいです
勝手に変わりました(一時的なものかも)

 

デモシーンの確認

Assets/Farland Skies/Low Poly/Demoにデモシーンが用意されています

URPの場合LWRPフォルダのシーン

 

CustomizationDemo
空、星、雲など一通りの確認ができるシーン

こちらからデモを動かすことができます

Customization Demo

 

 

DayNightCycleDemo
時間経過による昼夜サイクルのデモシーン

こちらからデモを動かすことができます

Day-Night Cycle Demo

 

 

 

実際に試してみる

実際にスカイボックスの設定をしてみます

スカイボックスの設定

Assets/Farland Skies/Low Poly/PrefabsにあるSkyboxControllerをシーンに配置します

シーンに配置すると自動的にスカイボックスが変更されます
以降スカイボックスの設定はSkyboxControllerで行います

 

空の色

Top(上部)、Middle(中間)、Bottom(下部)で色を調整、
TopExponentとBottomExponentはそれぞれの境界の調整

 

星の輝き

Stars Cubemapは星のキューブマップ
Stars Tintは星の色合い
Stars Extinctionは星の明るさ
Stars TwinklingSpeedは星が瞬く速度

Stars Extinctionを0にすると星が非表示になる

 

太陽の光

Sun Textureは太陽のテクスチャ
Sun Lightは光源になるLight
Sun Tintは太陽の色
Sun Sizeは太陽の大きさ
Sun Haloは輝きの強さ
Sun Flareはレンズフレアの有無
Sun FlareBrightnessはフレアレンズの強さ

Sun Tintのアルファを0にすると太陽が非表示になる

 

月の光

各パラメータは太陽と全く同じです

 

雲の模様

Clouds Cubemapは雲のキューブマップ
Clouds Tintは雲の色
Clouds Heightは雲の高さ
Clouds Rotationは雲の角度

Couds Rotationの値を更新し続けることで回転させることができます
ちなみに雲を消すことはできない?ようです
一応位置を下げることで見えないようにすることはできる

 

全体の処理

Exposureは全体の露出
Adjust Fog ColorはFogを空の色と合わせて自動的に調整します

 

 

 

 

スクリプトからパラメータを変える

SkyboxControllerのパラメータはスクリプトから編集できます

usingを追加してシングルトンになっているSkyboxControllerなどを呼び出すだけです

using Borodar.FarlandSkies.LowPoly;

 

    void Hoge()
    {
        SkyboxController.Instance.TopColor = Color.blue;
    }

 

 

 

昼夜サイクルシステム

付属のプレハブ、SkyboxCycleManagerSkyboxDayNightCycleを使うと
時間経過による昼夜のサイクルを簡単に実装できます

Assets/Farland Skies/Low Poly/Prefabsにある
SkyboxCycleManagerSkyboxDayNightCycleをシーンに配置

これだけでOK

 

SkyboxDayNightCycleでは月と太陽の角度や位置関係、および時間ごとの空の色などを設定

 

SkyboxCycleManagerでは時間の速度、経過時間の確認、一時停止のチェックなど



 

 

まとめ

・Farland Skies - Low Polyを使うとスカイボックスを作成できる
・空の色、星、太陽、月、雲などを設定可能
・昼夜サイクルのシステムもあり

以上です

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。

【勉強会レポ】: 📣 unity1week online共有会 #8

勉強会のレポート(メモ)です。
参加したのはこちら「📣 unity1week online共有会 #8」

meetup.unity3d.jp

ハッシュタグ : #u1w共有会

 

アーカイブはこちら

youtu.be

 

 

unity1week共有会って何?

unity1weekでいろんなゲームを遊んでいると
「どういう実装をしているんだろう」「どんな人が作っているのか」など気になることがいっぱい!

それら気になることを直接聞けばいいじゃん!というのがunity1week共有会の始まりで、
みんなで学んで成長することが趣旨です。

 

unity1weekについてはこちら

Unity 1週間ゲームジャム | フリーゲーム投稿サイト unityroom

今回は10人の発表者にトークしていただきます。

 

 

LT1: 自分苦しませない駆動開発

そろえる | フリーゲーム投稿サイト unityroom

前回作ったゲームで大失敗し、つらかった
そこで自分を苦しめないようにした(自分苦しめない駆動開発)

 

自分がなにがつらいか考える

・他のことをできなくなるのがつらい
・人間としゃべるのがつらい
・短い時間で新しい技術を習得するのがつらい
・ランキングに載れない(評価されないのが)つらい

苦しめないように考える

・投稿することを目標にする
・短い時間で作れるものを目指す
・他の人と比べないように週前半に投稿する
・全員が脱落しないようにしてキャッチーなゲームにする

 

自分を追い詰めるのは悪いことではないと思うが、
自分のプラスになっていないなと思ったら自分苦しめない駆動開発オススメです

 

 

 

LT2: 勢いで1週間を走り切る

ImitateDance | フリーゲーム投稿サイト unityroom

ゲームにやりたいことを詰め込む時にどの辺を重視したのかというお話
アニメのラップから着想を得て音ゲーを作ることに

絵作り

雰囲気にこだわりたかったので苦労した
キャラクターについては偶然いいアセットが見つかったので導入

ただしキャラはたくさんいるが自キャラしかアニメーションができていなかった
ナイトクラブの雰囲気やUI、キャラクター作りを優先

犠牲になったゲーム性

・リザルト画面がスコアなどもない簡潔な初期案のままだった
・タイミング設定、キー設定などがない
チュートリアルが早すぎてまともに読めなかった
・ゲーム起動時に表示するようにした方がよかった

おわり

・勢いで走り続けた
・オシャレとは別の切り口で雰囲気を重視した
・行き当たりばったりでボロが多い

 

ソースコードを公開しよう

よければみなさんもどうですか?

u1w_scripts - Twitter Search

github.com

 

 

 

 

LT3: 「時効1分の世界」の挑戦(チャレンジ)を振り返る10分の世界

時効1分の世界 | フリーゲーム投稿サイト unityroom

挑戦についての話

企画の挑戦

ゲームを開発するうえではじめに考えることはモチーフコアアクション

モチーフ

過去unity1weekに参加した時、みんな「寿司」「筋肉」「ゴリラ」が好きっぽいと分析しました(SKG理論)

note.com

実際に筋肉をモチーフにしたゲームで総合1位を取ることができました

note.com

今回はSKG理論とは逆の考えで女の子を主人公にしました

コアアクション

過去に作ったゲームは1プレイ2分くらいだった、これは長いという評価をいただいたので1分にした
1分で何をするか思いつかなかったのでデザインからギャップ萌え狙いで調査推理

開発の挑戦

自由な発想でUIを工夫した

・現実で使われている意匠をゲームデザインに取り入れる
・ぱっと見何をするのかわからないのでそのままゲーム空間に文字を置く
・最低限のルールを決める(画面の流れ、色)

まとめ

unity1weekを制したければ寿司筋肉ゴリラを使いこなしましょう
楽しく自由に挑戦できることこそインディーゲーム開発の醍醐味

 

 

 

LT4: 「移動」をちょっと楽しくするための引き出し

わだつみのこだま | フリーゲーム投稿サイト unityroom

移動に関するテクニックをサンプルプロジェクトをさわりながら紹介
詳しくは動画をどうぞ

github.com

・移動速度:少し走っているくらいがちょうどいい感じ
・カメラの近さ:近いほど早く見える、マップが狭いときによい
・カメラ:Cinemachineを使う
・斜め移動:触ったときの気持ちよさにつながる
・影:3Dでなくとも立体感を認知しやすくなる
・足音:プレイヤーの入力には効果音があるとそれだけで気持ちいい
・中間値の補間:移動し始め、方向転換に補間をつけるとより自然な動きになる

 

 

 

 

LT5: 絵作りは〇〇の〇〇!

LET'S DANCE!! | フリーゲーム投稿サイト unityroom

絵作りはできることの足し算

できることを活用すると時間に余裕ができるし、確実に開発が進む
足し算は素材を組み合わせること、合わせると個性がでてくる

できることの増やし方

学ぶ

Unity Learning Materials

learning.unity3d.jp

learning.unity3d.jp

learning.unity3d.jp

 


nattuhanさんのyoutubeチャンネル

www.youtube.com

youtu.be

遊ぶ

色々なゲームに触れる
素材の細部まで分解理解しよう

 

ゲームは要素の掛け算

要素はプログラミングだったりグラフィックだったりサウンドだったり...
掛け算なので負の要素があるとより印象に残りやすい

要素のみがき方

同じく学ぶと遊ぶ
プログラムなら書籍や他人のコード、グラフィックなら絵の練習やShaderの勉強など

まとめ

・絵作りはできることの足し算
・ゲームは要素の掛け算
・○○みたいなゲームにも需要はある

 

 

 

LT6: 1 週間で 90 ステージ作る工夫

baba-s.hatenablog.com

ハコケシ | フリーゲーム投稿サイト unityroom

ハコズラシ | フリーゲーム投稿サイト unityroom

1週間で大量のステージを作るためにどういった工夫をしてきたか

ステージの作成

無料のタイルマップエディタ「Tiled」を使用しています

www.mapeditor.org

 

baba-s.hatenablog.com

Unityには標準でタイルマップエディタはありますが以下の理由でTiledを使っています
・編集したステージを即座にゲームに反映できる
・タブを切り替えて編集しているステージを比較しやすい

ステージの順番

ステージの順番はPowerPointで調整
量産したステージを良い感じの順番にする
難易度の流れ、似たようなステージが続いていないかが可視化される
PowerPointの作成・読み込みはPythonで実装(PythonはUnityから呼び出す)

 

 

 

LT7: 素材を外注しつつ短期間で作ることについて

RTART ~閉店までの1分間~ | フリーゲーム投稿サイト unityroom

外注してよかったことについて

・企画を早い段階で固めることができた
素材を外注するため「企画の締め切り」として機能する
発注する時にゲームのイメージを固めることができる

・PVの作成
PVはゲームのプレイ部分+世界観、売り部分、タイトルコールとつなげるが、
企画段階で考えると、ゲームでやりたいこと売りたいことを定義する効果があった

副次的効果

・後に引けないためお蔵入りにならない
・実務っぽい経験がつめる

 

 

 

LT8: はじめてでも簡単!? 非同期型オンラインゲーム

フィールドポーカー | フリーゲーム投稿サイト unityroom

オンラインゲームのイメージ

・神のような凄腕クリエイターじゃないと作れないイメージ
・時間帯によってはマッチングしないためプレイできない

 

しかし実はオンラインゲームをみんな作っている(オンラインランキング)
今回作ったゲームは、これをスコアではなくプレイデータを送ることでオンラインゲームにしている
この方法ならリアルタイムでプレイする必要もない
初めてオンラインゲームにチャレンジしたい方はこういう選択肢もあるかも

 

 

LT9: Vtuberだからできた配信しながらゲームを作るということ

耳をそろえてお金を返すけだまちゃん | フリーゲーム投稿サイト unityroom

どんな配信をしていたか

何を作るか考える配信

みんなで考えられる

作業配信

時間を決めたことでダラダラしないで集中できた
視聴者が監視してくれるのでだらけない

視聴者参加型デバッグ

配信者の一番大きなメリット
自分で発見できないバグが見つかる
デバッグを手伝ってくれた方をゲームクリア後のエンドロールに載せることも

まとめ

・はじめてだったが配信スケジュールを汲んだことで計画通り完成した
・配信自体が告知広告になってたくさん遊んでもらえた
ゲームクリエイターのつながりができた
・楽しかった

 

 

LT10: 効果音でつくる世界~枝切鋏でシャンデリアを落とす~

Solo_EllE | フリーゲーム投稿サイト unityroom

今回既存の音を組み合わせて50個の効果音を作りました
そのうちの「枝切りばさみでシャンデリアを落として犯人を撃退する」音の工夫したポイントを紹介

 

効果音を入れる上で大事だと感じたポイント

・実際にはない音を使う
ハサミの音はあったがシャンデリアを切る音にしては弱い
→剣で斬る音を使った

・実際にはない間を取る
物は瞬時に落ちるが、あえて間を取ることでプレイヤーがイメージしやすいようにする

・組み合わせで演出する
イメージできる限り音を組み合わせて自然な音を作る

 

 

 

 

以上です。
発表者のみなさんお疲れさまでした。👏👏👏

 

感想

簡単な感想
・baba_sさんの「全ての作品で総合3位以内をいただいています」は強すぎる
・花倉みだれさんの外注の副次的効果でエターならないというのも良い、納得できるものができなくても出すというのはとても大切
龍神リウズさんの声めっちゃイケボデバッグに参加した方がエンドロールに載るというのも面白い試み

 

他の投稿作品はこちら

unityroom.com

 

 

今回も上位作品のリールを作成しました

www.youtube.com

 

 

間違っている箇所、消してほしいツイートがありましたらコメントにお願いします。

【Unity】ジスたんファイトで使った技術

第21回Unity1週間ゲームジャム、及びマスコットアプリ文化祭2021の振り返り記事です。
「ジスたんファイト」を作る上で使用したアセット、使った技術についてまとめておきます。

ゲームの概要

ジスたんファイト」はマスコットキャラクター「ジスたん」を題材にしたアクションゲームです。
アプリコンテストマスコットアプリ文化祭2021」に応募しています

 

Webでも遊べますが、画面タップを想定したUI配置などスマホ向けを前提として開発しています

 

Webブラウザで遊べるunityroom版Androidの2つがあります。

unityroom.com

play.google.com

 

 

 

使用アセットのまとめ

ジスたんファイトで使用したアセットのまとめ

「DOTween PRO」でUIアニメーション

いつもの定番アセット 説明いる?

UIアニメーションに使用

 

 

「Feel」で演出を作る

ゲーム演出を作成するアセット。このゲームのあらゆる演出で使用しています。
攻撃を当てたときのヒットストップ、画面揺れ、エフェクト再生、スローモーションなどなど

 

場面ごとに演出を登録してPlayFeedbacks()を呼び出すだけなので差し替えとかもめっちゃ簡単

 

過去に紹介記事を書いています。同じ手順で問題なく実装できました

raspberly.hateblo.jp

 

 

「Animancer Pro」でアニメーションを制御する

プレイヤーと敵キャラ両方のキャラクターのアニメーション制御に使用しています。
そのためAnimatorは使っていません!ごちゃごちゃしたステートマシンともおさらば!

 

使い方は簡単で
Animatorがアタッチされているモデルに、Animancer Componentと制御用のScriptをアタッチ。

f:id:Raspberly:20220410004959p:plain


ScriptからはAnimancerComponent.PlayでAnimationClipを指定するだけです。

using UnityEngine;
using Animancer;

public class EnemyAnimator : MonoBehaviour
{
    [SerializeField] AnimancerComponent m_Animator;
    [SerializeField] AnimationClip m_MoveClip;
    [SerializeField] AnimationClip m_AttackClip;
    [SerializeField] AnimationClip[] m_HitClip;

    public void Run()
    {
        m_Animator.Play(m_MoveClip);
    }

    public void Attack()
    {
        m_Animator.Play(m_AttackClip);
    }

    public void Hit()
    {
        var num = Random.Range(0, m_HitClip.Length);
        m_Animator.Play(m_HitClip[num], 0.3f);
    }
}

初めて使いましたがとても簡単でした
後で個別紹介記事を書くかも

 

 

「HighlightPlus」でキャラクターを強調する

敵が攻撃範囲内に入ったときに白く強調するエフェクトとして使用

 

過去に紹介記事を書いています、同じ手順で簡単に実装できました

raspberly.hateblo.jp

 

 

「Easy Save」でセーブ機能を作る

セーブ機能の実装に使用

kan-kikuchi.hatenablog.com

 

 

「AssetHunterPRO」で余計なアセットを削除する

開発終盤、余計なアセットを削除するのに使用

 

 

他アニメーション・エフェクト・UI・サウンド素材

なんか知らないうちにたくさん持ってたのでいろいろ使いました

Dancing Motionは最後のダンスシーンで使用

 

 

その他

UnmaskForUGUIでフェード画面を作る

Maskとは逆のことを行うアセット?です

github.com

タイトル画面のフェードインフェードアウトは、ジスたんの画像を切り抜いた画像を使っています。
これの実装に使用しました。

 

 

f:id:Raspberly:20220409013706p:plain

FadeCanvasにはFadeManagerをアタッチ、参照もそれぞれしておきます

f:id:Raspberly:20220409014837p:plain

 

ImageオブジェクトにはImageとMaskとCanvasGroupをアタッチ

f:id:Raspberly:20220409015108p:plain

 

UnmaskオブジェクトにはImageとUnmaskをアタッチ、Imageには切り取りたい画像を指定します
(今回はジスたんの画像)

f:id:Raspberly:20220409015136p:plain

 

LockオブジェクトにはImageをアタッチ

f:id:Raspberly:20220409015213p:plain

これで設定は終わり、
後はScriptでImageのCanvasGroup.alphaや、
UnmaskのScaleを変化させるだけでマスクを使ったフェードインフェードアウトができます。

www.hanachiru-blog.com

 

 

NCMB

定番のオンラインランキングを素早く作れるサービス

mbaas.nifcloud.com

ランキング部分のプログラムは、昔作ったゲームのやつをそのまま流用しました
(なおのちにやらかすことになる)

 

UniTask

実はちゃんと使うのは初めて
async/awaitのTaskを置き換えるだけでそのまま使えるくらい手軽で便利
でもCancellationTokenはよくわかってないニャンね...

qiita.com

 

 

やらかし

Beautifyを使うとなんかうまくいかない

最初はポストプロセスアセットに「Beautify 2」を使っていましたが、
WebGLビルド後に謎のエラーが出て動作させることができませんでした
検証する時間も余裕もなかったためアセット自体をオミット、今も原因はわかっていません

これに結構時間をとられました

 

オンラインランキングリセット

前述した通りオンラインランキングの部分は、かなり昔に作ったスマホゲームのプログラムを流用しました
このプログラムは「SystemInfo.deviceUniqueIdentifier」をIDとしてランキングに登録していましたが、
これはWebGLでは機能しないためオンラインランキングが壊れました

SystemInfo.deviceUniqueIdentifierではなく、初回起動時にランダムなIDを作成・保存しオンラインランキングのIDとして利用するような修正を入れましたが、オンラインランキングは一度リセットせざるを得ない状況に....
結果初期に遊んでくれた方のデータが全て吹き飛んでしまいました...

 

この対応で年を越したましたねェ...

今回一番大きい反省点です

 

 

 

Androidのビルド関係

Androidアプリを作ったのは、マスコットアプリ文化祭2017マスコットタワーバトル(現在は非公開)以来です
久々なので詰まったところをまとめておきます

Tweet機能の変更

WebGL版のツイート機能にnaichilabのプラグインを使用していましたがAndroidだとエラーが出るようなのでオミット。
unityroom専用なので条件コンパイルで呼び出さないようにしていましたが存在するだけでだめだったようです。

【Unity】 Androidでリリースするまでにやることメモ - 武0武/blog

別の方法で実装しました

 

KeyStoreの作成

[Unity]KeyStore作成メモー - Qiita

 

デバッグの無効化

【Unity2020.3】Google Play Consoleで「デバッグ可能なAPKまたはAndroid App Bundleをアップロードしました。」と出た時の対処 - 映画と旅行とエンジニア

64ビットの要件を満たしていませんと怒られた時

【Unity】Google Play の 64 ビット要件に準拠していません - Qiita

Android - UnityでIL2CPPのapkファイルをビルドしたい。|teratail

 

2回目以降アップロードできない時

【GooglePlay】APKがアップロード出来ない時の対処法1【Unity】 - D日記

 

プライバシーポリシーの作成

ここ参考

プライバシーポリシーの雛形(ひな型) | Webサイトの利用規約(無料テンプレート・商用利用可)

 

 

まとめ

ジスたんファイトを作る上で使ったアセットや技術、詰まった点をまとめました
アセットではFeelやAnimancerProが大活躍しました、使いやすく(重要)、欲しい機能や処理を簡単に実装することができました。
なんだかんだ過去に自分で書いた記事が大いに役立ちました。

 

UniTaskは(きちんと)使ったのは初めてでしたが、めちゃくちゃ便利でした
まださわりだけなのでもっと使いこなせるようになりたいところ

 

 

 

マスコットアプリ文化祭受賞結果

結果としてマスコットアプリ文化祭2021ではジスたん賞を受賞しました!🎉🎉🎉

こんなおっきいアクリルスタンドをもらえちゃいました🤗

 

 

 

以上です

 

【アセット紹介】Mesh Combine Studio 2 でステージを軽量化する【Unity】

今回はアセットの紹介をしていきます。
紹介するのはMesh Combine Studio 2
セルベースでメッシュを結合するアセットです。

 

 

お得なセール情報

現在アセットストアでは春のアセット祭りを開催中
500以上のアセットが50%オフになり、さらに割引率の高い数量限定のセールも行われています

今回紹介するMesh Combine Studio 2もセール対象アセットです

 

 

どんなアセット?

Mesh Combine Studioは、ゲームのパフォーマンスを劇的に向上させることができる自動グリッドセルベースのメッシュコンバイナーです。

空間をグリッドセルで分割し、結合することでパフォーマンスの向上を図る最適化アセットです

 

 

 

開発環境

Unity 2020.3.26f1

Mesh Combine Studio 2 ver2.996

 

Stylized Town ver1.0
ステージの背景として使用、SRPにも対応している街アセットです

 

ドキュメント

Mesh Combine Studio 2 Documentation |

 

 

インポートの確認

インポート完了時はこんな感じです。

基本的に使うのはMeshCombineStudioプレハブのみです

 

テストシーンの実行

TestScenes内に動作確認が行えるシーンがあらかじめ用意されています

URPの場合はAssets/MeshCombineStudio/TestScenes/Sourcesにあるマテリアルを事前に一括変換しておきましょう

 

Dynamic Object Exampleシーンを開いてみます
プレイしても最初は何も表示されません


シーン内のSpawnerオブジェクトを選択し

InspectorからObjectSpawnerコンポーネントSpawnにチェックを入れると

 

シーン内に50個ほどオブジェクトが生成されます。これはSpawnにチェックを入れるたびに生成されます

 

後はキーボードのTabキーを押すとMeshCombineStudioのオンオフを切り替えることができます

MeshCombineStudioが有効な間はFPSが改善されているのがわかります
プロファイラーで比較してみるとこんな感じ

 

無効時

 

有効時

Draw CallsとBatchesが大きく削減されています

 

 

 

実際に試してみる

ステージを配置して、Mesh Combine Studioを一から設定してみます

ステージの配置

ステージはこのアセットを使います、ちょうどセール中の街アセットです
付属のSampleシーンをそのまま使います

 

MeshCombineStudioの設定

Assets/MeshCombineStudioにあるMeshCombineStudioプレハブをシーンに配置します

このプレハブにアタッチされているMeshCombinerコンポーネントを編集していきます

 

結合したいオブジェクトを設定

SearchParentGameObjectsにシーン内にある結合したいオブジェクトの親を紐づけます

 

※今回は静的なオブジェクトを結合するので、
これらのオブジェクトは子も含めてBatching Staticが有効になっている必要があります

逆に動的なオブジェクトの場合、無効にしないとエラーがでます


結合対象の検索

結合する前に、結合対象のオブジェクトを検索する機能をやってみます(やらなくても結合はできる)
MeshCombinerにあるSearchボタンを押すと、
SearchParentGameObjectsに登録したオブジェクトの中で結合できるものを表示します

 

これはSceneビューにも表示されます

 

結合の実行

Combineボタンを押すと結合処理を実行します

 

結合処理に成功すると、
Inspectorの下の方に、結合前と結合後でどの程度違いが出ているかが表示されます

Batchesが大きく削減されているのがわかります

 

結合前後の切り替えはボタンで簡単に行えます
Enable Original Objectsを押すと結合前の元のオブジェクトを表示し、
Enable Combined Objectsを押すと結合後のオブジェクトを表示します

 

 

セルの大きさの調整

分割するセルの大きさはOutput Settingsで設定できます
セルが大きいほど描画回数は減らせますがオクルージョンカリングの効率は低下するのでシーンごとに設定が必要です

 

他MeshCombinerコンポーネントの細かいパラメータについてはドキュメントが参考になります

 

 

まとめ

・Mesh Combine Studio 2はScene内の空間をグリッドセルに分割し、メッシュを結合する最適化アセットです
・実際にステージを配置し結合してみましたが、Draw CallsとBatchesの削減を確認しました

今回は静的なオブジェクトを結合しましたが、
動的なオブジェクトや自動生成されたステージに対しランタイムで結合することもできます
プレハブをシーンに置いてボタンを押すだけで手っ取り早く最適化できる手軽さがオススメポイントです

 

 

以上です

 

他の方の関連記事など

www.asset-sale.net

zenn.dev

 

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。

【Unity】RiderFlowの紹介

今回はRiderFlowの紹介をしていきます。

 

RiderFlowとは

Riderでお馴染みJetBrains社が提供する生産性向上を目的としたUnity用プラグインです。
完全無料でRiderのライセンスがなくても利用できます。

youtu.be


大きく分けて6つの機能があります。

・Search Everywhere

・Find Usages

・Manage the GameObjects Hierarchy view

・Scene view management toolbar

・Refactor GameObjects

・Smart editor

 

各機能についてはこちら

www.jetbrains.com

 

 

 

実行環境

Windows 10

Unity 2021.2.17f1

RiderFlow.2022.1.0.129

※動作要件を必ずチェックしましょう

www.jetbrains.com

 

 

ダウンロードとインポート

公式サイトからunitypackageをダウンロードします

www.jetbrains.com

 

unitypackageのインポート後、ライセンス同意を求められます。
チェックを入れてInstallボタンを押します。

これでインポートは完了です。他に設定はありません。

問題なければ、Unity上部にRiderFlowが追加されています。

 

 

 

以下機能の紹介

1.Search Everywhere

プロジェクト内のあらゆるものを検索する機能です。
ショートカットキー(CTRL+ALT+N)で起動します。

検索欄に単語を打ち込むと検索結果がリストとして表示されます。
タブを切り替え検索先を絞ることもできます。
Prefabなら即座に選択され、Sceneならダブルクリックすることで開くことができます。

 

Hierarchyのオブジェクトを検索する時は、Current Sceneを選ぶことで現在開いているシーンのみを対象に検索できます。

 

 

詳しくはこちら

www.jetbrains.com

 

 

2.Find Usages

アセットが使用されている場所を検索する機能です。
Projectビューでアセットを右クリックし、
Find Usagesを選ぶとそのアセットが使用されている場所をウインドウで表示してくれます。

 

 

以下の例で見ると、
CubeMaterialというアセットが、TestシーンのCubeで使われているのが一目で確認できます。

 

詳しくはこちら

www.jetbrains.com

 

 

 

3.Manage the GameObjects Hierarchy view

Hierarchyビューを管理する機能です。
ゲームオブジェクトをグルーピングしたり、メモブックマークをつけることができます。

Section

Hierarchyビューのオブジェクトをグループ化する機能です。
Hierarchyで右クリックし、Create Sectionを選びます。

 

次に作成するSectionの名前と色(必要ならメモも)を設定して完了です。
Section名に日本語は使えますが、メモには使えませんでした。

 

使用例 (Cubesセクションを作成し、Cubeはここにまとめますよ的な)

 

Section自体を右クリックし、
Unmark Sectionを押すことでSectionを解除できます。(空のGameObjectになる)

Remove Sectionは、Sectionとその子オブジェクトを全て削除します。

 

Bookmarks

Hierarchyビューのオブジェクトの横にある星マークを押すとブックマークされます。
ブックマークすると常に星マークが表示されるので、目立たせるのに便利ですね。

もう一度星マークを押すと、ブックマークが解除されます。

 

Notes

Hierarchyビューのオブジェクトにメモをつける機能です。
星マークのとなりにあるペンのマークを押すとNoteが表示されます。

 

 

詳しくはこちら

www.jetbrains.com

 

 

 

 

4.Scene view management toolbar

Sceneビューを管理するツールバーです。Peekだこれ

4つの機能が用意されています。

 

Search and place assets

アセットの検索と配置を行う機能です。
Projectビューにあるアセットを検索し、D&DでそのままSceneに配置できます。

 

Create a new camera preset

Sceneビューのカメラの位置と角度をプリセットとして保存する機能です。

Explore camera presets

保存したプリセットを読み込む機能です。

複数の視点を即座に切り替えられます。

 

Explore bookmarks

Manage the GameObjects Hierarchy viewでブックマークしたGameObjectのみを表示する機能です。

 

 

詳しくはこちら

www.jetbrains.com

 

 

 

5.Refactor GameObjects

Scene内のGameObjectを別のGameObjectに置き換える機能です。

 

Hierarchyビューで置き換えたいGameObjectを右クリックしReplace GameObjectを選択。
(SceneビューのGameObjectを直接右クリックしてもOK)

検索ウインドウが表示されるので、置き換え先のGameObjectを選択しReplaceボタンを押して完了です。
もちろんUndoできます。

 

いくつかオプションが用意されており、
名前やタグや親子関係や位置角度スケールを引き継ぐかどうかを設定できます。

 

 

詳しくはこちら

www.jetbrains.com

 

 

 

6.Smart editor

即座にエディターを立ち上げコードを編集できる機能です。

 

Projectビューにある.csファイル、あるいはInspectorビューのコンポーネントを右クリックし、
Open Code Editorを選択するとエディターが立ち上がり、その場でScriptの編集ができます。

 

 

詳しくはこちら

www.jetbrains.com

 

 

 

まとめ

今回はRiderFlowを紹介しました。
アセットストアで有料で売られていてもおかしくないほど高機能です。

PeekやFavorites Tabsのような機能があるので、使ったことのある方ならスムーズに使いこなせると思います。
Peekはまもなく非推奨となるため乗り換え先に検討してもよさそうですね。

 

ぜひどうぞ

www.jetbrains.com

 

以上です。

 

 

他の方の紹介記事とか

qiita.com

zenn.dev

 

 

 

 

※間違っている箇所、わかりにくい所がありましたらコメントにお願いします。