よく使うパッケージ一瞬で入れるスニペット
以下をmanifest.json
の"dependencies" : {
の次の行から入力する。
"com.annulusgames.lucid-audio": "https://github.com/AnnulusGames/LucidAudio.git?path=/Assets/LucidAudio", "com.annulusgames.lucid-editor": "https://github.com/AnnulusGames/LucidEditor.git?path=/Assets/LucidEditor", "com.cysharp.messagepipe": "https://github.com/Cysharp/MessagePipe.git?path=src/MessagePipe.Unity/Assets/Plugins/MessagePipe", "com.cysharp.messagepipe.vcontainer": "https://github.com/Cysharp/MessagePipe.git?path=src/MessagePipe.Unity/Assets/Plugins/MessagePipe.VContainer", "com.cysharp.unitask": "https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask", "jp.hadashikick.vcontainer": "https://github.com/hadashiA/VContainer.git?path=VContainer/Assets/VContainer#1.13.2",
最高のインディーゲーム音楽(とそのゲーム)
※『Unityゲーム開発者ギルド Advent Calendar 2023』3日目の記事です。
※可能な限り配慮してますが、曲を紹介している以上ネタバレを含む可能性があります:『OMORI』,『アンリアルライフ』, 『A Space For The Unbound』
私はいわゆるインディーゲームが大好きです。少人数での作成ゆえ、物凄く個々人のパワーや個性が出やすいのが、インディーゲームの特長だと思っています。
インディーゲームは、音楽も独特かつ魅力的です。今回は、私が好きなインディーゲーム音楽を偉そうな小言交じりに紹介しようと思います。
なんか、音楽からゲームに入るっていう流れもあっていい気がしてます。
- OMORI
- アンリアルライフ
- Milk inside a bag of milk inside a bag of milk
- Milk outside a bag of milk outside a bag of milk
- HELLTAKER
- A Space For The Unbound
- Celeste
- unityroomのゲーム
- 最後に
OMORI
最高のストーリーゲーム、OMORI。音楽がめちゃいいことでも有名です。ゲームは1周半しました。ゲームとして超オススメ。人生。
曲の特徴
独特な音が多いです。
反面、キャッチ―な曲はしっかりキャッチ―です。
My Time
↓微ホラーかも注意。
トレイラーにもなっている"My Time"。曲自体は2013年に製作されたもので、そこからトレイラーに採用された楽曲。元々インディーゲー用として作られてないので、ちょっとタイトルからは外れてるかもしれませんが、いい曲なので。
こんなにテーマにぴったりな曲探したOMOCAT氏…すごすぎ
World's End Valentine
道中の登場キャラである、スイートハートお嬢様の曲。テンションぶち上げる構成が凄い。
お嬢様特有の完璧主義でウザい性格(作中表現あり)を甲高いチェンバロで表現しています。
このゲームは、特徴的な楽器がキャラクターの代名詞として表現されていることが多いので、そこに注目して聞いてみても面白いです。
A Home For Flowersシリーズ
ゲームって、こういう「同じ曲を複数のシーンでアレンジして描くやつ」が醍醐味ですよね。
Daisyのしっとりした古っぽいピアノが1番好き。
アンリアルライフ
最高のストーリーゲーその2。ゲームは2周しました。超オススメ。
曲の特徴
静謐な物悲しさが存在するような、そんな雰囲気が統一されてて凄く素敵なサントラです。
本当にとにかく統一感がある。ゲームやった後だと、曲聞くだけで景色がパッと浮かんでしまう。
幻想図書館
名前の通りちょっと奇妙な図書館の探索BGM。シンプルだけどめちゃ好き。
Disc1, 2で分かれていて、後半の曲も好きなのですが、ちょっとネタバレ要素もあるので伏せます…。
Milk inside a bag of milk inside a bag of milk
何ていうか、いろんな意味でつらい世界観のノベルゲーです。精神に来るタイプのゲームです。すぐ終わります。3周しました。オススメ。
曲の特徴
シンプル。シンセにリバーブガン掛けみたいな音が多め。
VISUAL NOVEL!
謎の語り掛けシーンのBGM。こういうシンプルなシンセがディレイとかリバーブ(残響音)かけまくって流れてるのに弱い。
このレベルのシンプルさって、インディーゲーならではと思います。
Milk outside a bag of milk outside a bag of milk
続編。狂気度はそのままに、ビジュアルが分かりやすくなりました。アニメーションのカットイン等も登場し、より没入感が増した作品です。オススメ。
曲の特徴
前作よりは曲のバリエーションが豊富。
シンプル怖い音も増えた。
thinking...
前作と変わらない雰囲気。一貫性が凄い。ずっとこんな感じだから次第にまいってきます。でもそこがこのゲームのいいところ。
mirror music
本当に一貫してほぼ全部環境音的な音楽(Ambient系)なんですよね。プレイしてて次第にぼんやり辛くなってきます。
HELLTAKER
かわいいサキュバスと倉庫番できるゲーム。フリーゲーム。かわいい。オススメ。
曲の特徴
ノリノリ。4つ打ちの王道キック。
Vitality
道中はほぼこれが流れている。シンプルな4つ打ちに合わせて常にみんながダンスしているのめっちゃいい。
A Space For The Unbound
30年前のインドネシアが舞台のストーリーゲーム。強いメッセージ性があります。1周半。超オススメ。
曲の特徴
生音系が多い。シンセ少なめ。
Within the Dream
単純に曲としてよすぎ。
An Ode to Life
単純に曲としてよすぎ。
Celeste
高難易度美麗ドット絵2Dアクションゲームです。インタラクティブな音楽も魅力。単純にゲームとして面白すぎる。超オススメ。
1周半。
曲の特徴
8-bit系の音や、オーケストラ系の生楽器を組み合わせた楽曲が多い印象。あとは定番のピアノソロ。
8-bitの音でシネマティックに表現することも多いです。
絶対ドラム好きが書いてる。ドラムの音がいい。
First Steps
1ステージ(A面)BGM。これからの物語への高揚感が高まるようなBGMです。
「1ステージこんな感じだけどBGM書いて」と言われてこれ書けるの天才過ぎる…
Forsaken City
1ステージB面BGM。全体的に音が軽く、短めになっているのが印象的です。
1ステージA面より忙しいギミックが多く、ステージ長が短いというB面の性質とピッタリすぎる曲調です。
unityroomのゲーム
unityroomにていい曲を紹介。
フレノイド
シンプルで耳に残りやすいメロディ。寒そうなゲームの雰囲気にぴったりな音色。キャラによって違うBGMがインタラクティブに流れる。全部丁寧すぎる、最高。
Horizontal Mirror
シンプルなサイン波系の音を使った落ち着きのある音楽が、シンプルで落ち着きのある世界観に完全にマッチしています。
バック・グラウンド・メモリー / 初音ミク
もはやMVなんですが、クオリティが高すぎるので紹介。いい曲だし、レパートリーがちゃんとある。そして雰囲気が統一されててSEが浮いている感もない。
水中でリトライするときの音が好き。
Let's Splash!!
"The Splashers"がゲーム性に完璧にマッチしてる。シンプルなリズムゲーに求められてる要素が全部入ってる。
こういうの作れるようになりたい…
最後に
最初は『ゲーム制作1年目を振り返ろう!!』で決まり!これで行こう!行くべきだろ!と思ったのですが、なんだかあんまり大したことも浮かばなかったので、こういう記事にしてみました。
一言で振り返ると、「とりあえず作ったものを上げられるようになった」のが非常に大きい一歩でした。このハードルが高い人間だったので、ギルドには感謝です。
来年も、来年こそもっと、ゲーム作りしていきたいですね。
Rayが当たらないときに確認すること
対象のオブジェクトにColliderをつけているか(2敗)
座標系が正しいかを確認する
- 普通のオブジェクト(sprite等)には
ScreenPointToRay()
- uGUIは
eventData.position
のままでいい
LayerMaskが正しいか確認する
- 動かなかったらとりあえずレイヤーの引数は書かなくていい
向きが正しいか確認する
- 大抵は
Vector3.forward
かray.direction
Raycast2DでuGUIを取得する方法
positionの扱いに注意。uGUIでないオブジェクト(Sprite等)はworld座標に直す必要があるが、RectTransformの場合は必要ない。
var dropPosition = eventData.position; if (Camera.main == null) return; // _layerはなくてもいい var hit = Physics2D.Raycast(dropPosition, Vector2.zero, Mathf.Infinity, _layer); if (hit.collider == null) return; var isHit = hit.collider.TryGetComponent(out SomeUGUIClass someUGUIClass); if (!isHit) return; // その後の処理
【Unity】AddressablesでComponentをロードすることは(多分)できない!
例
以下のようなコード。
private async UniTask Load() { var handle = Addressables.LoadAssetsAsync<HogeComponent>("AssetsPath", null); await handle.Task; if (handle.Status == AsyncOperationStatus.Succeeded) { // 何らかの処理 } Addressables.Release(handle); }
このようなコードだとエラーが出てしまいます。
どうやらLoadAssetAsync
では、コンポーネントクラス等は直接ロードできないようです。
解決法
GameObject
やScriptableObject
等はロードできるので、そこから対象のComponent
を取得しましょう。
private async UniTask Load() { var handle = Addressables.LoadAssetsAsync<GameObject>("AssetsPath", null); await handle.Task; if (handle.Status == AsyncOperationStatus.Succeeded) { foreach (var res in handle.Result) { var component = res.GetComponent<HogeComponent>(); // 処理 } } Addressables.Release(handle); }
Here is ONE Button 完全クリア解答例
About
各ステージの解答例です。各ボタンの意味・クリアの法則だけを知りたい場合は以下の記事をご覧ください。
目次
Stage 1
両扉開けて赤を押す。
Stage 2
扉を閉じ、赤を押す。
Stage 3
以下、番号を付けて説明する。両扉はアルファベットで表す。
上図の状態(両扉が全部開いた状態)から、4a2の順に押す。
Stage 4
上図から、b4a1の順。
Stage 5
243a2
Stage 6
416a1
Stage 7
a34a6a4
Stage 8 ~ Stage 11
押すだけ。
Stage 12
Green End
緑のみ見える状態で押す。ドアを通る。
Red End
赤を同様にして選ぶ。
White End
白を同様にして選ぶ。
Earth End
青を押す。柄が地球になるのでそれを選ぶ。
Vanish End
柄が地球になった青ボタンが見える状態で白ボタンを押す。
Here is ONE Button 詰まったとき用メモ
Here is ONE Buttonと言うゲームをunityroomにて投稿しましたが、ゲーム内ヒントが少なすぎるので詰まったとき用のメモを残します。
要約:ゲーム内で誘導する気力がもうないので許して
クリア条件
ボタンが1つしか見えない状態でボタンを押すとドアが開く。それに入ると次のステージへ。
各ボタンの意味
- 赤:なし
- 白:白以外の同色かつ同じ状態(押されてる、押されてない)のボタンをすべて消す
- 緑:押されたボタンを押されてない状態に戻す
- 青:向いている方向にあるボタンに変化する
- ?:?
ステージ数
実質7ステージ。
エンディング分岐
5つ。