CSによるMOD開発



はじめに

 パソコンが世の中に出回り始めた頃「パソコン所有者=開発者(プログラマー)」の図式がほぼ当てはまり、必要なPGMは自分で作っていた。 また、ベーマガなどプログラム掲載雑誌から手入力したり、他人のテクニックを参照して自分の物とする、自給自足のサイクルが存在した。

 その後、PCが一般化することにより単にアプリを使うだけのユーザの数が増え、「パソコン所有者=開発者」の図式は崩れてしまった。 PCの一般化により市場が拡大し、H/WやS/Wの価格低下などが起きた影響で裾野は広まったが、自ら学習しない層の存在も増加してしまった。

 Oblivionは開発環境が公開されており、Nehrimのような例を挙げるまでもなく、やる気さえあれば必要なMODは自分で開発ができてしまう。 MOD作成という行為を通して、プログラミングの面白さや、自給自足のサイクル確立、開発の満足感などの欲求をOblivionは満たしてくれる。

 私にとってOblivionは、忘れかけていた感情を呼び起こしてくれた、偉大なるゲームだ。


CSの使い方

 能書きはさておき、ConstructionSet(CS)の使い方について。私の学習過程からの結論ではRTFMに尽きる。 Googleで使い方を検索して時間を浪費した後に、CSのhelpを読めば必要な情報は載っていたことに気づいてガッカリした。
 とはいえ、いきなりhelpは敷居が高いので、以下に挙げる偉大な先人のサイトを参照し、実践すれば理解しやすいものと思われる。  楽な近道など存在しない。手を動かし、試行錯誤するべし。


備忘録

  • 空のespファイルを作る時は、起動直後に「ファイル」−「読み込み」でOblivion.esmをダブルクリックした状態でOKボタンを押す。各種ファイルの読み込みが終了したら、何も操作せずにセーブすることで空のespファイルが作成される。
  • プルダウンメニュー等では頭文字のアルファベットをクリックすることで、当該アルファベットの先頭までジャンプできる。
  • レンダウインドウ操作時は、まずウインドウをアクティブにしてから内部Objectをクリックすれば余計なトラブルを防ぎやすい。
     - 視点の回転は、Shiftを押しながらマウスを動かす。
     - 視点の移動は、MouseWheelを押した状態でマウスをドラッグ。
     - Fキーを押すと、選択されたObjectが下に落ちる(別のObjectにぶつかるまで)。
     - Objectの移動は、マウスの左ボタンを押しながらドラッグ。X、Y、Zの各キーを押せばその軸に沿って動く。
     - Objectの回転は、マウスの右ボタンを押しながらドラッグ。X、Y、Zの各キーを押せばその軸に沿って回る。
  • 無駄な手間を避けるため事前にどんなMODを作りたいか要件定義を行い、処理のフローチャートを書いて抜け漏れや実装方法を検討。
  • 実装方法に関する一番の手本はVanillaのQuestにつきる。類似の処理が存在するQuestを解析して、必要箇所をチェック。
  • Scriptを書く時は極力コメント(「; 」の後はコメント扱い)を記載すること。2週間後の自分は他人だと思え。
  • Oblivionの変数は基本的に当該Scriptの中だけ有効なローカル変数の模様。Scriptが異なれば同じ変数名でも問題ない。
  • Questに設定したScriptの変数は、外部からアクセス可能(参照、変更が可能)。このため、複数のScriptから参照したり、グローバル変数的な使い方ができる。
  • Topicなどの条件式は上から順番に判断される模様。合致するものがあればそれ以降の条件式が判断されないので順番に注意。

クリーニングの手順

  • ツールとしてTES4Editを使用する。wikiにも解説 があるが、自分用の覚書。
  • TES4Editを起動したら、対象のespのみにチェックを入れて読み込む。
  • 対象を右クリックし、表示されるメニューから「Apply Filter」を選択。
  • 「Conflict status inherited by parent」だけにチェックを入れ、他のチェックを外して実行。
  • 対象を右クリックし、表示されるメニューから「Remove Identical Master Records」を選択。
  • 次いで、対象を右クリックし、表示されるメニューから「Undeleting and Disabling References」を選択。
  • TES4Editを閉じる(saveする)。

インポートの手順(日本語化)

  • CSの「File」−「Import」から各種ファイルをインポートする。詳細は こちら を参照。
  • Books以外は「File」−「Import」から読み込む。
  • Booksは、Oblivion.exeのあるディレクトリに「Book Export」ディレクトリを作成し、ファイルを配置した後でインポートを実施。
  • インポートが終わったら、ScriptEditで「Recompile All」を実施。次いでQuest画面を開いて「Recompile All Results」を実施。
  • CSを閉じて(espに変更を保存して)、TES4Geckoを用い「Clean Plugin」を実施する。

64bit OSでの注意点

  • Windows7など64bit OSでCSを使っていると、日本語入力の際にアプリケーションが強制終了することが多い。ヘタレな私は32bit版 WindowsXP上でCSを使っている。
  • とはいえ不便なのでCTD対策を調べたところ、IMEの入力モードを英語にしてから(USキーボードマップをインストールしておく)メッセージを入力すれば良い模様。
  • メッセージはテキストエディタなどで用意しておき、コピー&ペーストすればやり易い。


自作MOD

  • Bravil Expand Project v1.0
    マップ中央付近をターゲットにSkyrim的なクエストやイベントを追加して、Oblivionをもっと楽しくしようという計画の一環。基本的に普段縁のない地域、具体的にはNibenay Valley、Bravil東岸あたりに足を運ぶようにする。
     - プレーヤ用の拠点追加(Crestbridge Camp、Mouth of the Panterの北岸)
     - 一般の店(Nilawen、Daenlin、Ungarion)で素材収集系の仕事を追加
     - BravilのFighters GuildおよびMages GuildにRepeatable Questを追加
     - 土地を買ってHearthfire的な家作り(Mouth of the Panterの北岸)
     - Bravilの従士となり、東岸の治安維持(巡視任務)を追加
     - 試験的にSkyrim的なランダムイベントの実装
    お試しする際は こちら からダウンロードされたし。

  • Enhanced Auroran Invasion v1.5(要KotN)
    Knights of the Nineの敵であるAuroranの侵攻を強化するMOD。Enhanced Daedric Invasionに感銘を受け作成された。
    KotNをプレイしていて、Umarilの脅威をより実感させる意図がある。本家EDI同様、街中で落ち着かなくなること間違いなし。
    - 各都市にある教会の前に5%の確率でAuroranが出現する。
     VerUpにより、KotNのクエスト終了後は出現しないように変更。
    - Meridiaの領域につながるゲートが3箇所開き、Auroranが出現する。
     近くにGatekeeperがいるので、倒すとゲートが閉じる。FastTravelせずにKotNクエを進めれば遭遇できるはず。
    - KotN本編では、BrumaとSkingradの教会は被害を免れている。
     ちょっと不公平なので、足を踏み入れるとAuroranが襲撃してくるようにした。なお、襲撃は一回のみ。

    MODの仕組みとしては、表に出ないQuestを一本動かして、そこに仕込んだScriptで色々と小細工をしている。
    詳細はQuestに仕込んであるScriptを確認のこと。お試しする際は こちら からダウンロードされたし。

  • Pell's Gate Extension v1.5(旧称:Gather Delivery Etc v1.0) New!
    SkyrimのBounty QuestsやGather,DeliveryのようなRepeatable Quest集。SkyrimをプレイしていてOblivion側にも欲しくなったので作成した。お試しする際は こちら からダウンロードされたし。

     1) Pell's GateのShafayeが,Tomatoを1個につき2Goldで買い取ってくれる。
     2) The Sleeping MareのCandice Corgineから,Bounty Questが受けられるようになる。
     3) Irroke the Wideの地下室を作って下宿できるようにした。家具は段階的にアップグレード可能。
      入ってすぐのCrate2個はRespawnするので注意。
     4) ShafayeとIrroke the WideからDelivery Questを受けられる。
     5) 帝都西岸と東岸2箇所にRandom Eventsを追加

    ※ もし前バージョンを使っている人が居れば、変更内容が大きすぎるためクリーンインストールしていただきたい。その際は下宿のコンテナの中身を回収しておく事を忘れずに!

  • Dead Treasure Hunter's Memo 
    SkyrimのRandom Eventのひとつに、Dead Treasure Hunterが宝のメモを持っているものがある。そういえばOblivionにもDead Treasure Hunterがいたな、ということで宝探しを仕込めないものか試してみた。
    CSで覗いてみたところDead Treasure Hunterは2グループに分かれているため、今回は片方を使い実証試験的MODを作成。
    死体をActivateするとメモを入手できる。メモには死亡フラグと宝のありかが書かれている。
    とりあえず宝はGoldとし、SIのUrnを配置。UrnをActivateするとGoldを入手し、メモを失う。
    実証試験なのでメモを3パターンのみ用意して、無限ループするように。お試しする際は こちら からダウンロードされたし。

  • Khajiit Caravan in SI v0.5
    SI側の人口増加系MODとして、SkyrimのKhajiit Caravanを真似して作ってみた。
    Dementia側、Mania側、双方に3人組を追加。午前中は拠点から近くの村まで行って帰る。
    リーダーは不死、護衛2人はリスポーンするよう設定されている。
    お試しする際は こちら からダウンロードされたし。

  • Mace Quest v1.0 New!
     OOOではPower Attackの特殊効果発動率が高められている。その対策なのか、OOOの追加クエスト「Light through the Darkness」と「A Path of Iron」では重量ゼロの剣、つまりQuestItem属性の付いた剣が2本登場する。
     剣の優遇っぷりに嫉妬し、QuestItem属性&チャージ不要のEnchant付き鈍器を入手するためのクエストを追加してみた。

     1) Fort StrandにBjalfi's Sackが追加される。その中身を入手するとクエストスタート。
     2) Calliben Trentiusの棺?をアクティベートするとクエストスタート。

     OOOに依存しているわけでないが、OOO環境下での使用を前提としているため,バランス的にかなりチート気味。お試しする際は こちら からダウンロードされたし。

  • Meridia's Fury(要KotN)
    Meridiaさまは激怒した。必ず、かの邪知暴虐のNecromancerどもを除かねばならぬと決意した。
    Meridiaさまには人の心がわからぬ。MeridiaさまはDaedric Princeである。邪悪に対しては、人一倍に敏感であった。
    お試しする際は こちら からダウンロードされたし。
    とりあえず実証試験的MODを作成。Fort Chalmanへ登る道の途中に、Meridiaの領域につながるゲートが開き、Auroranが出現する。
    Gatekeeperを倒すとゲートが閉じ、メッセージが表示されるので、それに従いDaedric Shrineへ行く。
    信者代表に話しかけるとメモを渡され、それを読むとMeridiaさまがお怒りなので、怒りを静めるため○○のNecromancerを討伐せよ、とある。
    指示された場所のNecromancerを討伐すると一旦終了。3日後に、またゲートが開き無限ループする。

  • MMMのHunting&Craftingっぽいもの
     CUO環境で、MMMのHunting&Craftingっぽいものを実現できないか作ってみた。
     とりあえずVanillaで動くものを用意。別途CURP必須版を作成予定。
     *** 諸般の事情により一旦保留 ***


自作MODの構想

  • SkyrimのRandom Eventsの一部を実装
  • SI側でHearthfire的な家作り
  • 各Minor Guilds(例:Knights of the Thornなど)を強化する
  • DarkBrotherhoodのPhillidaをLex隊長のように印象づける
  • Gray Foxとしての組織運営的なもの
  • Lord Vlindrel's Towerの再建(KotN)
など妄想中