Slide 1

Slide 1 text

Α͑͜ Godot 4.3 と学ぶ インタラクティブミュージック @yokoe24

Slide 2

Slide 2 text

ࣗݾ঺հ よこえ • X (Twitter): @yokoe24 • 出張写真撮影のラブグラフCTO (3年前の2021/01入社) • Rails, JavaScript, Go とか • 4月からグロービス経営大学院に 入学したので26卒の院生です! • 地面師たちを見た

Slide 3

Slide 3 text

̍ Godot Engine とは

Slide 4

Slide 4 text

Godot Engine ͱ͸ • オープンソースのゲーム制作エンジン • 2Dゲームも3Dゲームも作れる! • スマホゲームもPCゲームも作れる! • 最近はUnityから 移行してきた人も!

Slide 5

Slide 5 text

࠷৽൛4.3ͷϦϦʔεϊʔτʹ ؾʹͳΔݴ༿͕…… ( https://godotengine.org/releases/4.3 )

Slide 6

Slide 6 text

ΠϯλϥΫςΟϒϛϡʔδοΫʹ ରԠ……ͩͱ……?!!

Slide 7

Slide 7 text

̎ インタラクティブミュージックとは

Slide 8

Slide 8 text

ΠϯλϥΫςΟϒϛϡʔδοΫ • ゲームのユーザーの行動に合わせて 展開していく音楽のこと • あまりにも長いので 以降では略して「IM」と記載します • ゲーム制作サークルの先輩でもある じーくどらむすさんが積極的に広めた

Slide 9

Slide 9 text

IMΛ஌Ζ͏ʢجૅ஌ࣝʣ • CEDEC 2023 の講演より • https://youtu.be/6diE0QLI0HM? si=T_7rXALcTpKRHnNI&t=384 • 映画のような、シーンに合わせた盛 り上がりを作るのがIMの役目 • 楽器編成の変化・展開の変化・テン ポ変化・エフェクト変化などがある

Slide 10

Slide 10 text

IMΛ஌Ζ͏ʢ࣮ࡍʹௌ͜͏ʣ • マリオカート8DXを聴こう • https://youtu.be/g2_98sl5e2Y? si=UyqIkbr2cvpc0Mop&t=2258 • メニューが進むとともに増える楽器 • 場所で大きく変わる楽器編成 • 赤甲羅が当たるとやむドラム隊 • サンダーや最終ラップによる変化

Slide 11

Slide 11 text

̏ Godot Engine 4.3 で出来ること

Slide 12

Slide 12 text

ϤίͷભҠ

Slide 13

Slide 13 text

ϤίͷભҠ • AudioStreamInteractive により、 楽曲Aの再生位置と同じ位置で 楽曲Bの再生を開始する、 自然な遷移がしやすくなりました • AudioStreamPlaybackInteractive#swi tch_to_clip で遷移の合図を送ります

Slide 14

Slide 14 text

λςͷભҠ

Slide 15

Slide 15 text

λςͷભҠ • AudioStreamSynchronized により、 楽曲A, B, C を同時に再生しながら 音量の調整をすることで楽器の増減を 演出しやすくなりました • ただし、音量の調整はスクリプトを 書く必要があります

Slide 16

Slide 16 text

λςͷભҠ • また、使用していた感じ、 OGG ファイルを同時再生する 単純な作りになっているのか、 スマホなど低スペックの環境では 音楽再生が途切れてしまいやすい 問題が起こりました

Slide 17

Slide 17 text

̐ 実際にゲームをどう作るか

Slide 18

Slide 18 text

ͳʹΛ࡞Δ͔ߟ͑Δ • Godot Engine を使うこと自体が 自分は初めてだったので、 作りやすそうな「ブロック崩し」を テーマにすることを考えました • ネットを探してみると Godot 3 ながら も親切なチュートリアルがありました

Slide 19

Slide 19 text

ը૾ૉࡐͷ༻ҙ • Unity のようにアセットストアとの 統合を Godot はされていないので、 自分で作ることにしました • 壁はブロックを長く伸ばすことで実現

Slide 20

Slide 20 text

BGMͱSEͷ༻ҙ • 口頭で説明します • https://youtu.be/gHlLTV_Kgfg • いくつかのトラックごとにBGMを出力 • ゲームオーバー時のBGMはどのループか らでも違和感なくつながるように作成 • SEは不協和音にならないように

Slide 21

Slide 21 text

ίʔσΟϯά͕Μ͹Δ • GDScriptという独自言語での実装をが んばります(C#やC++でもコーディング できるんだけど、Web用に出力したい場 合は現在はGDScriptの一択) • メイン処理: https://github.com/nekonenene/ godot-brick-breaker/blob/v0.3.1/scenes/main.gd#L48-L81

Slide 22

Slide 22 text

̑ 作ってみての感想

Slide 23

Slide 23 text

ศར͕ͩɺ·ͩߥ࡟Γ • CRI ADX LE や Audiokinetic Wwise などのミドルウェアを立ち上げず Godot だけで完結するのは体験がいい • 一方でWebでのプレイなどを考えると 負荷は小さくしたいので、CRIの独自 コーデック「HCA」は外せないかも • Godot に ADX LE が公式対応の雰囲気アリ

Slide 24

Slide 24 text

ศར͕ͩɺ·ͩߥ࡟Γ • AudioStreamInteractive の Stream の1つに AudioStreamSynchronized を設定した場合に get_playback_position() が 0 にな り続けるなどバグがまだ色々ある • 結果、ヨコの遷移は自分で実装した……

Slide 25

Slide 25 text

͓ΘΓʹ • 曲を作る側からすると、 IMはユーザーの行動に合わせて そのとき1回限りの音楽が生成される という点で魅力的! アドリブで。 • Godot は OSS なので、さらなる改善 を自身の手で出来るかも!?