Slide 1

Slide 1 text

暗闇の中の光と音 kugi(@kugi_masa) unity1week online共有会 #9

Slide 2

Slide 2 text

プロフィール kugi @kugi_masa 新卒2年目 ゲームプログラマ 趣味は4コマ漫画と壁登り アザラシを偽ったセイウチ

Slide 3

Slide 3 text

私と unity1week 「さがす」 アニマルハンター 「密」 蜜蜂 Cluster Bee 「ふえる」 Groundwater 「あける」 すきすきスキマん 「回」 NOA’s Project 「2」 Kani と Uni 「ちゅう」 诺亚的任务 「正」 正座ネコ 「そろえる」 Fxxxin Fashion Club 合計9回参加 うち4回共同開発

Slide 4

Slide 4 text

今回のゲーム ヒカリを集めてゴールを目指すゲーム サウンド制作:NaTsu Beats Glo󰉒 󰈎󰈞 t󰈊󰇵 Da󰈹k

Slide 5

Slide 5 text

アイディアの出発点 蓄光(燐光) 物質が光を吸収し、 その吸収したエネルギーによって 光を発光する現象 腐敗した生物から生じた黄リンが酸化する際に 青白い光を発したことから燐光と呼ばれる

Slide 6

Slide 6 text

ヒカリを「ためる」 ヒカリを吸収して(ためて)、 その吸収した(ためた)エネルギーによって 発光するゲーム 物質が光を吸収し、 その吸収したエネルギーによって 光を発光する現象

Slide 7

Slide 7 text

エネルギーの吸収と消費 ヒカリの粒子 ヒカリのカーテン エネルギーの吸収方法

Slide 8

Slide 8 text

エネルギーの吸収と消費 ためたエネルギーで移動 発光度合いが変化 エネルギー消費によるアクション エネルギーは運動量 エネルギーは光量

Slide 9

Slide 9 text

サウンドについて NaTsuさんが1つの曲を作曲し、それを3つに分解 エネルギーは音数 ① ② ③ ② エネルギーの割合に応じて 再生するトラック数を増やす ① ② ③

Slide 10

Slide 10 text

サウンドについて 自然な切り替わりにするための試み ● 再生位置を同期させるため、3つのAudioSourceを同時に再生 ● エネルギー段階が切り替わるタイミングで各AudioSourceの音量を調整 ● 切り替え時は線形補間で調整 E ① ② ③ ① ② ③

Slide 11

Slide 11 text

表現したいもの ● ためたエネルギーが別のモノに伝搬していく様子 ○ 移動による探索 ○ 発光表現 ○ 音楽の盛り上がり ● 暗闇の中で儚く消えていきそうだけど発光する光 ● 暗いけど暖かさを感じられる空間 ● 蓄光材質の質感

Slide 12

Slide 12 text

儚さの表現 ● 移動する力を失い停止 ● 発光の消滅 ● サウンドも無音に エネルギーがある状態との差をつける カメラ演出、光の減衰、音量 さまざまな部分でイージング関数を使用 線形補間よりも余韻に浸れた イージング関数チートシート

Slide 13

Slide 13 text

蓄光材質の質感 表面下散乱(サブサーフェススキャッタリング) 物質の内部に入り込んだ光が散乱され、その光が物質の表面に放出される 表面での光の反射 表面下散乱

Slide 14

Slide 14 text

表面下散乱を擬似的に表現 Fast Subsurface scattering shader in Unity URP for mobile by Enrique Ventura 仮想的な光源方向 光源方向 視線方向

Slide 15

Slide 15 text

今回のゲーム用に改変 ● ゲーム画面はほとんど真上からの視点 ● 暗闇のため、強めのディレクショナルライトは設置したくない カメラの後方に光源があると仮定して シーン上のライト方向ではなく、カメラ方向で代用 照り返しは真上にポイントライトを設置

Slide 16

Slide 16 text

マップ作成
 ヒカリの粒子の配置 Unityをもっと使いやすく!Unityカイゼン委員会! - Unityステーション by Unity Japan ● 数値フィールドで数学関数を用いる機能 ● 数学の力を借りる ○ 「美しい曲線」で検索 x=(1+cos(5*2*pi*#/25))*cos(2*pi*#/25) z=(1+cos(5*2*pi*#/25))*sin(2*pi*#/25)

Slide 17

Slide 17 text

ライティング設定 ライトマップとライトプローブのベイク ● カーテン位置にポイントライト、エリアライトを設置しベイク ○ ベイクに時間がかかるため、テスト時はライトマップサイズを抑える ○ 周辺にライトプローブを設置 ● 粒子は触れると消えるため、ベイクせずポストプロセス(Bloom)のみ ● 影については基本的にオフ HIGH QUALITY LIGHTING using Light Probes - Unity Tutorial by Brackeys

Slide 18

Slide 18 text

改善点 ● ライティング調整 ○ 発光度合いが強すぎるヒカリのカーテン ● BGMに馴染むSE ● クリアタイムによるスコア ○ ゆったりとした音楽や空間とは裏腹に、 焦らせてしまうタイム表示 ○ ヒカリの粒子を取りたくなる反面、 いかに省エネできるかになってしまった ○ そもそもスコア自体不要だったかもしれない

Slide 19

Slide 19 text

まとめ ● 現実世界の現象から着想を得てゲームを作った ● 表現したいものを詰め込むことができた ● 夫婦で共同制作できた Glow in the Dark / relaxing music by NaTsu Beats フルバージョンの曲も是非聞いてみてください!

Slide 20

Slide 20 text

Tha󰈝󰈕 y󰈡󰉊 󰇾o󰈹 l󰈎󰈻󰉄󰇵ni󰈝󰈈!

Slide 21

Slide 21 text

参考文献 ● Glow in the Dark ● イージング関数チートシート ● Fast Subsurface scattering shader in Unity URP for mobile ● Unityをもっと使いやすく!Unityカイゼン委員会! - Unityステーション ● Unity 2021.2で強化されたインスペクターの数式機能や、複数要素選択時の線形配置機能について ● HIGH QUALITY LIGHTING using Light Probes - Unity Tutorial ● Glow in the Dark / relaxing music