Kafayı yiyecektim arkadaşlar. "Bir harita yaparım, üzerine texture'ları atarım, biraz ağaç, taş koyarım" diye düşünmüştüm. Meğerse kendimi Unity Terrain tool'unun dipsiz kuyusuna atmışım. Tam bir aydan fazla sürdü bu macera, şaka gibi ama.
Haritanın Başlangıcı: Her Şey Çok Güzeldi
Terrain objesini sahneye sürüklediğinizdeki o heyecanı bilirsiniz. Raise/Lower Tool ile dağlar yaptım, vadiler açtım. Smooth Tool ile geçişleri yumuşattım. Her şey harika gidiyordu. Ta ki texture atmaya başlayana kadar.
Texture Splatting Kabusu
Splatmap denen şeyin benim hayatıma ettiğini... "Şu bölge çim, şurası toprak, kayalık olsun" dedim. Ama geçişler berbat görünüyordu. Brush Strength ve Opacity değerleriyle oynarken bir baktım, tüm harita lekeli bir pastaya dönmüş. StackOverflow'da bile "pürüzsüz geçiş için şu ayarı yap" diye net bir cevap bulamadım. Meğerse sorun, her texture'ın Normal Map ve Smoothness değerlerini ayrı ayrı, tutarlı bir şekilde ayarlamamış olmamdaymış. Bir texture seti bulup onunla gitmek en mantıklısı.
Detail Object (Ağaç/Taş) Yüklenme Felaketi
Texture'ları hallettim sayılır, sıra ağaç ve çalılık (detail object) eklemeye geldi. Paint Details tool'una tıkladım, prefab'imi seçtim, boyamaya başladım. Ekranda 10 tane ağaç varken bile FPS'in 30'a düştüğünü gördüm. Neden? Çünkü her bir ot, her bir çalı, ayrı bir draw call demek. GPU Instancing, LOD Group ayarları derken, performans için detail'leri basit billboard texture'lara çevirmeyi öğrendim acıyla.
Öğrendiğim Acı Dersler
1. Planlama: En başta haritanın büyüklüğüne, texture katman sayısına (max 8!) karar verin. Sonradan değiştirmek çok zor.
2. Asset Seçimi: Uyumlu bir Terrain Texture Pack bulmak, kendi texture'larınızı uyarlamaktan çok daha az zaman alıyor.
3. Optimizasyon: Detail'leri (grass, bushes) boyarken Density değerini abartmayın. Unity Terrain çok çabuk patlıyor.
4. Sabır: Bu iş "bir kaç saatlik iş" değil. Küçük adımlarla, sık sık oyun içi test yaparak ilerlemek gerekiyor.
Sonuç olarak, ortaya çıkan harita güzel oldu ama bir ayımı yedi. Siz de Unity Terrain ile benzer bir epik mücadeleye girdiniz mi? Özellikle splatmap'lerde pürüzsüz geçiş için sizin gizli bir yönteminiz var mı? Ya da performans için vazgeçilmez bulduğunuz bir ayar? Yorumlara yazın, birbirimizin hayatını kurtaralım!
Terrain objesini sahneye sürüklediğinizdeki o heyecanı bilirsiniz. Raise/Lower Tool ile dağlar yaptım, vadiler açtım. Smooth Tool ile geçişleri yumuşattım. Her şey harika gidiyordu. Ta ki texture atmaya başlayana kadar.
C#:
TerrainData.terrainLayers[0] = grassLayer; // İlk başta bu kadar basit sandım
Splatmap denen şeyin benim hayatıma ettiğini... "Şu bölge çim, şurası toprak, kayalık olsun" dedim. Ama geçişler berbat görünüyordu. Brush Strength ve Opacity değerleriyle oynarken bir baktım, tüm harita lekeli bir pastaya dönmüş. StackOverflow'da bile "pürüzsüz geçiş için şu ayarı yap" diye net bir cevap bulamadım. Meğerse sorun, her texture'ın Normal Map ve Smoothness değerlerini ayrı ayrı, tutarlı bir şekilde ayarlamamış olmamdaymış. Bir texture seti bulup onunla gitmek en mantıklısı.
Texture'ları hallettim sayılır, sıra ağaç ve çalılık (detail object) eklemeye geldi. Paint Details tool'una tıkladım, prefab'imi seçtim, boyamaya başladım. Ekranda 10 tane ağaç varken bile FPS'in 30'a düştüğünü gördüm. Neden? Çünkü her bir ot, her bir çalı, ayrı bir draw call demek. GPU Instancing, LOD Group ayarları derken, performans için detail'leri basit billboard texture'lara çevirmeyi öğrendim acıyla.
C#:
// Sonunda bulduğum mantık
detailObject.useInstancing = true;
detailObject.renderMode = DetailRenderMode.Grass;
1. Planlama: En başta haritanın büyüklüğüne, texture katman sayısına (max 8!) karar verin. Sonradan değiştirmek çok zor.
2. Asset Seçimi: Uyumlu bir Terrain Texture Pack bulmak, kendi texture'larınızı uyarlamaktan çok daha az zaman alıyor.
3. Optimizasyon: Detail'leri (grass, bushes) boyarken Density değerini abartmayın. Unity Terrain çok çabuk patlıyor.
4. Sabır: Bu iş "bir kaç saatlik iş" değil. Küçük adımlarla, sık sık oyun içi test yaparak ilerlemek gerekiyor.
Sonuç olarak, ortaya çıkan harita güzel oldu ama bir ayımı yedi. Siz de Unity Terrain ile benzer bir epik mücadeleye girdiniz mi? Özellikle splatmap'lerde pürüzsüz geçiş için sizin gizli bir yönteminiz var mı? Ya da performans için vazgeçilmez bulduğunuz bir ayar? Yorumlara yazın, birbirimizin hayatını kurtaralım!