自前のテクスチャーを追加してみよう。
使える画像ファイルの形式はJPEGかTGA。 TGA形式だとαチャンネル(透過)情報が持てます。
画像のサイズは必ず2のべき乗(...64,128,256,512)でないといけません。
例えば 64x128 や 256x512 などで、最小は16x16、最大は1024x512までです。
ほとんどの公式の壁用テクスチャには 512x512 が使われています。
Radiantの設定のスケールサイズの設定を済ませていれば、
テクスチャーは1/4にスケールされて貼られるので 512x512 の大きさの画像は、
128x128 の大きさのブラシにぴったり重なるようになります。
では、実際にこんな画像を追加してみます。
kincho.jpg(256x256)
画像はtexturesディレクトリの下にディレクトリを作って、その中に保存します。
ディレクトリ名は自分のマップ名にすれば他のマップとバッティングしなくて済みます。
textures/マップ名/画像ファイル
ここでは textures/test/kincho.jpg というパスに保存してみます。
scripts/shaderlist.txtを開いて、末尾にディレクトリ名(test)を追加します。
Radiantを再起動すると[Textures]メニューから先ほど付け加えたディレクトリ名(test)を選択できるようになります。
コンパイルしてテストプレイしてみればわかりますが、このテクスチャはコンクリートの扱いになります。
鉄板の表面効果にするには、次節のシェーダーを記述しないといけません。
テクスチャーの表面効果を設定するには、シェーダーファイルを記述する必要があります。
何も記述しないと表面はコンクリート扱いされます。
scriptsディレクトリの下に、マップ名.shaderというファイルを作ります。
今回の例では scripts/test.shader としました。
このファイルをメモ帳(その他適当なテキストエディタ)で開いて以下のように記述します。
textures/test/kincho { qer_editorimage textures/test/kincho.tga surfaceparm mat_metal { map $lightmap rgbGen identity } { map textures/test/kincho.tga blendFunc GL_DST_COLOR GL_ZERO rgbGen identity } }
何が何だかサパーリ分からないと思いますが詳しいことはシェーダーについてのページを読んでください。
とりあえず大切なところだけ解説します。
1行目:
textures/test/kincho
最初にシェーダーの名前を宣言してます。
textures/マップ名/シェーダー名という形式で名前をつけます。
シェーダー名は特に事情の無い限りファイル名のサフィックス(.jpgなど)を取った
名前にするのがいいでしょう。
3行目:
qer_editorimage textures/test/kincho.tga
Radiantのテクスチャウィンドウで表示するときの画像ファイルを指定します。
jpg ファイルなのに .tga になってますがそういう仕様です 。
4行目:
surfaceparm mat_metal
表面効果パラメータを指定しています。詳しくは次節で。
10行目:
map textures/test/kincho.tga
実際にゲーム中で使われる画像ファイルを指定しています。
これもサフィックスが .tga になってますがそういう仕様なのです。
surfaceparmを記述することでコンクリート以外の表面効果を演出することができます。
表面効果は、弾丸が当たったときの効果音、プレイヤーの歩行音、貫通度合いなどに影響を与えます。
TCEで有効な surfaceparm は以下の表の通りです。
surfaceparm | 表面効果 | 貫通 | 備考 |
---|---|---|---|
(surfaceparm無し) | セメント | × | cementに同じ |
mat_branch | 小枝・茂み | 貫通 | 足音ガサガサ textures/common/branchclip |
mat_brick | ブロック | × | 弾煙が赤色の粒状 |
mat_brick_grey | ブロック | × | 弾煙が灰色の粒状 |
mat_brick_yellow | ブロック | × | 弾煙が黄色の粒状 |
mat_cardboard | ダンボール | 貫通 | 弾痕小さい 足音トコトコ |
mat_carpet | カーペット | 貫通 | cardboardと同じ? |
mat_cement | セメント | × | セメントコンクリート(デフォルト) |
mat_ceramic | 陶器 | 貫通 | 貫通以外はcementと同じ? |
mat_clay | 粘土 | × | 弾音少し穏やか |
mat_dirt | 土 | × | gravelと同じ? |
mat_fabric | 繊維 | 貫通 | 弾痕小さい plasticと同じ? |
mat_fence | フェンス | 貫通 | フェンス 弾痕無し textures/common/fenceclip |
mat_flesh | 生肉 | 貫通 | 血しぶき textures/common/fleshclip |
mat_foliage | 落ち葉 | 貫通 | 土煙 足音ガサガサ |
mat_glass | ガラス | 貫通 | 弾痕がガラス |
mat_grass | 草土 | 貫通 | 土煙 足音gravelより静か |
mat_gravel | 砂利 | × | 土煙 足音ザクザク |
mat_metal | 金属 | 貫通 | いわゆる金属 textures/bruce_misc/metalclip |
mat_mud | 泥 | 貫通 | ceramicと同じ? |
mat_plastering | しっくい | × | 弾煙が白色の粒状 |
mat_plastic | プラスチック | 貫通 | 弾痕小さい textures/bruce_misc/pvcclip |
mat_plastic_soft | 柔プラスチック | 貫通 | carpetに同じ? |
mat_roof | 金属屋根 | 貫通 | 金属 屋根っぽい足音 |
mat_sand | 砂 | × | 土煙 足音とても静か |
mat_snow | 雪 | 貫通 | 雪 |
mat_soil | 土壌 | × | sandと同じ? |
mat_steel | 鉄板 | × | 金属 |
mat_straw | 麦わら | 貫通 | 弾煙が麦わら |
mat_stucco | 漆喰 | × | 弾煙が白色の粒状 plasteringより派手? |
mat_tiles | タイル | × | cementと同じ? |
mat_tin | 薄い金属 | 貫通 | metalより貫通音低い ドラム缶など |
mat_wet | 濡れた | × | 謎 cementと同じ? |
mat_wood | 木 | 貫通 | 木 textures/common/woodclip |
mat_wood_hollow | 空洞な木 | 貫通 | woodと同じ? |
noclimb | (特殊) | × | フリークライム禁止 textures/common/noclimbclip |
nopierce | (特殊) | × | 貫通阻止 textures/coroner_snow/snowy05_nopierce |
&ref(): File not found: "049custparms.pk3" at page "カスタムテクスチャ";に上記すべてのパラメータを適用したテクスチャのサンプルを収録してみました。devmapしてお試しください。
前節で記述したシェーダーファイルを保存します。
そしてRadiantを再起動。
shaderファイルはRadiantを起動したときだけ1度だけ読まれるため再起動する必要があります。
[Textures]→test を見ると、さっきと同じく kincho テクスチャが見れますが
よく見ると詳細名表示が変わっているのがわかります。
shader記述前 | →→→ | shader記述後 |
---|---|---|
|
|
|
test/kincho | textures/test/kincho |
これがshaderが読み込まれた証拠です。
この textures/test/kincho テクスチャを貼れば、メタル効果のキンチョウの看板の出来上がりです。
他のカスタムマップのテクスチャを使う場合、テクスチャ画像とシェーダーの記述内容をすべてコピーして、pk3の中に梱包しないといけません。
・画像はtextures/自分のマップ名/ディレクトリの中にコピーします。
・scripts/自分のマップ名.shaderファイルを作って、必要なシェーダー定義をコピーします。
・シェーダー名とディレクトリパスを全て textures/自分のマップ名/ に変えます。
面倒と思うかもしれませんが、テキストエディタの置換機能を使えば一発でできるはずです。
以上の手順を踏んで梱包したpk3を作らないとテクスチャ化けが起こります。
shader名がバッティングすると特に危険なことになるのでくれぐれもご注意を。
ついでながら、一般に公開するpk3ファイルには test.shaderというファイル名は使わないで 下さい。
あちこちのマップで使われていてバッティングしまくり。ご協力お願いします。