他のSourceゲームのコンテンツをマウントする方法

タイトルでは意味が分からない人が多いと思うので、具体例で説明。例えばあなたがCounter-Strike: Source(以下CS:S)のマップを作っている時に、NEOTOKYO°(以下NT)のテクスチャを貼ったりプロップモデルを置いたりしたくなったとする。とりあえずmaterialsとmodelsフォルダーをCS:Sのフォルダーにコピーすれば使えるようにはなるわけだが、整理のしやすさや容量の面では非効率的だ。そこで、コピーせずとも他のゲームのコンテンツを使えるようにするのがマウントである。

この記事において「コンテンツ」とは、 SourceEngine用のフォーマットで作られた素材(テクスチャ・モデル等から各種スクリプトまで)のことを指す。

注意点: コンテンツの互換性

同じSourceエンジンでもバージョンが色々あるので、全てに互換性があるわけではない。結構長いが、あなたに無駄足を踏ませたくはないので最初に持ってきた。

下に挙げるゲームのコンテンツを他のゲームで使えるようにすることはできない。
  • Left 4 Dead
  • Left 4 Dead 2
  • Counter-Strike: Global Offensive
  • Portal 2
  • Dota 2
  • Alien Swarm
  • その他、エンジンが独自のバージョンのゲーム
 これはモデルやテクスチャ等のフォーマットが、汎用バージョン(※1)のものと異なっているため。細かい互換性についてはそれぞれ試してみないと分からない。例えばL4DのコンテンツをL4D2に持っていくことは出来るかもしれない。L4D2のコンテンツの一部はCS:Sに持っていけるかもしれない。まあとにかく、普通は出来ないと思っておくこと。

これはエンジン仕様の違いによるものなので、別にマウントに限った話ではなく、コピーしても使えない。自前で使えるようにコンバートすれば使えるようになるコンテンツもあるが、そこまで説明するとキリが無いのでここでは扱わない。ただしテクスチャ(vtf)については、VTFVerというツールを使用すれば一括で簡単に変換できることも覚えておくと良い。(やっていることはシンプルで、vtfのバージョンを7.5→7.4に変換するだけ)

なお逆に汎用バージョンのエンジンで動くゲームから、上に挙げたゲーム等に持っていくことが出来るかについても、組み合わせによりけりである。やはり基本はできないと思っておこう。

※1: 「汎用バージョン」とは、Source Engine 2006, 2007, 2009, MP, 2013SP, 2013MPのこと。詳しくはSource Engine - Wikipediaを読めば察せるはず。なおこの汎用バージョンのゲームに関しても、全て互換性があるとは限らない。新しいバージョンに持っていくことは大体できるが、古いバージョンに持っていくことは出来ない可能性がある。

マウントする 

garry's modにマウントする場合のみ、編集するファイルが違うので注意。

garry's mod以外のゲーム

1. gameinfo.txtを開く

マウントする対象(=マップを作る対象)のゲームのgameinfo.txtをテキストエディタで開く。

ゲームによって書いてあることは違うが、構造は以下のようになっているはずだ。
"GameInfo"
{
    FileSystem
    {
        SearchPaths
        {
        
        }
    }
}
もしSeartchPathsのブロックが無い場合は、FileSystemブロック内に自分で書き加える。

2. SearchPathsに書き加える

SearchPathsブロック内に、下の例のような形でマウントするゲームのパスを書く。
SearchPaths
{
    //例1. Steamゲームをマウントする場合の例
    game    "C:\Program Files (x86)\Steam\SteamApps\common\Counter-Strike Source\cstrike"
    game    "C:\Program Files (x86)\Steam\SteamApps\common\Team Fortress 2\tf"
    game    "C:\Program Files (x86)\Steam\SteamApps\Steamアカウント名\half-life source\hl1"

    //例2. SourceModゲームをマウントする場合の例
    game    "C:\Program Files (x86)\Steam\SteamApps\sourcemods\NeotokyoSource"
    game    "C:\Program Files (x86)\Steam\SteamApps\sourcemods\bms"

    //例3. Steamゲームの、特定のvpkのみをマウントする場合の例(※2)
    game    "C:\Program Files (x86)\Steam\SteamApps\common\nmrih\nmrih\nmrih.vpk"//(※3)
}
※2: 例1の方法で、そのゲームの全てのvpkがマウントされるので、これを使うことはあまり無い。
※3: nmrih.vpkというファイルは存在せず、実際にあるのはnmrih_dir.vpkとnmrih_000.vpkから始まる連番のファイルだが、nmrih.vpkと書けば良い。とは言え、nmrih_dir.vpkと書いても特に問題は無く、同じようにマウント出来る。

同名のファイルが複数のSearchPathsに存在する場合は、上に書いてある方が優先して読み込まれるので、書き加える位置はよく考えよう。

garry's mod

gameinfo.txtではなく、garrysmod\garrysmod\cfg\mount.cfgを開く。
"mountcfg"ブロック内にパスを書く。書き方はSearchPathsブロックと全く同じ。

応用: 自作コンテンツの倉庫を作る

自分で作ったり、インターネットから入手した、ゲームを限定せず使い回せるような汎用性のあるコンテンツをまとめて保存しておいて、複数のゲームのSearchPathsに指定してやるという方法。

まずどこでもいいので好きな名前のフォルダを作る。場所はSteamApps\sourcemodsがおすすめ。フォルダ名はMyContentsとかAssetsとかWarehouseとか何でもご自由に。

そしてそのフォルダに、ゲームと同じような構造を作り(materials, models, sound等のフォルダを必要に応じて自分で作る)、自作コンテンツを保存して、他のゲームからSearchPathsで読み込んでやるというわけ。

注意点: 完成したマップを配布する場合

言わなくても分かるとは思うが、マウントしたところでそのコンテンツを読み込めるのは自分のゲームとハンマーエディタだけである。マップをそのまま配布すると、他の人にとっては紫テクスチャやERRORモデルだらけのマップになってしまう。

マウントしたコンテンツを使用したマップを配布する場合には、やはりbspにそれらのコンテンツを埋め込んでやる必要がある。配布対象がマウントしたゲームを持っている身内だけの場合は、自分と同じようにSearchPathsを書かせても良いがまあ現実的な話そんなことは普通やらない。

コンテンツの埋め込みにはVIDEのPakfile Lump Editorを使うと便利だ。bspが使用しているコンテンツを検索するフォルダを指定できるので、「SearchPathsに書いたパスを入れて検索→埋め込み」を繰り返せば良い。検索でほとんどのファイルは埋め込まれるが、中には見つけてくれないファイルもある(モデルのテクスチャに多い)ので、それらはAddで手動で埋め込もう。

また、他のゲームや他の人が作ったコンテンツを勝手に埋め込むのは著作権的にはNGである。どこまでが黙認されるかという点は各自で判断してほしいが、有料ゲームのコンテンツはやめておいたほうが良いと思われる。他の人(カスタムマップ制作者)が作ったコンテンツを埋め込みたい場合、「クレジットはちゃんと書く」と伝えた上で承諾を得るのが最善である。