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

Source SDK 参考になるかもしれないチュートリアルリンク集

特定の要素やテクニックを教えてくれるチュートリアル集。初心者講座や、総合的なサイトを探している人はリンク集へどうぞ。

カスタムテクスチャの作り方メモ for Counter-Strike:Source in Source Engine

http://www.schuzak.jp/cs-s/tutCustomTex.html
日本語のサイト。vmtパラメーターの多くを解説している。これさえ読んでおけばひと通りvmtは書けるようになる。

To Know - Creating Your Own Texture

http://facepunch.com/showthread.php?t=947473

基本的なテクスチャからある程度複雑なテクスチャまでの作り方がまとめられている。


このブログについて

Source SDKやその他ゲームなどについて知ったこと思ったことを知ったかぶりつつ書きます。

何かあれば気軽に質問してください。間違っている点を見つけた場合は教えてくれると助かります。

自己紹介

暇だから書いてるだけです。

「buildcubemapsでキューブマップが作成できない」 問題の対処法

どうやら最近のアップデート後のvbsp.exeにはバグがあるようで、マップのコンパイル時に勝手に真っ黒のキューブマップを作成し、buildcubemapsでは上書きできなくなってしまう。

この問題に遭遇した場合は、以下の方法で対処できる。もちろん普通にキューブマップを作成できている場合は必要無い。

外部ツールでキューブマップを削除する

VIDE(Valve Integrated Development Environment)というツールを使用して、コンパイル時に作成されたキューブマップ画像を削除する。なおPakRatでも同様の操作が可能だが、VIDEでやったほうが楽なのでこちらで行うことをお勧めする。

VIDEをダウンロードする

VIDEを持っていない人はこのリンクからダウンロードする。
http://www.riintouge.com/VIDE/

インストール無しのソフトなので、解凍してexeを叩けば起動する。

ちなみに私はSteamAppsフォルダ内にSDK Toolsというフォルダを作って、Source SDKに使うツールをまとめて置いている。 Source SDK関係のツールはインストール無しのものが多いので、どこかにフォルダを作って置いたほうが良い。

キューブマップを削除する

VIDEを起動したら、ウィンドウ上部に並んでいるアイコンの一番左か、Tools>Pakfile Lump Editorをクリックする。

Pakfile Lump Editorのウィンドウが出てくるので、一番左のOpenをクリックして、マップのbspを選択する。

するとbspに埋め込まれているファイルがずらっと表示される。ここからキューブマップ画像のファイルを全て選択して削除しなければならない。それ以外のファイルを削除するとマップが壊れてしまうので注意が必要。

選択するファイルは以下の通り。Typeは全てTextureまたはTexture (HDR)である。
  • cubemapdefault.vtf
  • cubemapdefault.hdr.vtf
  • c***_***_***.vtfのような名前のファイル
  • c***_***_***.hdr.vtfのような名前のファイル


全て選択できたら、Un/Deleteをクリックし、続いてSaveをクリックする。これでbuildcubemapsでキューブマップが作成されるようになる。

削除するファイルの数は、マップに配置したenv_cubemapの数によって変わる。上の画像はenv_cubemapが1つしかないマップの例。

Source SDK かなり参考になるリンク集

ゲームによっては書いてあることが当てはまらなかったりする場合もあるので注意。

今から始める初心者に最適なスタートアップガイド

Valve ハンマーエディタ講座

http://koumeisatou.web.fc2.com/index.html
おそらく日本語解説サイトの中で最も初挑戦の人に最適なサイト。初めての人はここから始めると良い。

CustomMap工房: マップ作成の簡単な説明 

http://natto.studio-web.net/mapping.html
内容は「Valve ハンマーエディタ講座」に近い、初心者向け日本語スタートアップガイド。 

FAL Dream Factory: マップ作成チュートリアル

http://fal.xrea.jp/CSS/
これも「Valve ハンマーエディタ講座」に近いが、こちらは「解説動画+補足のテキスト数行」という形。 文章を読むより動画を見るほうが好きだという人には最適。ただし動画の解像度が低いので若干目が痛い。 あと英語ばかりのこの世界で日本語の声が聞けるのは謎の安心感があるかもしれない。 

情報量の多い総合サイト

Valve Developer Community: Level Design 

https://developer.valvesoftware.com/wiki/Category:Level_Design
Valve公式wiki。ほぼ全てのエンティティのページがあるので、あるエンティティについて知りたいときは読んでみると良い。 (わざわざこのサイト内で検索しなくてもGoogleでエンティティ名を入れて検索すれば大抵は出てくるが。) ただしチュートリアルはほとんど無い。あくまで「このエンティティは何で、この要素は何」とか書いてあるだけ。

Source SDK wiki 

http://wikiwiki.jp/sourcesdk/
日本の非公式wiki。そこまで情報量は多くないが、参考になるページもある。

カバーしている範囲がある程度広いサイト

Valve Developer Community: Level Design (JP) 

https://developer.valvesoftware.com/wiki/Category:Level_Design:jp
Valve公式wikiの日本語ページ。情報量は少ないが、外部リンクが多く紹介されている。

3kliksphilip氏の解説動画 

https://www.youtube.com/playlist?list=PLfwtcDG7LpxF7-uH_P9La76dgCMC_lfk3
さくっと見れる、短めの解説動画がいくつかある。短めながらも、コンパイルした後ゲーム内でどう働くかというところまでしっかり動画に入っていて分かりやすい。あと動画の最後にオチが付いているものが多い。

TopHATTwaffle氏の解説動画一覧

http://www.tophattwaffle.com/tutorials/
彼はSource SDK界では有名な人で、膨大な数の解説動画をアップしている。初心者向けのスタートアップガイド的な動画もあるが、どちらかというと高度で複雑なテクニックを解説した動画が多い。

その他のサイト

TopHATTwaffle: Downloads

http://www.tophattwaffle.com/downloads/
中級者以上には必須と言えるようなツールのほとんどはここで手に入る。 テクスチャ詰め合わせパックもいくつか配布している。 

Source SDKに直接関係は無いが役立つ可能性があるサイト

多摩地区そして日本各地の画像集

http://tamagazou.machinami.net/index.shtml
日本各地の町並みの写真が見れるサイト。 日本風のマップを作るときにはここを参考にすると良いかもしれない。具体的なモデルがある場合は画像検索で事足りるが。

ハンマーエディタでの大きさの基準 (Unit)

マップを作る時に、ブラシをどれくらいの大きさにするべきなのか分からなくて混乱してしまうことがあると思う。

ゲームやプレイヤーのFOV、配置するプロップなどによって、実際にプレイした時に感じる大きさは変わってくるが、ここでは1つの指標として、一般的な数値を書いておく。

まず頭に入れておくべき数値

これらはHL2基準だが、多くのゲームで同じないし近い数値になっている。
これらは一人称基準の話で、三人称でも当てはまるとは限らない。例えば、しゃがみで通れる最低の天井の高さは37 unitだが、他のプレイヤーからは頭が天井にめり込んでいるように見えることがある。

立ち状態

プレイヤーの視点の高さ = 64 unit
プレイヤーが通れる最低の天井の高さ = 73 unit
プレイヤーが通れる最低の通路の幅 = 32 unit
プレイヤーがジャンプせずに乗り越えられる最高の障害物の高さ = 18 unit
プレイヤーが歩ける(登れる)最大の角度 = 45°

しゃがみ状態

プレイヤーの視点の高さ = 28 unit
プレイヤーが通れる最低の天井の高さ = 37 unit
プレイヤーが通れる最低の通路の幅 = 32 unit
プレイヤーがジャンプせずに乗り越えられる最高の障害物の高さ = 18 unit
プレイヤーが歩ける(登れる)最大の角度 = 45°

しゃがみジャンプで乗れる最大の高さは50~60 unitぐらい(面倒なので正確には検証していない)

典型的な建物のテンプレート的なもの

建物1階分の高さ = 128 unit
壁の厚さ = 16 unit
入り口(ドア)の幅 = 48 unit
階段1段の高さ = 8,16 unit
階段1段の奥行き = 12~16 unit
窓ガラスの厚さ = 1 unit

作っている建物のタイプによって色々変わってくるが、オーソドックスな建物の場合は上の数値に近くしておけば大きく外すことは無い。上にも書いたが、広さやライティング、プロップの大きさ等でプレイヤーが体感する「サイズ」というのは結構変わってくることを忘れないように。
窓ガラスが1 unitというのは薄すぎるように感じるかもしれないが、現実世界の単位に変換すると1 unitでも厚いぐらいである。強度の高い防弾ガラス等でなければ1 unit(もしくはそれ以下)でよい。

Unitとは

ユニット。ブラシを作ったり伸縮するときに、辺の中心に表示されている数値。 グリッドに合わせる場合のブラシの最小単位が1 unit。
ただしグリッドに合わせない場合も、 小さくしすぎるとinvalid solid structureというエラーが出てブラシの形が崩れてしまう。どうやら、ブラシの最小の厚さは0.3 unitらしい。ただし、他のブラシにめり込ませて、0.1 unitだけずらすなどすればそれよりも薄く見せることができる。

まとめ

最初にも書いたが、結局最後はコンパイルして自分で歩きまわって確認・調整するしかない。
プレイヤースポーンや、プレイヤーモデルのプロップを置いて参考にするのも良い。

ちなみに、メートルやセンチとUnitを相互変換できるHammer Units Converterというソフトがあるので、一応紹介しておく。しかし実際のところあまり役に立たない。
http://www.moddb.com/engines/source/downloads/hammer-units-converter-22

Source SDK用のテクスチャを作る2 『VTFEditの使い方』

この記事ではVTFEditの操作を通じて、vtf自体についても解説する。マップやモデル等の制作者であれば理解しておくと役に立つだろう。この記事に載っている画像はValveのwikiから勝手に転載した。

VTFEditのダウンロード先
http://nemesis.thewavelength.net/index.php?c=178

VTFEdit以外にもvtfを作る方法はある(PhotoshopやGimp用のプラグイン等)のだが、まずはVTFEditを使ってみてvtfを理解しよう。ちなみにValve純正のvtfを作るツールは、Source SDKのbinフォルダ内にあるvtex.exeというコマンドラインツールであるが、非常に面倒くさいのでバッチ処理させるのでなければ使う価値はない。

VTFEditにインポートする画像の準備

拡張子

対応している拡張子はbmp, dds, gif, jpg, png, tga。使う拡張子に悩む人は、不透明ならbmp、透明度があるならpngを選んでおけばよい。もちろんtgaに馴染みのある人はtgaでもいい。

解像度

画像の解像度は縦横両方とも2の累乗で無ければならない。両方とも2の累乗であれば、縦と横の解像度は異なってもよい。
しかし、ワールドブラシの面にフィット(ブラシの面に合わせて伸縮)させるテクスチャの場合は基本的に正方形の解像度がおすすめ。なぜだか長方形解像度は伸縮させるとかなり荒く見える可能性が高い。どうしてもファイルサイズを節約したいのであれば長方形解像度を使ってもいいかもしれないが、その場合は同容量になる正方形解像度と比べて綺麗な方を採用するとよい。例えば、512*128と256*256のファイルサイズは同じ。

使う解像度は基本的に16*16, 32*32, 64*64, 128*128, 256*256, 512*512, 1024*1024, 2048*2048のどれか。これより高い解像度が必要になる場面は滅多に無いと思われる。特に一般的なタイリングテクスチャによく使うのは128*128、256*256、512*512あたりだろうか。

インポートオプション

VTF Option画面の項目をひとつずつ見ていこう。

General

Normal/Alpha Format

アルファチャンネルを持たない画像と、アルファチャンネルを持つ画像を変換するフォーマットをそれぞれ指定する。画像がアルファチャンネルを持っていない場合はNormal Formatのフォーマットが選ばれ、アルファチャンネルを持っている場合はAlpha Formatのフォーマットが選ばれる。

このため透明度を持たない画像にはbmpを使うのが安全だ。また、「Alpha FormatにもNormal Formatと同じフォーマットを設定しておき、強制的にアルファチャンネルを破棄させる」という方法もある。

プルダウンメニューを開くとフォーマットの種類が多くて嫌になりそうだが、実際に使うのは数種類なので安心してほしい。以下に書くフォーマット名横の括弧内は、そのフォーマットを使用して512*512pxのテクスチャを作成した場合のファイルサイズ。jpg等と違い、vtfは模様に関係なく解像度が同じならファイルサイズも同じになる。

まずDXTCという画像圧縮アルゴリズムを使う非可逆圧縮フォーマットの3つ。どうでもいい話だがこれはストレージの使用量ではなく、GPUで表示する時のメモリの使用量・帯域幅を抑えるためのフォーマットである。そのため一般的なjpgより品質が劣るにも関わらず、ファイルサイズはpngより大きい。
  • DXT1 (170KB): アルファチャンネルを持たない。最も広く使われている。地面や壁などのテクスチャは大体これ。
  • DXT1 With One Bit Alpha (170KB): 通称DXT1A。1ピクセルあたり1ビット、つまり「完全に不透明/完全に透明」の2階調しかないアルファチャンネルを持つ。ファイルサイズは実用上DXT1と全く同じと思ってよい。
  • DXT3 (341KB): これは普通使わないが、DXT5の説明の為に挙げた。1ピクセルあたり4ビット、つまり16階調のアルファチャンネルを持つ。
  • DXT5 (341KB): ファイルサイズはDXT3と同じだが、ほとんどの場合DXT3より遥かに滑らかなアルファチャンネルを表現できる。仕組みが知りたい人はググれば出てくる。
上の4種類で違いが出るのはアルファチャンネルだけで、RGB部分の品質は全く変わらない。つまり透明度を持たないテクスチャをDXT5にしてもファイルサイズの無駄でしかない。そしてそのRGB部分の圧縮アルゴリズムを簡単に説明しておくと、「画像を4*4px毎のブロックに分割して、それぞれのブロックの代表色2色に、代表色の中間の補完色2色を加えた、計4色で1ブロックを表現する」というもの。普通の写実的なテクスチャであれば劣化は拡大して見比べない限りまず分からない程度なので安心しよう。一方アニメ的というか細部の色相コントラストが高いテクスチャの場合、色のエッジの劣化が目立ってしまうことがあるが、それでもゲーム内で気になることは滅多に無い。とにかく品質を最優先したい時以外は、このDXTフォーマットを使うべきである。

右から無圧縮, DXT1, DXT5
そして無圧縮フォーマットの4つ。
  • BGR888 (1024KB): アルファチャンネルを持たない。要はbmpと同じ品質。
  • BGRA8888 (1366KB):アルファチャンネルを持つ。要はpngと同じ品質。
  • I8 (341KB): グレースケール(白~黒)のみ。
  • IA88 (682KB): I8にアルファチャンネルを加えたバージョン。
見ての通りDXTに比べて非常にファイルサイズが大きい。DXTで作ってみたら劣化がどうしても許容できないレベルだったという時にだけ使う。なおBGR888に似たような名前のフォーマットとしてRGB88があり、BGRA8888に似たような名前のフォーマットとしてRGBA8888,  ABGR8888, ARGB8888があるが、これらは格納するチャンネルの順番が違うだけだと思われる。vtfではBGR888とBGRA8888が一般的なフォーマットのようなので、上ではこの2つを挙げた。おそらくRGB888やRGBA8888なども普通に使えるはずだが、あえて選ぶ必要も無いだろう。

まとめると、以下の3パターンを覚えておけば大抵通用する。
  1. 圧縮フォーマット(低ファイルサイズ, 低画質): Normal Format = DXT1, Alpha Format = DXT5
  2. 無圧縮フォーマット(高ファイルサイズ, 高画質): Normal Format = BGR888, Alpha Format = BGRA8888
  3. 無圧縮グレースケール(中ファイルサイズ, 高画質, 白~黒のみ): Normal Format = I8, Alpha Format = IA88
これに、アルファ階調が2段階しかない場合のみAlpha Formatに使う、圧縮フォーマットであるDXT1Aが加わる。

なお、全てのピクセル(=画像全体)で同じ不透明度で良い場合、DXT5やBGRA8888を使う必要は無い。変換前の画像ファイルを完全に不透明にして、VTFEditでDXT1/BGR888で保存する。そしてvmtの$alphaパラメータで不透明度を設定する。下の例では全体の不透明度が50%になる。
    "$alpha" "0.5"
この方法は汚れていない窓ガラスのような質感のテクスチャに向いている。

Texture Type

分かりづらいが、これは連番BMP等で複数の画像をインポートした時に、それをどう扱うかを設定する。普通に画像を1枚だけインポートした場合は関係無い。 私もよく理解していないが、使うとすればせいぜいAnimated Textureぐらいだろう。これは文字通りアニメーションするテクスチャである。ただし、ゲーム内で正しく再生させるにはvmtファイルでフレームレートなどを設定する必要がある。

ちなみに私は256*128px, DXT1形式で、フレーム数900枚のアニメーションvtfを作ってみたことがある。VTFEditに読み込むのに数分掛かったが、普通にゲーム内で再生できた。ファイルサイズは19MBだった。

Mipmaps

Generate Mipmapsにチェックを入れると、元の解像度の画像に加え、縦横それぞれの解像度を1/2、1/4、1/8、1/16…としていった画像(ミップマップ画像)がvtfに保存される。
例えば、これにチェックを入れて128*128pxの画像をインポートした場合は、64*64, 32*32, 16*16, 8*8, 4*4, 2*2, 1*1の、計7枚のミップマップ画像が付いてくることになる。
そしてゲーム内では、視点からの距離に応じて小さい解像度のミップマップ画像が使われる。
これによって描画速度も画質も向上するという素敵なシステムである。

たまに勘違いしている人を見かけるのでもう一度書いておくが、一般的に、ミップマップを作成したほうが遠くから見た際の画質は向上する。ミップマップが無いテクスチャは遠くからみると不自然に縮小されてジャギーになってしまう可能性が高い。

Mipmap FilterとSharpen Filterを変えると、出来上がるミップマップ画像の仕上がりが変わる。これは一概にどれが一番良いとは言えないので、下の画像を参考に状況に応じて判断して欲しい。とはいえ、最も標準的なMipmap FilterはBox、最も標準的なShapen FilterはNone又はShapen Softなので、迷ったらこれらを選んでおけば良い。私は常時Box+Noneでやっている。
Mipmap Filter 1
Mipmap Filter 2
Mipmap Filter 3
Sharpen Filter
ちなみに、ミップマップを作成する場合のファイルサイズは、作成しない場合の4/3になる。元画像の解像度がなんであろうと4/3なので覚えておこう。特別な理由が無い限りミップマップ画像は作成しておいたほうが良い。

Resize

元画像のサイズの解像度が縦横それぞれ2の累乗でなくても、インポート時にリサイズすることによって使えるようにするという機能だが、使わないことをお勧めする。しっかりVTFEditに渡す前の画像編集ソフトでリサイズしておこう。

Normal Map

高さ情報を読み取るソースや方式を設定して、ノーマルマップに変換してくれる機能だが、VTFEditでノーマルマップを作成することはお勧めしない。PhotoshopやGimp用のプラグインや、SSbump Generator等の専用ソフトを使用したほうが良い。

Advanced

Version

とりあえず7.2に設定しておけば全てのゲームで使えるようなので、7.2を推奨する。7.3以降は「リソースデータシステム」なるものやCRC値が追加されているらしいが、我々にとってメリットは特に無いと思われる。

試しに7.5のvtfを作成してみたところ、Source Engine MP(TF2やCS:Sのエンジン)のハンマーエディタでは読み込めなかった。

Gamma Correction

画像のガンマを調整できる。 やはり、これも使わずに画像編集ソフト側で調整したほうが良いだろう。

Compute Reflectivity

画像のRGBの平均値か何かから、「このテクスチャに当たった光の反射光の強さ」を計算し、vtfに埋め込んでくれる機能。とても重要なので必ずチェックを入れること。

このテクスチャがLightmappedGenericとしてワールドブラシに貼られて、マップのコンパイル時に静的ライトの光が当たった時、反射する光の色や明るさがこの時計算したReflectivityの値によって決まる。チェックを入れなかった場合、Reflectivityの値は[1 1 1]となり、これは白い強烈な光を反射することになってしまう。モデルに使用するテクスチャの場合はチェックを入れても入れなくても何も変わらない。

この時計算されたReflectivityが気に入らない場合は、vmtに$reflectivityパラメータを追加することで、マップのコンパイル時に参照されるReflectivityを上書きできる。これによって、テクスチャの色とは全く異なる色を反射させることもできる。下の例では、白い光をほのかに反射する。(.1とは、0.1を省略した形)
    "$reflectivity" "[.1 .1 .1]"
当然この値を変更してもマップを再コンパイルするまで効果は現れない。

なおSourceエンジンにおいて、この反射光は、テクスチャの模様には影響されないので注意が必要。例えば、右半分が赤、左半分が青でべた塗りされたテクスチャを作り、ワールドブラシに貼り付ける場合、「赤の部分からは赤い光を反射させ、青の部分からは青い光を反射させる」ということは出来ない

Generate Thumbnail

チェックを入れると、16*16pxのDXT1形式のサムネイルがvtfに埋め込まれる。これが実際に使われる場面があるのかは知らないが、ファイルサイズの増加量はごくごく僅かなので、チェックを入れておいて損は無いと思われる。

DXT Compression

QualityをMediumやLowにすると、画像の品質が落ち、VTFEditが画像を読み込む時間が僅かに短くなる。それだけなのでHighにしておくこと。LowやMediumにしてもファイルサイズは全く変わらない

Luminance Weights

これはフルカラー画像をグレースケール(つまりI8とIA88フォーマット)に変換する際に、RGBそれぞれのチャンネルにどれくらい比重を置くかという設定。それ以外のフォーマットならば何も影響しない。

これも基本的には画像編集ソフト側でグレースケール化したほうが良いと思うが、リサイズやガンマ調整と違ってシンプルなので、元々彩度の低い画像をさくっとグレースケール化したい場合は使っても良い。

基本的には自分で考える必要は無く、以下の2パターンから好きな方を選べば良い。
  1. Red = 0.213, Green = 0.715, Blue = 0.072
  2. Red = 0.299, Green = 0.587, Blue = 0.114
パターン1はPhotoshopでも用いられている最も一般的なもの。パターン2は、赤と青の比重が高いバージョンである。無論どちらでもあまり変わらない。

Unsharpen Mask Options

よく分からない。 いくつか値を変えてみたが、違いが分からなかった。
ミップマップのShapen FilterがUnsharpen Maskに設定されている時、ミップマップ画像に影響する?どうせ使う必要が無いので試していない。
とりあえずThresholdをデフォルトの0.00にして、Unshapen Mask以外のSharpen Filterを選んでおけば勝手にアンシャープが掛けられることは無いだろう。

X Sharpen Options 

Unsharpen Maskと同じくよく分からない。ミップマップのShapen FilterがXSharpenに設定されている時のみ、ミップマップ画像にのみ影響する?
とりあえずこれも気にしないでいい。

Resources

このタブの機能はVersionが7.3以上で無いと使用できない。

LOD Control Resource

よく分からないがチェックを入れる必要は無いと思う。一応Valve wikiの説明をそのまま貼っておく。

An U/V LOD control. This is the highest mipmap which should be loaded when game's Texture Detail setting is "High" (mat_picmip 0). An U LOD Control value of 11 selects the mipmap which is 2048 pixels (211) across. 
Note: Since users are currently only presented with one texture detail setting above High, there is little point setting this value to anything except 50% or 100% of your texture's size.

Information Resource

あなたの名前や連絡先、テクスチャの説明などを入れられる。つまり使わない。

VTFEditのメインウィンドウで出来ること

VTFEditで重要なのはインポートオプションなので、メインウィンドウで出来ることは少ない。

上部メニュー

File>Save As...でvtfファイルとして保存できる。Exportならbmp/jpg/png/tgaで保存できる。

View>ChannelでR/G/B/Aそれぞれのチャンネルのみを表示できる。
View>Maskでアルファチャンネルを適用するかしないか切り替えられる。
View>Tileでこのテクスチャをタイリング(並べること)した時にどう見えるかを確認できる。
なおこれらの表示設定がどうであろうと保存する際のvtfには影響しない。Maskのチェックを外した状態で保存したからといってアルファチャンネルが破棄されるわけではない。

Tools>Create VMT Fileでテキストエディタを使用せずにvmtが作れる。しかし使えるパラメータは一部だし、慣れてしまえばテキストエディタで書いたほうが早いので出番はあまりない。
Tools>Convert Folderでフォルダごとpng→vtfやvtf→bmpなどに一括で変換できる。たまに使う。

Options>Auto Create VMT Fileにチェックを入れると、$basetextureを保存するvtfに指定したvmtを、vtfの保存場所と同じフォルダに作成してくれる。少しだけ手間が省ける。ただしvtfの保存場所がいずれかのゲームの"materials\"以下でない場合は$basetextureはvtfのパスをうまく指定してくれない。(当たり前だが)
Options>File MappingとVolatile Accessは分からない。デフォルトでチェックが入ってるのでとりあえずチェック入れてしておけば良いと思う。

横のメニュー

最初「サイドメニュー」と書こうとしたが、それだと豚汁やサラダ等になってしまう気がした。(この記事内で最もどうでもいい情報)

File System

使わない。

Image

Frame: 複数の画像を持つAnimated Textureの場合はここで各フレームを確認できる。
Face: 複数の画像を持つEnvironment Mapの場合はここで各面を確認できる。
Slice: 複数の画像を持つVolume Textureの場合は・・・作ったこと無いので知りません。
Mipmap: 各ミップマップ画像を確認できる。
Key, Shift, Gamma: 使わない。使えない。
Play: 複数の画像を持つAnimated Textureの場合は再生できる。

Flags

色んなフラグがあるが、ほとんどはvtex.exeでコンパイルする場合しか効果が無く、VTFEditで使うのは基本的に「No Level Of Detai」だけ。これにチェックを入れると、プレイヤーのビデオ設定のテクスチャ品質に関係なく最高画質で表示されるようになる。どうしても綺麗に表示させたいテクスチャの場合はこれにチェックを入れる。文章を書いてプレイヤーを案内するようなタイプのテクスチャでは必ずチェックを入れておこう。

他のフラグについて少し補足をすると、例えば「Normal Map」というFlagがあるが、別にこれにチェックが入っていなくてもノーマルマップのテクスチャとして使える。vtex.exeでは、無圧縮フォーマットを選択する等の効果があるらしい。

「Clamp S」と「Clamp T」について
TF2などのスプレー作成ガイドではこの2つのフラグにチェックを入れておけ、と書いてあるのをよく見かけた。必須ではないが、タイリングする必要が無いテクスチャの場合はチェックしておくとよい。詳しく知りたい人は「テクスチャアドレッシング」でググれば出てくる。

Info

解像度やフォーマット等を確認できる。 特にフォーマットは忘れずに確認しておこう。

StartとBumpmapの数値を弄れるが何に使うのかは知らない。そっとしておこう。

Resources

リソースを確認できる。つまり使わない。

Source SDK用のテクスチャを作る1 『基礎知識』

タイトルでは「テクスチャ」としているが、正確には「マテリアル」である。Sourceエンジンのゲームのマテリアルは、基本的に.vtfと.vmtという2つの拡張子のファイルで成り立っている。

vtfとはValve Texture Formatの略で、要はゲームに適する方法で圧縮されたbmpやpngのようなもの。いわゆるテクスチャ。
vmtとはValve Material Typeの略で、マテリアルの種類や細かいパラメータをテキストとして記述する。

vtfは、vmt内で指定される事によって初めて使えるようになる。(エンジンやゲーム自体のハードコードで指定されているvtfは例外)

とりあえず最小構成のvmtファイルを見てみよう。vmtファイルはテキストエディタで開くことができる。メモ帳などのシンプルなエディタでも問題ない。
LightmappedGeneric
{
    "$basetexture" "example\texture01"
}
1行目でこのテクスチャに使うシェーダーを指定している。このLightmappedGenericは「ハンマーエディタのブラシ(ワールドジオメトリ)の表面に貼り付けてライトマップ(ライティング)を焼きこむテクスチャ」ということ。
そして$basetextureパラメータでvtfファイルの場所を指定している。"materials\"以前と拡張子(.vtf)は省略するので、これがGarry's Modのテクスチャだとすれば、"SteamApps\アカウント名\garrysmod\garrysmod\materials\example\texture01.vtf"を指定していることになる。

シェーダーやパラメータは他にも沢山あるが、とりあえず上のことだけ理解しておけば実際にゲーム内に登場させられるテクスチャのvmtを作ってみることはできる。

この日本語の解説ページにはワールドブラシのテクスチャによく使うvmtシェーダーとパラメータがまとめてある。
http://www.schuzak.jp/cs-s/tutCustomTex.html

モデルのテクスチャには基本的にVertexLitGenericシェーダーを使う。VertexLitGenericには$phongや$halflambertなどの専用パラメータがあり、やろうと思えばワールドブラシより高度な質感の表現ができる。その分凝り始めるとなかなか時間がかかる。

マテリアルプロキシという簡易的なスクリプトのような何かを使用すると、マテリアルを点滅・スクロール・フェードなどさせることができる。下のページには実用的な使用例が挙げられている。
http://www.nodraw.net/2010/01/dynamic-materials-with-proxies/