サウンド Mod

提供:ck3wiki
ナビゲーションに移動 検索に移動

※2025/10/6、英wikiよりkagi翻訳を通しました。機械翻訳なので一部不自然な日本語があるかもしれません。ぜひ編集してくれるとありがたいです。

必須の無料ツール: FMOD Studio 1.10.20

このバージョンを推奨します。新しいバージョンは CK3 1.16 でクラッシュの原因になることがあります。

サイトでは、FMOD Studio を選び、Older を選択してドロップダウンから 1.10.20 を探してください。「非サポート」と表示されますが、私たちの環境では問題なく動作します。


FMOD とは?

FMOD は複数のサウンドをイベントにまとめ、バンクに保存してゲームで再生できるようにするツールです。

ゲームのバンクから wav ファイルを抽出するには FMOD Bank Tools を使用します。(ダウンロードには Nexus のアカウントが必要)

音楽は wav を直接追加できますが、効果音はできません。FMOD のバンク経由でインポートする必要があります。

また、ゲーム起動中にオーディオファイルをリロードすることはできないため、再起動が必要です。

サウンドをインポート[編集 | ソースを編集]

すべてセットアップ済みの FMOD テンプレートを用意しています。これが最も簡単な方法です。

screenshot of FMOD, creating an event with Windows XP error sound
イベントの作成
Screenshot of FMOD, assigning a new Windows XP error event to a Master bank
イベントをバンクに割り当て
Screenshot of FMOD, a Windows XP bank with Windows XP error event
イベントを含むバンク
Screenshot of a mod with new sound files, with two banks inside sound/banks folder
Mod のファイル構成

テンプレートを使う場合[編集 | ソースを編集]

  1. Github からこの FMOD プロジェクトテンプレート をダウンロードします。
  2. 解凍し、'1.10 fmod ck3 template.fspro' を開きます。
    • 復元するか尋ねられたら「はい」。その後は自分のプロジェクトとして保存し直すと、テンプレートを使い回せます。
  3. Assets タブにサウンドを追加します。
    • wav, mp3, ogg, aiff, wma, flac に対応しています。
  4. 右クリックしてイベントを作成します(種類は任意。不明な場合は 2D を選択)。
    • ダブルクリックでイベント名の変更、画面下部で音量調整ができます。
  5. Events タブでイベントを右クリックし、Bank バンクに割り当てます。
  6. Banks タブでバンク名を一意の名前に変更し、他の Mod やゲームファイルと衝突しないようにします。
    • 重要! バンク名は「Master Bank」より前に来るようにしてください。詳細は下記参照。
  7. Window > Mixer Routing(Ctrl+5)へ。
  8. イベントを右クリックし、適切な VCA に割り当てます。これはゲーム内のボリュームコントロールです。割り当てないとフル音量で鳴ってしまいます。
  9. File > Build(F7)で保存・ビルドします。プロジェクトの Build/banks フォルダにバンクファイルが作成されます。
  10. Mod の /sound/banks フォルダにバンクをコピーします。2 つのファイルができるので両方コピーしてください。
    • スペルミスに注意! 単数の sound と複数の banks です。
  11. 今後は Edit -> Preferences -> Build で、FMOD に直接 Mod フォルダへビルドさせることもできます。
    • バンク名を変更した場合は、古いバンクファイルを手動で削除する必要があります。
  12. Mod を有効にしてゲームを起動し、コンソールコマンド Audio.PlayEvent event:/myevent でテストします。
    • なお、コンソールは名前にスペースを含むイベントを再生できません。スクリプトや UI では問題ありません。
    • FMOD でイベントをフォルダに入れた場合、このパスにはフォルダ名も含まれます。例: event:/somefolder/myevent
    • ここでバンク名を参照する必要はありません。

バンク名とクラッシュについて[編集 | ソースを編集]

バンク名によっては、終了時にゲームがクラッシュすることがあります。

原因も回避方法も正確には不明です。

クラッシュを減らすため、「Master Bank」よりもアルファベット順で前に来る名前を試してください。

これはゲームが使用するマスターバンク名で、ロード順に関する何らかの問題が起きているようです。

テストでは、以下の名前で終了時にクラッシュしました:

❌ Mazter, New, template

以下の名前は動作しました:

✔️ Key, List, Ma

他にも奇妙な点があります:

'Ar' と 'ar' は動作しますが、'aR' はクラッシュします。'Army fix' は動作しますが、'army_fix' はクラッシュします。

アンダースコアや、先頭以外の大文字は避けるとよいでしょう。さらなる検証を歓迎します。

このクラッシュはプレイ中ではなく、「デスクトップに終了」をクリックした後にのみ発生します。

致命的ではありませんが、クラッシュレポーターが開いたりログファイルが生成されてディスク容量を圧迫するのを避けるためにも、対策した方がよいでしょう。

ゼロから作成する場合[編集 | ソースを編集]

自力で行う場合は、VCA の作成と、プロジェクト内のすべての GUID をゲームのものに置き換える必要があります。

  1. プロジェクトを作成し、上記の手順に従って新しいイベントを追加します。
  2. Window > Mixer Routing、VCAs タブへ。新しい VCA を作成し、サウンドの種類に応じて次のいずれかの名前を付けます:
    • Ambience, Music, Sound Effects, UI
  3. Routing タブで Master Bus を展開し、サウンドを VCA に割り当てます。これでプレイヤーが音量を調整できるようになります。
    • 場合によっては 1 つのイベントを複数の VCA に割り当てる必要があります。例えば UI サウンドは Sound Effects の音量にも影響されます。
  4. プロジェクトを保存します(まだ Mod フォルダには置かないでください)。
  5. File > Export GUIDs で GUID をエクスポートします。プロジェクトの Build/ フォルダにテキストファイルが作成されます。
  6. そのフォルダで GUIDs.txt を開きます。
  7. bus:/ で終わる行と、作成した VCA 名の行を見つけ、ID をどこか別のファイルに控えます。例:
    • {767eec3a-3ca8-4ae8-8827-376bf7db4d8f} bus:/
    • {72d40a2a-0111-4078-8ba7-e84d415b91a2} vca:/UI
  8. CK3 フォルダの game/sound/GUIDs.txt を開き、bus:/ と vca の行を見つけ、そちらの ID も控えます。VCA は下部にあります。例:
    • {cb930c67-0464-4d7f-957a-a78b08fc39de} bus:/
    • {f8bd5083-a8cc-412b-ada4-cdc08a33ce75} vca:/UI
  9. FMOD プロジェクトフォルダで Metadata フォルダ内のすべてのファイルを検索し、バスと VCA の両方について、{} 内の ID をゲームのものに置き換えます。
    • この例では、bus 用に 767...cb9... に置き換えます。少なくとも 4 件はヒットするはずです。
    • 適切なテキストエディタがない場合は VSC をインストールします。Metadata フォルダを放り込み、右クリック > Find in Folder。
  10. FMOD に戻り、再起動してプロジェクトを開き直します。
  11. File > Build を選択します。これでゲームで使用するバンクファイルが作成されます。
  12. 作成されたすべてのバンクファイルをコピーし、Mod の sound/banks フォルダに配置します。

ゲーム内での再生[編集 | ソースを編集]

サウンドイベントはスクリプト、UI、またはマップ上のモデルから再生できます。

スクリプト:

play_sound_effect = "event:/myevent"

UI ボタン:

clicksound = "event:/myevent"

oversound = "event:/myevent" - ボタンにカーソルを載せたときに再生されます

UI アニメーションステート:<syntaxhighlight lang="c"> state = {

 name = "my_sound"
 start_sound = { soundeffect = "event:/myevent" }
 end_sound = { soundeffect = "event:/myevent" }
 soundparam = { name = parameterName value = 1 }

} </syntaxhighlight>end_sound はアニメーションに継続時間がある場合、その終了時に再生されます。そうでない場合は、start_sound で即時にトリガーできます。

soundparam は任意で、FMOD 側で設定したパラメータを使ってイベントを変更するために使用します。下記の サウンドパラメータ を参照してください。

ステートは自動では発火しない点に注意してください。Interface/Animation states を参照。

スクリプテッド GUI を使い、スクリプトでサウンドを再生してボタンの onclick やステートの on_finish から発火させることもできます。

3D モデル:

建物 (common/buildings)<syntaxhighlight lang="c"> asset = {

 ...
 soundeffect = { soundeffect = "event:/eventName" soundparameter = { "parameterName" = 0 } }

} </syntaxhighlight>ユニット (gfx/models/units/infantry)<syntaxhighlight lang="c"> state = {

 ...
 event = {
   time = 0.0
   soundparameter = { "parameterName" = 0.0 }
   sound = { soundeffect = "event:/eventName" }
 }

} </syntaxhighlight>

トラブルシューティング[編集 | ソースを編集]

エラーログにバンクを読み込めないと出る場合、ID を正しく置き換えていないか、置き換え後にプロジェクトを開き直していない可能性があります。

特定のイベントが見つからない場合は、パス、名前、そして FMOD でバンクに割り当てられているかを再確認してください。

ランダムサウンド[編集 | ソースを編集]

FMOD のマルチインストゥルメントを使えば、簡単にランダム化されたサウンドを作れます。

複数のオーディオファイルを選択し、右クリック > Create Events > マルチインストゥルメント 1 つの新規イベントを作成。

Events タブで新しいイベントを選択し、画面中央のトラックを選択します。

下部の Playlist にドロップダウンがあり、Shuffle が選ばれています。純粋なランダムや、Sequential - Global Scope で順番に再生するモードも選べます。

再生してテストすると、毎回別のトラックが選ばれます。

例えば、CK2 Selection Music Mod はこの方法で動作します。

サウンドの重なり[編集 | ソースを編集]

同じサウンドを繰り返し再生すると、デフォルトでは重なって騒がしくなります。

これを避けるには、イベントを選択し、右下にある Max Instances パラメータを設定します。既定では無限です。

ドラッグするか三角ボタンで 1 に設定します。(同時再生を許す場合は他の数値でも可)

その下の Stealing オプションで挙動を決めます。「Oldest」は古いサウンドを中断し、「None」は最初のサウンドが終わるまで新規再生を防ぎます。通知や軍の命令などには CK3 は「None」を使っているようです。

3D サウンド[編集 | ソースを編集]

Distance は FMOD に組み込みのパラメータで、音量や EQ、リバーブ、ディレイ等を距離に応じて自動化できます。

マップ上で再生するサウンドを追加する場合、3D Action か 3D Timeline タイプのイベントを作成します。これらは距離減衰を扱えます。

右下に Min & Max Distance パラメータがあります。既定の距離はかなり小さく、エミッタが画面中央付近にあるときのみ再生されます。

ゲーム内ではコンソールコマンド Audio.Debug を使うとサウンドエミッタのサイズが表示されます。かなり小さいため、整合性のため同程度のサイズに保つのも良いでしょう。


FMOD の距離パラメータに基づいて(この例ではマルチバンド EQ)エフェクトを自動化するには、イベントで以下を行います:

  1. タイムラインの右にある + ビューをクリックし、'Add Parameter Sheet' > 'New Parameter' を選択してパラメータシートを追加。
  2. 'Built-in: Distance' を選択。
  3. インストゥルメントにマルチバンド EQ を追加。
  4. Freq. (A) を右クリックし、distance でモジュレーション。
  5. カーブを描き、右側の distance パラメータを変えてライブで試します。

サウンドパラメータ[編集 | ソースを編集]

FMOD の「Add Parameter」ウィンドウ

サウンドパラメータはスクリプトからサウンドエフェクトを変更するために使用できます。例えば、CharacterStressLevel は、ゲーム内でストレスレベルが高いほど発作のサウンドを強化するために使われます。

注意: サウンドパラメータは次のような通常のスクリプトでは使用できません: play_sound_effect = "event:/myevent"

FMOD でイベントにサウンドパラメータを追加[編集 | ソースを編集]

FMOD でイベントにパラメータを追加するには:

  1. パラメータが必要なイベントを選び、Event Editor に入ります。
  2. 'Action' または 'Timeline' の横にある '+' を押し、'Add Parameter Sheet' から 'New Parameter' を選択。
  3. パラメータ名を付けます。値を整数にしたい場合は 'User: Discrete'、そうでなければ 'User: Continuous' を使用し、OK を押します。
  4. これで、音量やエフェクトなどを自動化できるようになります。
  5. 目的の値(音量、パン、リバーブ長など)を右クリックし、'Add Automation' を選択。
  6. 'Add Curve' を押し、'Browse > ParameterName' を選択。
  7. グラフをダブルクリックして点を追加し、カーブを描きます。
  8. 右側の 'Parameters' ペインで値を変えると、リアルタイムでテストできます。

ゲーム内 GUI でサウンドパラメータを使う[編集 | ソースを編集]

GUI では、次のようにパラメータを参照し、値を使ってサウンドエフェクトを変更できます。<syntaxhighlight line="1"> start_sound = {

   soundeffect = "event:/test_sound"
   soundparam = { name = ParameterName value = 1.5 }

} </syntaxhighlight>

ベストプラクティス[編集 | ソースを編集]

右クリック > 'New Folder' でイベントを整理できます。

イベントをフォルダで整理[編集 | ソースを編集]

すべてのイベントをルートに置くのは散らかるので、大規模な Mod や互換性のためにもフォルダ構成を推奨します。

'Events' タブで右クリックして 'New Folder' を選ぶだけでフォルダを作成できます。

イベントは次のように参照できます。<syntaxhighlight> event:/YourModName/SFX/TestSound1 event:/YourModName/SFX/TestSound2 event:/YourModName/Ambiance/Ambiance1

</syntaxhighlight>

ドキュメンテーション スクリプトスコープ効果トリガー変数補正リスト
スクリプト AIブックマークキャラクターコマンド評議会文化ディシジョン王朝イベント政府歴史領地ライフスタイル連隊宗教スクリプト値ストーリーサイクル闘争称号特性
インターフェース インターフェースデータ型ローカライズカスタムローカライズフレーバー化
マップ マップ地形
グラフィック 3Dモデルエクスポーター紋章グラフィックアセットフォントパーティクルシェーダーユニットモデル
オーディオ 音楽サウンド
その他 コンソールコマンドチェックサムModの構造Mod制作ツールトラブルシューティング