Mapping ve Hammer

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:

SonekTarafÖrnek
upüstmaterials/skybox/sky_day01_01up.vmt
dnaltmaterials/skybox/sky_day01_01dn.vmt
lf, rtsol, sağsky_day01_01lf.vmt, sky_day01_01rt.vmt
ft, bkön, arkasky_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"
}
  • $nofog gökyüzünü sisin dışında tutar, $ignorez ise 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 sky shader'ını $hdrcompressedtexture ile 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

KeyvalueVarsayılanEtki
Fog Enable (fogenable)NoSisi açar, yoksa yeni bir entity hiçbir şey göstermez
Fog Start (fogstart)500Sisin başladığı mesafe
Fog End (fogend)2000En yüksek yoğunluğa ulaşılan mesafe
Fog Max Density (fogmaxdensity)10 ile 1 arasında en yüksek yoğunluk
Primary Fog Color (fogcolor)255 255 255Sis 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:

  1. Haritaya bir color_correction yerleştir ve "Lookup Table Filename" alanını şimdilik boş bırak.
  2. Haritayı yükle, sv_cheats 1 komutunu etkinleştir ve colorcorrectionui yaz.
  3. Araç penceresinde filtreler oluştur ve onları ayarla. Bunu yaparken entity'nin menzilinde kal.
  4. Sonucu .raw olarak kaydet ve dosyayı materials/colorcorrection/ altına koy.
  5. 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

BelirtiNedenÇözüm
Gökyüzü siyah ya da pembe-siyah dama deseni gösteriyorAd 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 uymuyorsky_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 kesiliyorFar 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 etkiliFalloff 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.