Özel içeriği BSP içine paketleme: texture, model ve sesler
Özel içeriği BSP içine paketleme: içine ne girer, bspzip, CompilePal ve VIDE nasıl çalışır, hangi klasör yapısı geçerli ve sonuç nasıl kontrol edilir.
Kendi texture'larını, modellerini ve seslerini BSP'ye paketlemek için onları son derlemeden sonra bspzip, CompilePal veya VIDE gibi bir araçla haritanın pakfile'ına yazarsın. Motor bu dosyaları artık doğrudan haritadan yükler ve oyuncuların bunlar için ek bir indirme yapması gerekmez. Paketleme yapmazsan oyuncular texture yerine pembe siyah damalı kareler, model yerine de kırmızı ERROR yazıları görür.
İçeriği neden paketlemelisin
Bir BSP, geometri ve ışıklandırmanın yanında gömülü dosyalar için ayrı bir bölüm de içerir: pakfile. Teknik olarak bu, haritanın içindeki bir arşivdir. Harita yüklenirken motor, bu arşivin içeriğine dosyalar oyun klasöründeymiş gibi davranır. Garry's Mod burada bir sınır koyar: Aralık 2023 güvenlik yamalarından beri oyun, gömülü dosyaları bir whitelist'e göre kontrol eder ve kontrolden geçemeyen dosya mount edilmez. Konsolda o zaman BSP embedded file failed whitelist check görünür. Bir BSP'nin genel olarak nasıl yapılandığı BSP dosyası nedir? yazısında anlatılıyor.
Diğer seçenek, içeriği ayrı olarak, örneğin bir addon şeklinde dağıtmaktır. Bu da çalışır ama hata çıkabilecek nokta sayısı daha fazladır: bir dosya eksiktir, bir addon'a abone olunmamıştır, bir yol yanlıştır. Paketlenmiş bir harita ise her yerde aynı görünen tek bir dosyadır.
BSP'ye neler girer
| İçerik | Dosyalar | Hedef klasör |
|---|---|---|
| Materyaller | .vmt ve .vtf | materials/ |
| Modeller | .mdl, .vvd, .phy ve .vtx dosyaları | models/ |
| Sesler | .wav veya .mp3 | sound/ |
Kolayca unutulanlar:
- bir modelin, modelin kendisinden farklı bir klasörde duran materyalleri
- bir VMT'nin başvurduğu ek texture'lar, örneğin normal map'ler
materials/skybox/altındaki özel skybox texture'ları- soundscape gibi haritaya özel script'ler ve özel particle dosyaları
BSP'ye girmemesi gerekenler: her oyuncunun oyunla birlikte zaten sahip olduğu içerikler, kullanılmayan dosyalar ve VMF, TGA veya PSD gibi kaynak dosyalar.
Doğru klasör yapısı
Pakfile'ın içinde, garrysmod/ oyun klasöründekiyle aynı yollar geçerlidir:
materials/yourname/yourmap/wall_concrete01.vmt
materials/yourname/yourmap/wall_concrete01.vtf
models/yourname/yourmap/lantern.mdl
sound/yourname/yourmap/hall_ambient.wav
Şu üç kural seni sorunların çoğundan kurtarır:
- Kendine ait bir alt klasör. Benzersiz bir klasör adı sayesinde başka addon'ların dosyalarının üzerine yazmazsın, seninkilerin üzerine de yazılmaz.
- Küçük harf, boşluk yok, özel karakter yok. Linux sunucuları büyük küçük harfe duyarlıdır. Windows'ta çalışan bir yol orada çalışmayabilir.
- VMT'deki yolları kontrol et. Bir VMT, VTF dosyasına
materials/klasörüne göre ve dosya uzantısı olmadan başvurur. Dosyaları taşırsan bu başvuruları da düzeltmen gerekir.
Araçların karşılaştırması
| Araç | Tür | Güçlü yanı |
|---|---|---|
bspzip | Oyunun bin klasöründeki Valve komut satırı programı | Tam kontrol, script'ler için uygun |
| CompilePal | Topluluğun geliştirdiği derleme arayüzü | Kullanılan içeriği otomatik bulur ve derlemeden sonra ayrı bir adım olarak paketler. Bu adımı Garry's Mod ile uyumsuz olabilir diye kendisi işaretler, bu yüzden sonucu kontrol et |
| VIDE | Pakfile düzenleyicisi içeren topluluk araç koleksiyonu | Haritayı tarar, listeyi gösterir, dosya eklemene veya çıkarmana izin verir |
bspzip kullanırken ona tüm dosyaları listeleyen bir metin dosyası verirsin:
bspzip -addlist yourmap.bsp filelist.txt yourmap_packed.bsp
bspzip -dir yourmap_packed.bsp
Liste satır çiftlerinden oluşur: önce harita içindeki yol, onun altında da dosyanın diskindeki tam yolu. İkinci komut pakfile'da neler olduğunu gösterir.
Otomatik araçlar haritanın doğrudan kullandığı içeriği tespit eder. Yalnızca çalışma zamanında çağrılan içerikleri, örneğin sadece bir script'in çaldığı bir sesi gözden kaçırabilirler. Bu yüzden listeye her zaman bak.
Beş adımda paketleme
- Son derlemeyi yap. Haritayı ancak bittiğinde paketle. Süreç VBSP, VVIS ve VRAD nedir? yazısında anlatılıyor.
- İçeriği belirle. Haritayı araca tarat ya da listeyi elle yaz.
- Paketle. Orijinal dosya korunsun diye BSP'nin bir kopyasına yaz.
- Cubemap'leri oluştur. Cubemap'ler de pakfile'da saklanır. Onları paketlenmiş dosyada oluştur.
- Test et. Aşağıya bak.
Önemli: her yeni derleme, paketlediğin içeriği barındırmayan yepyeni bir BSP üretir. Haritada yaptığın her değişiklikten sonra yeniden paketlersin.
Dosya boyutu ve sıkıştırma
Paketlenen içerikte en büyük payı çoğunlukla texture'lar alır. Yüzeyin boyutuna uygun çözünürlükler seç ve VTF dosyalarını sıkıştırılmamış değil, sıkıştırılmış bir formatta kaydet. Sonunda kullanmadığın içerikleri çıkar, uzun sesleri de kırp.
Dağıtım sırasında çoğunlukla bunun üzerine bir sıkıştırma daha eklenir: FastDL sunucuları haritaları genellikle sıkıştırılmış dosya olarak sunar, Workshop da yükleme sırasında sıkıştırır. Yani diskteki boyut, indirme boyutu demek değildir. GMod'un bspzip aracının yardım metninde, BSP'nin kendisini sıkıştıran -repack -compress de yer alır. Ancak güncel GMod sürümüyle yaptığımız testte komut hiçbir çıktı vermeden sonlandı ve dosyayı değiştirmedi; Valve Developer Community de bunun yerine Team Fortress 2'nin bspzip aracına işaret eder. Bir haritayı sıkıştıracaksan bunu en son adım olarak yap ve oyunun ve sunucunun haritayı sorunsuz yükleyip yüklemediğini iyice test et.
Paketlemeden sonra kontrol
- Oyun klasöründeki paketlenmemiş içerik klasörlerinin adını geçici olarak değiştir ya da ikinci bir kurulumda test et. Gerçekten BSP'den neyin geldiğini ancak o zaman görürsün.
- Haritayı yükle ve her bölgeye bak. Konsol eksik materyalleri ve modelleri bildirir.
bspzip -dirçıktısını kendi listenle karşılaştır.- BSP'yi Map Scanner aracına yükle. Pakfile'a gömülü Lua ve asset dosyalarını listeler, dosyanın yapısını da kontrol eder.
Hâlâ damalı kareler veya ERROR modelleri görünüyorsa Eksik texture'ları ve error modelleri düzeltme yazısına bak.
Haklar: yalnızca yeniden dağıtabileceğin içeriği paketle
İçeriği bir BSP'ye paketleyen kişi, onu haritayla birlikte yeniden dağıtmış olur. Yalnızca kendi çalışmanı ve lisansı yeniden dağıtıma izin veren içerikleri paketle. Haritayı satmak istiyorsan lisansın ticari kullanımı da kapsaması gerekir. Bir addon'ın Workshop'ta ücretsiz olması izin anlamına gelmez, emeği geçenin adını anmak da iznin yerini tutmaz. Aynısı başka oyunlardan alınan içerikler için de geçerlidir. Temel bilgiler GMod haritalarında telif hakkı yazısında yer alıyor. Bu bölüm hukuki danışmanlık değildir.
Sık sorulan sorular
Her derlemeden sonra yeniden paketlemem gerekir mi?
Evet. VBSP her çalıştığında yeni bir BSP yazar ve eski dosyanın pakfile'ı kaybolur. Paketlemeyi ancak son derlemeden sonra yap, cubemap'leri de ondan sonra oluştur.
Paketledikten sonra neden hâlâ pembe siyah damalı kareler görüyorum?
Çoğu zaman bir yol yanlıştır. Ya dosya pakfile'da haritanın beklediğinden farklı bir yerde duruyordur ya da VMT paketlenmiş ama VTF dosyası paketlenmemiştir. Modellerde ise materyaller başka bir klasörde durduğu için sık sık eksik kalır.
Paketlenmiş içerik BSP'den tekrar çıkarılabilir mi?
Evet. Pakfile sıradan bir arşivdir ve paketleme yapan araçlar onu açabilir de. Paketleme bir dağıtım meselesidir, içeriğin için bir koruma değildir.
Paketlenmiş bir harita ne kadar büyük olabilir?
GMod'da dosyanın tamamı için sabit bir üst sınır olduğunu doğrulayamıyoruz. Pratikte bu, haritanın nasıl dağıtıldığına bağlı. Dosya ne kadar büyükse oyuncular sunucuya ilk kez girerken o kadar uzun bekler. Bu yüzden paketlenen içerikte en etkili önlem çoğunlukla texture'larda tutumlu davranmaktır.