GMod haritaları için özel skybox, sis ve color correction
Haritanın gökyüzünü, sisini ve görünümünü ayarla: 2D skybox ve özel gökyüzü texture'ları, Far Z ile env_fog_controller, color_correction ve HDR pozlama.
Bir haritanın gökyüzünü iki şeyle belirlersin: tools/toolsskybox materyalini kullanan yüzeyler ve Map > Map Properties altındaki gökyüzü adı. Sis bir env_fog_controller entity'sinden, renk atmosferi .raw dosyası olan bir color_correction entity'sinden gelir, HDR pozlamayı ise bir env_tonemap_controller sınırlar. Sis rengi, güneş ışığı ve color correction gökyüzü görüntüsüyle uyumlu olmalıdır.
2D skybox nasıl çalışır
tools/toolsskybox kullanan yüzeyler gökyüzüne açılan pencerelerdir. Motor oraya altı görüntüden oluşan bir küp çizer. Bu küp her zaman kameranın çevresinde durur ve bu yüzden sonsuz uzaklıkta görünür. Bunların hangi görüntüler olduğunu Map Properties'teki "SkyBox Texture Name" (skyname) alanı belirler. Varsayılan değer sky_day01_01 şeklindedir.
Yalnızca temel adı girersin, skybox/ olmadan ve uzantısız. Motor küpün her tarafı için bir sonek ekler ve materyali materials/skybox/ altında arar:
| Sonek | Taraf | Örnek |
|---|---|---|
up | üst | materials/skybox/sky_day01_01up.vmt |
dn | alt | materials/skybox/sky_day01_01dn.vmt |
lf, rt | sol, sağ | sky_day01_01lf.vmt, sky_day01_01rt.vmt |
ft, bk | ön, arka | sky_day01_01ft.vmt, sky_day01_01bk.vmt |
Half-Life 2 gökyüzlerinin çoğu, sonekten önce _hdr gelen bir HDR seti olarak da bulunur, örneğin sky_day01_01_hdrup. Oyunda sv_skyname geçerli adı gösterir. Geometriden oluşan uzak dekor, bu görüntünün önüne çizilen 3D skybox ile kurulur.
Hazır bir gökyüzü kullanma ya da kendininkini ekleme
GMod, Half-Life 2 gökyüzleriyle (sky_day01_01 ile sky_day03_06 arası, sky_borealis01, sky_wasteland02) ve ayarlanabilir bir gökyüzüyle birlikte gelir: painted gökyüzü adı ve env_skypaint entity'siyle gökyüzü renklerini doğrudan ayarlarsın. Bu gökyüzleri için hiçbir şey paketlemen gerekmez.
Özel bir gökyüzü, materials/skybox/ içindeki altı VTF dosyasından ve altı VMT dosyasından oluşur. Oyunla birlikte gelen bir gökyüzünün VMT'si en iyi şablondur:
"UnlitGeneric"
{
"$basetexture" "skybox/mymap_skyup"
"$nofog" "1"
"$ignorez" "1"
}
$nofoggökyüzünü sisin dışında tutar,$ignorezise onu derinlik testi olmadan çizer, böylece bütün geometrinin arkasında kalır.- Oyunla birlikte gelen gökyüzü texture'ları Clamp S, Clamp T, No Mipmap ve No LOD VTF flag'lerini taşır. Clamp olmadan küpün kenarlarında ek yerleri görünebilir.
- Şablonların HDR seti
skyshader'ını$hdrcompressedtextureile kullanır. HDR seti olmayan özel bir gökyüzünü özellikle bir HDR haritasında test et.
On iki dosyanın tamamı BSP'ye girmelidir, bkz. Özel içeriği BSP içine paketleme. VTF ve VMT dosyalarının nasıl yapıldığı VTF ve VMT ile özel texture oluşturma yazısında anlatılıyor.
Işığı gökyüzüne uydurma
Gökyüzü yalnızca bir görüntüdür, ışık light_environment entity'sinden gelir. Pitch ve Yaw görüntüdeki güneşin konumuna uymalıdır, "Brightness and Color" güneş ışığının rengini, "Ambient Color and Brightness" ise gökyüzünün rengini taşır. Valve'ın gökyüzleri için Valve Developer Community, resmi haritalardan alınan değerlerin yer aldığı bir Sky List tutar. Entity'lerin kendisi Source Engine ışıklandırma rehberi yazısında açıklanıyor.
env_fog_controller ile sis
| Keyvalue | Varsayılan | Etki |
|---|---|---|
Fog Enable (fogenable) | No | Sisi açar, yoksa yeni bir entity hiçbir şey göstermez |
Fog Start (fogstart) | 500 | Sisin başladığı mesafe |
Fog End (fogend) | 2000 | En yüksek yoğunluğa ulaşılan mesafe |
Fog Max Density (fogmaxdensity) | 1 | 0 ile 1 arasında en yüksek yoğunluk |
Primary Fog Color (fogcolor) | 255 255 255 | Sis rengi |
Far Z Clip Plane (farz) | -1 | Ötesinde hiçbir şeyin çizilmediği mesafe. -1 kapalı demektir |
Sis tek başına performans kazandırmaz, yalnızca uzaktaki yüzeyleri renklendirir. Kazanç Far Z'den gelir: ötesinde kalan şeyler çizilmez, VVIS de değeri env_fog_controller entity'sinden okur ve görünürlüğü daha derleme sırasında bununla sınırlar. FGD'ye göre Far Z, Fog End'den yüksek olmalı ve Fog Max Density 1 olmalıdır, çünkü aksi halde arkadaki boşluk görünür hale gelir. Diğer ayar noktaları GMod harita performansını optimize etme yazısında ele alınıyor.
Gökyüzü sisin dışında tutulduğu için tamamen sise gömülmüş binalar onun önünde düz, tek renkli şekiller olarak belirir. Bu yüzden ufka uyan bir sis rengi seç.
3D skybox'ın sky_camera içinde kendi sisi vardır, renk, başlangıç, bitiş ve yoğunluk için aynı alanlarla. Motor başlangıcı ve bitişi skybox'ın ölçeğine kendisi çevirir, yani env_fog_controller entity'sindekiyle aynı sayıları girersin. Birden fazla controller varsa FGD, "Master" flag'i olana öncelik verir. GMod'da bölgeye göre farklı sisi bir fog_volume devreye sokar.
color_correction ile renk atmosferi
Color correction, bitmiş görüntünün her rengini bir başkasıyla değiştiren bir arama tablosudur. Yaklaşık 96 KB'lık bir .raw dosyası olarak gelir ve oyun içinde oluşturulur:
- Haritaya bir
color_correctionyerleştir ve "Lookup Table Filename" alanını şimdilik boş bırak. - Haritayı yükle,
sv_cheats 1komutunu etkinleştir vecolorcorrectionuiyaz. - Araç penceresinde filtreler oluştur ve onları ayarla. Bunu yaparken entity'nin menzilinde kal.
- Sonucu
.rawolarak kaydet ve dosyayımaterials/colorcorrection/altına koy. - Yolu entity'ye gir, yeniden derle ve dosyayı BSP'ye paketle.
Dosya adı (filename) oyun klasörüne görelidir ve uzantıyı içerir, örneğin materials/colorcorrection/mymap.raw. gmad'in whitelist'i .raw dosyalarına yalnızca materials/colorcorrection/ altında izin verir.
"Lookup Falloff Start Distance" varsayılan olarak 0, "Lookup Falloff End Distance" ise 200'dür. Bu durumda düzeltme yalnızca entity'nin 200 birim çevresinde etkili olur ve dışa doğru azalır. Haritanın tamamı için her iki alana da -1 gir. "Maximum Weight" gücü kontrol eder, Enable ve Disable ile de atmosferler arasında geçiş yaparsın.
env_tonemap_controller ile HDR pozlama
Bir HDR haritasında motor pozlamayı sürekli ayarlar: parlak sahneleri karartır, karanlık sahneleri aydınlatır. env_tonemap_controller bunun için sınırlar koyar. GMod'un FGD'sinde bunun için keyvalue'su yoktur, onu input'larla kontrol edersin, en kolayı bir logic_auto üzerinden:
My Output Target Entity Target Input Parameter
OnMapSpawn tonemap SetAutoExposureMin 0.8
OnMapSpawn tonemap SetAutoExposureMax 1.6
OnMapSpawn tonemap SetBloomScale 0.5
Sayılar örnek değerlerdir. SetAutoExposureMin parlak bir sahnenin ne kadar karartılacağını, SetAutoExposureMax ise karanlık bir sahnenin ne kadar aydınlatılacağını sınırlar. Source SDK'da başlangıç değerleri 0.5 ve 2'dir. SetBloomScale parlak yüzeylerin çevresindeki parlamayı kontrol eder. SetTonemapRate ayarlamanın hızını belirlemek için tasarlanmıştır ama Valve Developer Community'ye göre CS:GO öncesi motor dallarında yalnızca tek oyunculu modda etkili oluyordu. Bu yüzden onu bir sunucuda kontrol et. SetTonemapScale ve BlendTonemapScale input'ları GMod'un FGD'sinde, hiçbir zaman çalışmadıkları notuyla yorum satırına alınmıştır. Output'ların yapısı Hammer input ve output yazısında gösteriliyor.
Tipik sorunlar
| Belirti | Neden | Çözüm |
|---|---|---|
| Gökyüzü siyah ya da pembe-siyah dama deseni gösteriyor | Ad yanlış yazılmış, dosyalar paketlenmemiş ya da sonekler yanlış | Konsolda Unable to load sky mesajına bak, sv_skyname değerini kontrol et, paketle |
| Gökyüzü 3D skybox'a uymuyor | sky_camera sisi env_fog_controller sisinden farklı | Rengi, başlangıcı, bitişi ve yoğunluğu eşitle |
| Geometri uzakta gözle görülür biçimde kesiliyor | Far Z, Fog End'den düşük, yoğunluk 1'in altında ya da sis kapalı | Far Z'yi Fog End'in üstüne çıkar, yoğunluğu 1 yap, "Fog Enable" değerini Yes yap |
| Color correction yalnızca tek bir noktada etkili | Falloff hâlâ 0 ve 200'de | İki değeri de -1 yap |
| Color correction oyuncularda yok | .raw paketlenmemiş, yol uzantısız ya da oyuncu tarafından kapatılmış | Yolu kontrol et, paketle, mat_colorcorrection 0 ve 1 ile karşılaştırarak dene |
Color correction ve HDR grafik seçenekleridir ve bir sunucu color correction'ı sv_allow_color_correction ile engelleyebilir. Yani harita ikisi olmadan da okunabilir kalmalıdır. Gökyüzü materyallerinin ve .raw dosyasının pakfile'da olup olmadığını, gömülü dosyaları listeleyen Map Scanner üzerinden görebilirsin.
Sık sorulan sorular
Bir haritanın birden fazla gökyüzü olabilir mi?
Hayır. Gökyüzü adı haritanın tamamına ait bir özelliktir ve tools/toolsskybox görünen her yerde geçerlidir. Bölgeye göre farklı atmosferler sis, color correction ve ışıkla elde edilir.
Gökyüzü texture'ları ne kadar büyük olmalı?
Varsayılan gökyüzü sky_day01_01, üst taraf için 512 × 512, yanlar için 512 × 256 piksel kullanır. Daha büyük texture'lar daha keskindir ama altı taraf olduğu için haritanın dosya boyutuna altı kat yansır.
Haritam diğer oyuncularda neden farklı görünüyor?
Çoğunlukla grafik seçenekleri yüzünden. HDR ile HDR lightmap'leri, tonemapping ve HDR gökyüzü geçerli olur, HDR olmadan LDR sürümü. Color correction kapalıysa renk atmosferin eksik kalır. Yayınlamadan önce iki varyantı da test et.