Module Scenes(シーン)

module_scenes.py 冒頭に書かれた指定方法
シーンのレコードに下記の項目を指定する。
(1) シーン ID {string}: 他のファイルから このレコードを特定するために使われる。各 ID の前に接頭子 scn_ が自動的に付加される。
(2) フラグ群 {int}. 指定できるフラグについては、header_scenes.py を参照のこと。
(3) メッシュ名 {string}: 室内シーンでのみ有意。屋外シーンには "none" を指定。
(4) 本体名 {string}: 室内/屋外について同上。
(5) 最小位置 {(float,float)}: 最小 (x,y) 座標。主人公は これを越えて移動できない。
(6) 最大位置 {(float,float)}: 最大 (x,y) 座標。主人公は これを越えて移動できない。
(7) 水位 {float}
(8) 地形コード {string}: 地形生成画面からコピーして取得できる。
(9) このシーンから移行できる他のシーン {string のリスト}
      (廃止。将来のバージョンのモジュール・システムで削除されるだろう。)
      (新しいシステムでは、通路はシーン間の移動に使われる。通路の変種番号(variation-no)を使って、通路の先にあるゲーム・メニュー項目に対応させる。)
(10) このシーンで使われるチェスト(持ち物の置き場)の兵種(troop)のリスト {string のリスト}. 編集モードでチェストを配置することで、それらにアクセスできる。
      チェストの変種番号を使って、どの兵種(人物)の持ち物なのかを対応させる。

module_scenes.py (ここに何らかの序文を書く予定。未作成)

訳注:

M&B Warband では、シーンはワールド・マップ以外のあらゆる 3D 画面を意味します。戦場、闘技場、街や村の中、宿屋(居酒屋)などです。Warband をプレイしたことがあるかたなら ご存じのように、主人公がシーンにいる間はゲーム内の時間が進みません。例えば街や城に泊まると、一旦 ワールド・マップに出て、ゲーム内時間が進み、クリックでそれを中断して街メニューや城メニューに戻ると、またゲーム内時間が止まります。あるいは戦闘後に戦利品の回収を選択すると、ワールド・マップに戻ってから暫く強制的にゲーム内時間が経過します。

闘技場(シーン)の練習試合では、プレイヤーのいる実世界の時間が使われ、何秒後に次の参加者が現れるか、といったような処理がミッション・テンプレート(module_mission_templates.py)に書いてあります。ミッション・テンプレートは このように(ワールド・マップのゲーム内時間が止まっている間に)シーンと連動します。訳者が「ミッション・テンプレート」のページに注記したトリガー確認用サンプル・コードでは、既存のテスト用シーンへ jump_to_scene しています。

MOD システムの全ソースから jump_to_scene という命令を検索すると、メニュー・モジュール(module_game_menus.py)など いくつかで使われているのが判ります。それがシーンへジャンプしている箇所です。

また、兵種モジュール(module_troops.py)の中を読むと、兵種によっては現れるべきシーンが scn_xxxx のように指定されているものがあります。例えば闘技場の大会責任者(例: town_1_arena_master)や宿屋の主人(例: town_1_tavernkeeper)がそうです。このように、命令で直接遷移せず、関連付けだけ定義しておいて、ゲーム・エンジンに表示させる場合があります。

シーンにはエージェント(人物や馬)のための「入場点」や、シーン小道具(小物や壁など)を「事前に」配置しておきます。それらの位置や向きの指定はソース・コードに書くのではなく、イン・ゲーム・エディタを使って行ないます。イン・ゲーム・エディタの入出力対象は、MOD 毎の SceneObj フォルダ下の .scp ファイルで、終了時に保存するか否かを聞いてきます。このフォルダは MOD システムの範疇ではないので、最初は Native などからコピーしておきます。

一方、シーンに登場させるエージェントや装備は、状況に応じて変える必要があるので、ミッション・テンプレート内のパラメータや命令を使って、「ゲーム実行時に」処理します。

フラグ群 sf_

シーンのフラグ群には下記を指定できる。

sf_indoors このシーンの、スカイ・ボックス(空)と日照を無効化。
sf_force_skybox たとえ sf_indoors が指定されても、スカイ・ボックスを有効にする。
sf_generate 地形ジェネレータで地形を生成。
sf_randomize 地形ジェネレータのキーをランダム化。
sf_auto_entry_points ランダムに生成されたシーンに、入場点を自動的に配置 [1]。(ランダムに生成されたシーンのみに配置? 要調査)
sf_no_horses scene_allows_mounted_units 命令のためのシーン・マーカー (これ自体では何も起こらない? 要調査)
sf_muddy_water 川メッシュのシェーダを変更。(要調査)

室内シーン

(未作成)

シーン境界

シーンの境界の最小/最大座標。 Ruthven (credit) と kalarhan, Modding Q&AModding Q&A

室内の境界と、屋外の境界。 Swyter, Modding Q&A と GetAssista, Modding Q&A

シーンのエントリ番号は廃止? InVain, Mount & Blade Modding Discord

周辺地形の境界

第 11 項目が不足。変則的なルールに従って省略可。

水位

水位の修飾子(機能していない?)。 InVain, Modding Q&A, Mount & Blade Modding DiscordMount & Blade Modding Discord

水はねの音と減速、質問 2。 Yoshiboy, Questions about making new rooms and some other questions

地形コード

シーンの規模。 Vornne, Modding Q&A

シーンのサイズを編集時の黒い領域。 Lumos, Modding Q&AModding Q&A

シーン境界の拡張。 InVain, Modding Q&A

地形の境界。 Modding Q&A

植生。 Dargor, Modding Q&A

シーンにハード・コーディングされた樹木。 jacobhinds, Modding Q&A

シーンの最大サイズ。 InVain, Mount & Blade Modding Discord

対話画面/人物作成画面

対話画面(会話時に左上に表示される 3D)あるいは人物(キャラクタ)作成画面を見ると、meeting_scene_plain というシーンが関係していると思うかもしれませんが、これはシーンではなく、ゲーム・エンジンによって その場で作成されています。地形の実体すら ありません。エンジンは CommonRes/particles_2.brf 内の ch_meet_plain_a というメッシュを使っているだけです。ここでは照明(つまり日照)の設定を変更できないことに注意して下さい [2]。キャラクタ作成画面では、Skyboxes.py の先頭で定義されたスカイ・ボックス(空)が使われます [3]。キャラクタ(人物)には stand_man というアニメーションが付いていて、これはハード・コーディングされています [4]

その他の注意点

シーン関連。 cmpxchg8b, Modding Q&A