Instrument As A Space制作記
cluster民のみなさま、こんにちは。
そしてcluster大加速祭2021 ワールド制作チャレンジに参加したみなさま、おつかれさまでした。24時間を存分に楽しむことができましたでしょうか。私はとても楽しかったです。
『未来の○○』というテーマのもと、自分なりの解釈をワールドとして形にできたので、とても満足しました。また、ありがたいことに制作したワールドを癒やされ部門にノミネートしていただきました。身に余る光栄、嬉しい限りです。
制作者が自分しか知り得ないような文脈をごちゃごちゃと付与したわりに、説明不足の感が否めないワールドになってしまいました。そこで、ワールドを作ったときに考えたことや工夫したことを文章にまとめておきたいと思います。未来の自分自身、仕組みに関心がおありの他のクリエイターの方、訪問したけどちょっとモヤッとした方などの一助となれば幸いです。
どんなワールド?
- 空間そのものが、音を奏でるためにつくられています。
- ただし、生み出される音をプレイヤーがコントロールするすべはありません。音の石を投げ入れて以降、すべては偶発的に進行します。
ワールド名ですが、略してIaaSです。分かる人には分かるはず。
コンセプト
これは未来の楽器です。
以下の内容は私の想像です。歴史的根拠は皆無です。
人工的に欲しい音を鳴らす道具である「楽器」が現れるより昔、人類にとって音楽は偶発的なものでした。当時の人たちは、自然の中で偶然発生した音の中に心地よいと感じる何らかの秩序を見出していたはずです。
- 川が流れる音
- 風が木の葉を揺らす音
- 鳥がさえずる音 etc...
一方、音を制御する手段を手に入れた現代の我々は、楽器やコンピュータを用いて好きな音を鳴らしたり、それらを組み合わせて音楽を奏でたりできるようになりました。もはや環境の偶発性に頼らずとも、音楽を自在に楽しめるようになったわけです。
さて、未来の我々はどのように音を楽しむのでしょう?音を制御し尽くした人類が次に手にするのは、「音が発生する環境そのものを自在に設計する能力」ではないでしょうか。(現に、今回の大加速祭では100以上のワールドが新たに誕生しています!)
今回は、そんな音が発生する環境の一例として、かつて人類にとって音楽の全てであった「偶発的に音楽が発生する空間」をつくってみることにしました。
偶発性、どこ?
このワールドに込めた偶発性要素は主に以下の3つです。
偶発性要素1:音の選択
本来コード進行にはある程度ルールがあるのですが、このワールドでは上記の10個の和音がランダムに再生されます 。したがって、有名な進行をいくら望んだとしても実現するか否かは運次第ですが、たまに絶妙な位置にサブドミナントマイナーが入ったりしてオッという気持ちになります。そうやって楽しむことが想定されたワールドです。
偶発性要素2:音が止まるタイミング
石が跳ねる方向もランダムです。8方向のうち、直前と同じ方向を除いた7方向から等しい確率で選ばれます。石がステージから落ちると音が止まるので、音が途絶えるタイミングも制御しづらいようになっています。
偶発性要素3:波紋
石が跳ねる位置がランダムに決まるので、水面に現れる波紋が形作る模様もランダムです。また、短時間で消える方の波紋の輪の半径も実はランダムです。同じ模様が再び現れる確率はほぼゼロです。
ちなみに音の選択や石が跳ねる方向の選択は石の落下位置などに依存していません。。仮に全く同じ座標に同じ速度で石を投げ入れたとしてもランダムに音が鳴り、ランダムに石が跳ねます。
仕組み
石が跳ねる仕組み
HitGround受信時、石が消滅すると同時に次の石が生成されています。その際、出現地点が水面よりも高い位置になるように調整すると、たとえば出現した石が即Collide判定を受けて次々と石が生成されるみたいな事故を防ぐことができます。
また、次の石の出現位置を鉛直上方向に固定するため、RotationConstraintを用いてstaticなオブジェクトと結びつけ、石の回転を抑制しています。
生成した石は、オリジナルの石のPrefabVariantです。OnCreateItemTriggerでAddInstantForceItemを叩き、水面から跳ねるような動作をさせています。力の方向を8方向に設定した石をそれぞれ用意し、ItemTriggerLotteryでこのうちひとつを選択しています。
石がRespawnする仕組み
ステージ外に落ちた石はWarpItemGimmickで初期地点の塔の上方に移動させています。オリジナルの石とPrefabVariantで作成した石の違いはCreate時に力を加える処理だけなので、それが動作したあとならオリジナルの石と同じように扱っても問題ありません。
音がなる仕組み
HitGround受信時、音を鳴らすためのオブジェクトを生成しています。ItemTriggerLotteryでどのコードを鳴らすか決めてます。ここでもPrefabVariantを使って、おおもとのオブジェクトの編集内容が同期するようにしています。また、音が十分鳴り終わったタイミングでDestroyさせています。
波紋が現れる仕組み
HitGround受信時、波紋を表現したParticleSystemをもつオブジェクトを2種類生成しています。ParticleSystemの設定では、サイズをぶわーっと上げつつ透明にしたりしています。
- 短時間で消える3重リング
- 長時間残る1重リング
鳴らしている和音が全て四和音だったので、リングの数は合計4つにしました。ついでに、GlobalにもHitGroundを飛ばして雲からも波紋を出しております。(蛇足だったかな。。)
謝辞
いつか自分の作ったものが何かに引っかかったら、そのときはまとめ記事の中に謝辞を書きたい、と心に決めておりました。お世話になったすべての方を記すときりがないので、作品の完成に特に寄与したと私の方で判断した方のみとさせていただいております。
@t_furuさん
今回はPrefabVariantを非常に多用する制作となりました。clusterワールド制作ゆるゆる勉強会でt_furuさんがPrefabVariantについて言及していなければ、おそらくイベントのアップロード期限に間に合わなかったことでしょう。技術的知見の共有、いつも大変助かっております。(私も見習わなければ、、、)
@tanuki_realityさん
石や雲が発している波紋をパーティクルで作ろうと思ったのは、たぬきちさんの「パーティクルエフェクトの作り方」講座でパーティクルでできることの豊富さや可能性を体感したのがきっかけだったりします。もし講座に遊びに行ってなければ、苦し紛れの脳筋アニメーションで何とかしようとして、多くの時間を費やしたんじゃないかなと思います。
@heputaaan777さん
実は、いちこんピアノコンサートで語っていた「空間が音楽に同期するような音楽体験」というアイデアがこのワールドの着想の火種になってたりします。手を動かさずコンセプトを考えるだけの時間が短く済んだのは、アイデアの足がかりがあったおかげだなと振り返って思います。
@sakurasaku_1223さん
cluster.mu * Realityは過去の配信リンクに404を返すようなのでコチラ
土曜日の作業配信助かりました。たまたま作業がダレそうなタイミングだったんですが、そういうときに並走してる人がいるのは励みになりますね。新しいプラットフォームや踏み込んだことのない領域に果敢に挑んでいく姿勢、尊敬します。
その他、cluster社をはじめ数多くの人にお世話になりました。巡り合わせに感謝。
余談:
音の石が跳ねて音楽を奏でるの楽しい!
— You Aoi (ヨウ アオイ)@∞cluster実況系バーチャルツイッタラー(仮) (@5A0R1_T0R1NA) April 8, 2021
ぶつかってリズムを変えたり、追いかけ回して捕まえたり、未来の楽器の未来はまだあるはず
Instrument as a Space https://t.co/wq9CiKGsJn #cluster pic.twitter.com/tfYTm7zbfy
石掴まれとるやないかい高校校歌
石掴まれとるやないかい 偶発性とは何だったのか
石掴まれとるやないかい Grabbableではあるけれども
テストプレイで気づかないとか cluster下手とちゃうんか
石掴まれとるやないかい 石掴まれとるやないかい
ああ我ら 石掴まれとるやないかい高校
special thx: You Aoiさん
使用アセット:
- All Sky Free - Cartoon Base BlueSky
- RAKURAIさんの水シェーダー