Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 なので、さらなる改善 を自身の手で出来るかも!?