「Sympathy」 Phantasy Star Online 2の プロシージャルBGMシステム by セガ
- 2. 登場人物
小川卓哉 小林秀聡
プランナー サウンドクリエイター
今別府デニス幸生 増田 亮
プログラマー プログラマー
- 10. PSOBGMの歴史
• ファンタシースターオンライン(DC)でBGMの切り替
えシステムを実装。初期は60〜70個のパーツ、
1パーツは3〜4秒(4小節)
• ファンタシースターZERO(DS)で、MIDIを使った
BGMシステムを導入
• 小節ごとにMIDIファイルを作成、それを連結して再
生した
• また、SMFへテキストコマンドを埋め込み、ゲーム
中の再生時に実行することにより、プログラマの手
を介さずに様々な再生を可能にした。→このときの
再生テクニックが今回にも生かされている
- 13. Phantasy Star Online 2のBGMは
クリップ
という数秒程度のサウンドファイルの集合体です。
一曲あたり…
クリップ クリップ
クリップ クリップ クリップ
クリップ
クリップ クリップ クリップ
クリップ
クリップ クリップ
クリップ クリップ
クリップ クリップ
クリップ クリップ
クリップ クリップ クリップ
クリップ クリップ
クリップ
- 14. クリップはこんな風に再生します
余韻部分を重複して再生し自然につなげています
余韻
クリップ クリップ
同時再生 クリップ クリップ
クリップ クリップ
クリップ クリップ
「1小節」
株式会社 CRI・ミドルウェア様のCRI ADX2を使用させていただいています。
- 15. フレーズ
クリップがいくつか合わさって、 クリップ
同時に再生
「フレーズ」になります。 クリップ
クリップ ←条件によって再生 etc.
楽章
フレーズがいくつか並んで、
「楽章」となり… フレーズ フレーズ フレーズ
パート
「楽章」がいくつか並んで、
「パート」となります。 楽章 楽章 楽章
- 16. 「パート」=Aメロ、Bメロ、サビなどに対応
メロ1パート メロ2パート サビパート
楽章 楽章 楽章 楽章 楽章 楽章 etc.
再生時は
メロ~サビのパートを につなぎ合わせます
クエスト開始 メロ1 メロ2 サビ前 サビ1 サビ2 メロ3 ・・・
1コーラス
- 17. シリーズ伝統の戦闘BGM切替
戦闘が始まった!⇒切替楽曲を挟んで戦闘楽曲へ
楽章 楽章
非戦闘楽曲 フレーズ フレーズ フレーズ フレーズ
非戦闘→戦闘 楽章 楽章
切替用楽曲 フレーズ フレーズ フレーズ フレーズ
楽章 楽章
戦闘楽曲 フレーズ フレーズ フレーズ フレーズ
自然で素早い切替のミソ:
・楽章ごとに楽曲切替用のフレーズを用意
・「フレーズの切れ目」から「楽章の切れ目」につなげる
- 24. オンラインゲームは同じマップを
・ にわたって
・ も
遊ぶ
同じBGMじゃあ飽きますよね
同じBGMが嫌なら、毎回違うBGMにしたら良いじゃない。
――マリー・アントワネット
- 25. 仕組み1
楽章 楽章 楽章 楽章 楽章 楽章
仕組み2
楽章 楽章 楽章 楽章 楽章 楽章
仕組み3
フレーズ フレーズ フレーズ フレーズ フレーズ フレーズ
次の楽章へつながるように最後のフレーズは固定
- 26. 仕組み4
再生するごとにランダムにクリップを選択
クリップ クリップ
クリップ
クリップ クリップ
仕組み5
同じ個所をN回目に再生したときだけ再生されるクリップ
パート
1 クリップ クリップ クリップ
2 クリップ クリップ クリップ
3 クリップ クリップ クリップ
- 27. 5つの仕組みで
聞くたびに違う曲に!
しかしデータ量は恐ろしいことに…
1マップにつき数千クリップ
クリップをすべて繋げると1~2時間に及ぶものも
- 28. ランダムクリップの再生デモ
・ を繰り返し再生
・ → 楽章の移動時、
パートがループした時に
クリップがシャッフルされる
・ が同時再生
・ は再生しない
・水色枠:オケ、アンビエント
・赤色枠:フレーズ、効果音
・黄色枠:リズム1
・緑色枠:リズム2
- 30. おさらい
メロ~サビのパートを につなぎ合わせます
クエスト開始 メロ1 メロ2 サビ前 サビ1 サビ2 メロ3 ・・・
1コーラス
基本の流れ
メロ サビ
サビ前
って一体なんやねん
- 31. どのパートを再生しよう?
やりたいこと:
ゲーム内の盛り上がりをBGMで補強したい
でも、Phantasy Star Online 2は
マップがプロシージャル生成
敵がプロシージャル配置
最大12パーティー同時参加
ゲームの盛り上がりとは言っても、あまりにも複雑。
- 32. 近くのブーストエネミーの強さ
撃破した小/中ボスの強さ
パーティーメンバーの数
ヒーロー度
他パーティーの人数
クエスト中にパーティー参加した人数
PSEバースト中か 盛り上がり度
近くのエネミーの強さ
自キャラのHP ピンチ度
パーティーメンバーのHP
近くのエネミー数
どれだけゴールに近づいたか
Eトライアル中か
- 36. 楽曲間のつながりについて
• 非戦闘曲←→戦闘曲をつなげるために
• 1.非戦闘、戦闘曲からの引用。
• 2.オリジナルのフレーズを制作する
• 3.効果音的なものでつなぐ
• 非戦闘→戦闘曲は戦闘曲のリズムを
• 戦闘→非戦闘曲は通常曲のリズムを
- 37. 遷移楽曲の作り方一例
直前のパート
戦闘曲が再生中
最初のフ
レーズ
フレーズ フレーズ
切り替え先(次)のパート
戦闘→非戦闘曲 非戦闘曲を再生
最初の 最後の
フレーズ フレーズ フレーズ フレーズ フレーズ
非戦闘曲
最後のフ
フレーズ フレーズ レーズ
全体的には、過去作品と比べて余韻を含んだストリームの再生が
可能になり、更にそれぞれのフレーズをつなげやすくなった。
- 43. 実機映像をご覧ください(1)
戦闘曲⇔非戦闘曲の切替
特殊状態による曲調の変化
ポイント!
遷移楽曲を経て
自然に切り替わるBGM
ゲーム内の状況変化
→関連パラメータの変化
→曲調の変化
という流れ
- 44. 実機映像をご覧ください(2)
ボス戦における戦闘演出の例
ポイント!
脚を破壊して転倒すると変化
起き上がる時に変化
脚は全部で4本あり、1本破壊する
毎に徐々に盛り上がっていく
ピンチ状態
- 46. おまけ:実装のTips
• クリップの再生条件、つながりの条件はとても複雑。
BGMを聞きながら頻繁に変更したくなります。
• 処理落ちしていても止めるわけにはいきません
(ロード中もそのままBGMを流しています)
• Phantasy Star Online 2では、専用スレッドにて
Luaで書かれたステートマシンを動かして制御して
います。
⇒スクリプトで書くにも複雑すぎたので、最適解ではない
• GUIで高速なステートマシンが書けるような環境が
あればベター
- 47. まとめと展望
• Sympathyの3つの柱を実現
– 自然な遷移
• 遷移位置の制限、遷移楽曲、急激戦闘楽曲
– 飽きないように
• シャッフル/スキップ、ランダム/N回目クリップ
– プレイヤーを盛り上げたい
• 多様なゲーム内状況を「盛り上がり度」に集約
• これからの展望
– ランダムの中から、いかにしてより印象に残るシーン
を作り出すことができるか
- 50. ところで「戦闘」って?
Phantasy Star Online 2のマップは
プロシージャル生成。
こんな風に「チップ」を並べて
作られています。