マップを作っていると、あるところから急にコンパイル時間が長くなり
下手をすると1週間経っても計算が終わらない・・・という悲惨なことが起こります。
また、マップが重い(FPSが低い)とそもそもゲームになりません。
こういうことを避けるために、何をどうしたらいいのかをまとめてみました。
これは箱マップチュートリアルのCaulkのところでも書きました。
とにかく最初にブラシを作ったらCaulkボタンを押してCaulkにしてしまいましょう。
テクスチャは見える部分にだけ貼るようにします。
ブラシの無駄な重なりがないようにキレイに作りましょう。
ブラシには大きく分けて2種類あり、structuralブラシとdetailブラシと呼ばれ
それぞれコンパイル時に異なる扱いをうけます。
structuralブラシはいわゆる普通のブラシを指し、BSPコンパイルによって
空間を分割してどこからどこが見えて見えなくなるかのデータを生成します。
detailブラシは、そういった空間分割のデータを生成しません。
そこで、視線を妨げない物は全て detail ブラシにすることで
コンパイル時間を大幅に短縮することができます。
detail化の方法はブラシを選択して、[Selection]メニュー→Make detail
またはCtrl+Mキーを押すだけ。
視線を妨げないものとは、具体的には、机、テーブル、蛍光灯なのど壁の小品、単独の木箱、などです。
要するに壁以外は全てだと思えばいいでしょう。
detail指定はマップの一番外側(空など)を区切るブラシには使えません。
そういうブラシをdetail指定してしまうと、LEAKエラーが発生するので注意。
間違ってdetail化してしまった場合ブラシを選んで[右クリック>Make Structural]で元に戻せます。
標準では512ユニットごとに勝手に空間分割データが生成されます。
広いマップの場合、これを大きくしてあげることでコンパイル時間の短縮が望めます。
具体的には worldspawnエンティティに _blocksize キー を設定してあげます。
値はマップの規模によってかわりますが、1024とか2048とか。
この方法でblocksizeを大きくした場合は、自分で必要そうなところに Hintブラシをあちこち設置するといいでしょう。
マップの一部だけをコンパイルすることができます。
まったく根本的な解決にはなりませんが、特にライティングのコンパイルに時間がかかる場合に作業が格段にやりやすくなると思います。