Bu sayfa, son derece ayrıntılı, gerçekçi ortamlar oluşturmaya yönelik örnek uygulamaları sergileyen Talisman: Ortam şablonunun tamamlayıcısıdır. Talisman, Fortnite İçin Unreal Editor’daki (UEFN) örnek modüler yapı ve iyileştirme uygulamaları kullanılarak oluşturuldu.
Şablonunu Proje Tarayıcısı’nın Özellik Örnekleri bölümünde bulabilirsin.
2024 Oyun Geliştiricileri Konferansı sırasında gösterilen Talisman deneyimini Fortnite’ı açıp 7100-3544-3074 ada kodunu girerek oynayabilirsin.
Talisman: Ortam şablonunun Proje Tarayıcısı’ndaki konumu.
Bu genel bakış, Talisman projesinin oluşturulması sırasında karşılaşılan iyileştirme zorlukları ve her bir zorluğun üstesinden gelme konusunda yol gösterir:
Şablon, kullanılabilir tüm platformlarda çalışacak şekilde tasarlandığından Talisman öğelerinin ve stilinin UEFN’nin bellek ve proje boyutu sınırı gereksinimlerine uyması gerekir. Bu, daha ayrıntılı bir sanat stiliyle tasarlanan projeler için çeşitli zorluklar oluşturur:
Proje boyutu: Oyunlardaki yüksek ayrıntılı öğeler büyük olabilir ve UEFN’nin 400 MB proje boyutu sınırı vardır.
Çalışma zamanı bellek sınırları: UEFN, aynı anda ekranda bulunabilen öğelerin, özel manzaraların ve cihazların miktarını sınırlayan 100.000 bellek birimi akışı bellek kısıtlamasına sahiptir.
Desteklenen tüm platformlarda kalite: Bu sınırlar, UEFN deneyiminin Fortnite’ın desteklediği tüm platformlardaki tüm oyuncular tarafından kullanılabilmesini sağlar.
UEFN, bu gereksinimleri karşılamak için Levels of Detail(LODs), Hiyerarşik Ayrıntı Seviyeleri (HLODs), World Partition, Bölüm Örneği ve Veri Katmanları gibi çeşitli teknikleri destekler.
Örnek Uygulamaları Uygulama
Talisman: Ortam şablonu, Fortnite İçin Unreal Editor’e AAA gerçekçiliği katmak için çeşitli örnek uygulamaları ve süreçleri sergilemek üzere tasarlandı. Bu şablon, performansı iyileştirmek amacıyla proje ve akış belleğini yönetmek için aşağıdaki örnek uygulamaları kullanır:
Modüler ve hafif nitelikte özel içerikler oluştur.
Ağırlıklı yüz normallerini kullanarak sert yüzey geometrisinin görünümünü iyileştir.
Örgü Çıkartmaları kullanarak örgülere ayrıntı ekle.
Deneyimini en düşük uç hedef platform için oluştur ve oradan özellikler ekle.
Nanite olmayan örgülerdeki çizim çağrılarını minimuma indir.
Modüler ve Hafif Nitelikte Özel İçerikler Oluşturma
Talisman ortamı, modüler bir ortamda önceden var olan örgüleri kullanan ve bunları yeni öğeler oluşturmak için yeniden düzenleyen modüler bir modelleme tekniği olan kitbashing kullanılarak derlendi. Sanatçılar, öğeleri yeniden kullanarak tek kullanımlık örgülerin sayısını en aza indirip proje boyutunu küçültmeyi başardılar.
Bu öğe altı farklı statik örgüden oluşur.
Geleneksel olarak sanatçılar, bu tür bir ortamı, benzersiz ön işlenmiş normal haritalar kullanarak yüksek ayrıntılı, yüksek poligonlu bir örgüyü düşük poligonlu bir örgü üzerine eşleyerek oluşturarak ikisinin arasındaki ayrıntıları korurlar. Bu metot, projenin boyutunu artırabilecek, çalışma zamanında çok kaynak gerektiren ve kitbashing işlemi sırasında iyi ölçeklenmeyen ek doku haritaları gerektirir.
Bellekten tasarruf etmek için ağırlıklı yüz normallerine sahip orta poligonlu örgüler kullanıldı ve küçük ayrıntılar eklemek için Örgü Çıkartmaları kullanıldı.
Daha fazla bilgi için Örgü Tasarımı ve Yapımı bölümüne bak.
Tüm Hedef Platformlar İçin Deneyimini Derleme
Fortnite, çeşitli platformlarda çalışacak şekilde tasarlanmıştır. İçeriğinin oyunculara bu cihazların her birinde en iyi deneyimi sunmasını sağlamak için her platformu göz önünde bulundurarak tasarım yapman ve ardından geliştirme sırasında üst düzey platformlara yönelik ek özellikler eklemen önemlidir.
Örneğin Nanite sanallaştırılmış geometri, platformların yüksek ayrıntılı örgüleri işlemesine ve performansı artırmasına yardımcı olur ancak yalnızca DirectX 12 çalıştıran bilgisayarlar gibi belirli ileri teknolojili cihazlarda kullanılabilir. Bu nedenle, içeriğini tüm platformlarda iyi performans gösterecek şekilde iyileştirmen hâlâ önemlidir.
Aşağıdaki resimlerde Destansı, Yüksek, Orta ve Düşük ayarlarda Örgü LOD'leri gösterilmektedir.
UEFN için kendi özel öğelerini oluşturma hakkında daha fazla bilgi için Örgü Tasarımı ve Yapımı bölümüne bak.
Nanite Olmayan Örgülerdeki Çizim Çağrılarını Minimuma İndirme
Çizim çağrıları, grafik API’sine her karede neyin, nasıl çizileceğini söyleme işlemidir. Nanite, gerektiğinde sahneye geometri akışı sağlayarak standart çizim çağrılarını atlar. Nanite olmayan örgüler için aşağıdakilerden her biri sahnede bir çizim çağrısı başlatır:
Her bağımsız örgü.
Örgüdeki her materyal.
Her ışık.
Oluşturulan her gölge.
Talisman: Ortam şablonu hem Nanite olan hem de Nanite olmayan örgüleri kullanır. Nanite olmayan örgüler kullanılırken performansı iyileştirmek için sahnedeki çizim çağrılarının sayısı şu şekilde minimuma indirildi:
Kritik olmayan örgüleri kaldırma.
Kritik olmayan örgüleri kaldırma.
Gölge oluşturan ışıkları kaldırıp bunları ışık fonksiyonları kullanarak destekleme.
Proje ve Çalışma Zamanı Bellek Sınırlarını Yönetme
Çalışma zamanı bellek yönetimi ve proje boyutunu yönetmek, UEFN’de yapılan herhangi bir projenin temel bileşenleridir. Talisman: Ortam bu zorlukların üstesinden şu şekilde gelir:
Proje kapsamını daraltarak.
Özel öğeleri yeniden kullanarak.
Çalışma zamanı belleğini yöneterek.
Proje kapsamını daraltma
400 MB proje boyutu sınırını karşılamak için MetaHuman karakteri Talisman: MetaHuman şablonuna taşındı. Bu şablonu Proje Tarayıcısı‘nın Özellik Örnekleri bölümünde bulabilirsin. UEFN’deki MetaHuman’lar hakkında bilgi edinmek için Talisman: MetaHuman şablonu bölümüne bak.
Ayrıntı seviyeleri
Talisman’ı oluşturmak için kullanılan her örgü, projeyi 100.000 akış bellek birimi bütçesi dahilinde tutmak için üç Ayrıntı Seviyesi (LOD) kullanır.
Otomatik LOD ayarları Statik Örgü tarayıcısında bulunur.
LOD örgüleri, UEFN’nin otomatik LOD araçları kullanılarak otomatik olarak oluşturulur ve belirli kalite seviyelerine atanır. UEFN’de ayrıntı seviyelerini kullanma hakkında daha fazla bilgi için Ayrıntı Seviyesini Ayarlama bölümüne bak.
Çalışma Zamanı Belleğini Yönetme
Talisman: Ortam şablonu, seviyeyi 100.000 bellek birimi akış bütçesi dahilinde tutmak için veri katmanları ve Sequencer kullanılarak oluşturulan özel bir akış çözümü kullanır. Kargo alanı gibi alanların dikey boyutu ve koridorların uzunluğu, geminin World Partition akış ızgarasına uymamasına neden oluyordu.
Her veri katmanı Talisman’daki farklı bir odaya karşılık gelir.
Bu sınırlamanın üstesinden gelmek için Veri Katmanları, oyuncunun konumuna bağlı olarak geminin alanlarını yüklemek ve boşaltmak için Sequencer ile birleştirildi.
Düzenleyici bölgeleri, Bölüm Sekansındaki yükleme olaylarını tetikler.
Her odanın kendine ait veri katmanı ile Bölüm Sekansındaki olayları tetikleyen ve gemiye yayılmış düzenleyici bölgeleri vardır. Bu olaylar, oyuncu bölümde ilerledikçe geminin bazı bölümlerini yükler ve boşaltır. Düzenleyici bölgeleri, bunu oyuncudan gizlemek için geminin bazı bölgelerine stratejik olarak yerleştirilmiştir.
Bu çözüm, çok oyunculu deneyimlerle uyumlu değildir. Veri Katmanları ve Seviye Dizisi dahil edilmiştir, ancak şablonu çok oyunculu kullanıma hazırlamak için Değiştirici Bölgeleri kaldırılmıştır.
Özel Kullanıcı Arayüzü Öğelerini Kullanma
Bu şablon, özel bir görev simgesi widget’ını görüntülemek ve oyuncu başlangıç odasındaki konsolla etkileşime girdiğinde ses çalmak için Verse’ü kullanır.
Özel görev sancağı, Verse kodu tarafından tetiklenir.
Oyuncu, Tayfa Odası VO Düğmesi cihazını kullandığında, startup_sequence_device.verse kodu şöyle olur:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/Diagnostics }
Sesli mesaj çalmaya devam ediyorsa karşılama sesini iptal et.
Oyuncuların Talisman’ı keşfetmesine yardımcı olmak için geminin mini haritasını etkinleştir.
Özel quest_icon_widget kullanıcı arayüzü widget blueprint’ini görüntüle.
Ses klibi oynat.
UEFN projelerini Verse kullanarak özelleştirme hakkında daha fazla bilgi için Verse Programlama Başlangıç Rehberi’ne bak.
Geniş Alanları Aydınlatma
Talisman, ortamın aydınlatılmasına yardımcı olmak için Lumen küresel aydınlatmasını kullanır ve oyuncuya gemi boyunca gölgeler ve doğru dolaylı aydınlatma sağlar.
Bu koridor, burada açıklanan tüm teknikleri gösterir.
Lumen, doğrıdan aydınlatma ile aydınlatılmayan objeler için çevresel oklüzyon and global aydınlatma sağlar. Lumen, aydınlatma çözümleri oluşturmak için güçlü bir araç olsa da performansı en üst düzeye çıkarmak için ortamını iyileştirmek hâlâ önemlidir. Lumen, çeşitli iyileştirmeler içeren Talisman: Ortam şablonuyla birlikte kullanılıyor.
Bölüm boyunca dolaylı olarak aydınlatılan tüm statik örgülerde gölge oluşturma özelliği kapalıdır. Lumen, bu örgüler için mükemmel gölgeler sağladığından Gölge Oluştur özelliğinin kapatılması, görsel kaliteden ödün vermeden performansı artırdı.
Şablondaki ışıkların birçoğunda Gölge Oluştur özelliği kapalıdır.
Gölge oluşturma, ışık fonksiyonları ve bazı tavan ışıklarıyla birlikte çizgili bir doku kullanılarak da desteklenir.
Yayıcı ışık panellerinden gelen lumen gürültüsü ve ışık titremesi, her birinin gölge oluşturmayan bir spot ışığıyla eşleştirilmesiyle azaltıldı.
Bu spot ışığı, bu ışık panelinden gelen ışığı artırır
Her panelin yayıcı değeri azaltılır ve gölge oluşturmayan bir spot ışığıyla desteklenir. Her spot ışığına küçük bir etki yarıçapı verilir ve ışığı, ışık panelinden gelmeye devam ediyormuş gibi gösterirken ek ışık sağlar.
Ortam aydınlatması, her ışığın mümkün olan en küçük maksimum çizim mesafesine sahip olması sağlanarak daha da iyileştirildi. Bu ayar, işlenmesi gerekmediğinde her ışığı görünümden ayırır.
Talisman aydınlatması genelinde Aydınlatma Karmaşıklığı görselleştiricisi de kullanıldı.
Aydınlatma karmaşıklığı görselleştiricisi Alt+7 kullanılarak açılabilir/kapatılabilir
Bu görünüm penceresi görünüm modu, bölümündeki geometrini etkileyen statik olmayan ışıkların sayısını renk gölgelemesi olarak gösterir ve aydınlatmanın performans maliyetini takip etmene yardımcı olur. Bu görselleştirici, performans maliyetlerini düşük tutmak için bölümdeki ışıkların çakışmasını en aza indirmeye yardımcı olur.
Örgü Tasarımı ve Yapımı
Talisman’ın ayrıntılı iç mekânını oluşturmak için kitbashing ve orta poligonlu özel örgüler kullanıldı. Kitbashing, proje için gerekli öğe sayısını en aza indirmeye yardımcı olurken yeni geometri oluşturmak için örgüleri yeniden kullanma ve birleştirme yeteneği sağlayan güçlü bir tekniktir.
Projedeki her örgü, ek geometri eklemeden öğenin görünümünü iyileştirmek için çeşitli teknikler kullanır.
Ağırlıklı yüz normalleri, performansı düşürmeden gölgelendirmeyi iyileştirmek için modelin verteks normallerini daha büyük, düz yüzlerle hizalayan bir tekniktir.
Gölgelendirmeyi iyileştirmek için verteks normalleri (yeşil çizgiler) daha büyük, düz yüzlerle hizalanır.
Bolt’lar, markalama ve hasar gibi ayrıntılar, örgü çıkartmaları kullanılarak eklendi. Bu çıkartmalar, karmaşık geometriyi yüzeylere yansıtmak için özel UV’ler kullanır ve görünümünü korurken köşeleri sarma veya eğriler boyunca esneme yeteneğine sahiptir.
Dinamik Materyal Kontrolü Kullanarak Materyal Tasarlama
Dokular ve materyaller genellikle herhangi bir UEFN projesinin en büyük bölümüdür. Proje boyutunu daha da azaltmak için şablon, benzersiz doku haritalarının kullanılmasını önleyen dokulara ve materyallere yönelik dinamik bir yaklaşım kullanır. Bu nihai sonuç için verteks renklerini kullanarak çevresel oklüzyon, eğrilik ve maske verilerini örgüde depolayan prosedürel bir iş akışı kullanıldı. Depolanan veriler daha sonra materyalleri uygulamak ve karıştırmak için kullanıldı.
Verteks Renk Verileri
Çevresel oklüzyon, eğrilik ve doku maskesi verilerini verteks renkleri kullanarak her bir örgüye paketleme yoluyla her öğe için benzersiz doku haritaları kullanmaktan kaçınmak en iyi uygulamadır. Talisman örgüleri, verteks renkleri arasında yumuşak geçişler sağlamak üzere destekleyici geometri ve örgü yoğunluğu (inç kare başına poligon) kullanılarak tasarlandı. Bu, materyaller arasında temiz geçişler oluşturmaya yardımcı olur.
Veriler aşağıdaki metot kullanılarak depolanır:
| Harita | Renk Kanalı |
|---|---|
Çevresel Oklüzyon | Kırmızı |
Eğrilik | Yeşil |
Materyal Kimliği Maskesi | Mavi |
Verteks rengi boyama hakkında daha fazla bilgi için Verteks Renk Materyalleri bölümüne bak.
Her örgüdeki materyal yuvaları daha sonra örgünün hangi kısmının belirli bir materyali alacağını tanımlamak için kullanılır. Materyal yuvaları hakkında daha fazla bilgi için FBX Materyal Çalışma Hattı bölümüne bak.
Bu koltuk, metal ve kauçuk için materyal yuvalarına sahiptir.
Dinamik Materyal Kontrolü
Talisman örgüleri beş ana materyal türünün bileşimini kullanır:
Metal
Boyalı metal
Plastikler
Kauçuklar
Tekstil
Her materyal, sonuç oluşturmak için dünya ile uyumlu döşeme dokularını ve kullanıcı tanımlı parametreleri kullanan tek bir ana materyale dayanır. Bu, sanatçılarımızın gemi genelinde aynı materyalleri kullanmasına izin vererek materyallerin genel bellek maliyetini düşük tutar.
Talisman: Ortam ana materyalinin bir bölümü
Toz, çizikler ve diğer aşınma izleri de ana materyale dahil edilir ve parametre odaklı maskeler kullanılarak örgülere uygulanır. Bu parametreler, özel primitif veriler kullanılarak örgüde depolanır.
Yörünge Kamerası Cihazını Kullanma
Yörünge Kamerası cihazı, oyuncu karakterini izleyen ancak oyuncunun serbestçe etrafa bakmak için dönebildiği bir görünüm sağlar. Şablon, oyuncuya üçüncü şahıs görünümü ile simüle edilmiş birinci şahıs görünümü arasında geçiş yapma yeteneği sağlamak için bu cihazı kullanır.
Oyuncular, Yörünge Kamerası cihazını kullanarak üç farklı görünüm arasında geçiş yapabilirler
Bu, camera_switch_mode_device Verse kodu kullanılarak yapılır.
# This file handles swapping between different cameras when an input is pressed.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/Diagnostics }
Verse kodu, oyuncunun hedef kreatif girdi eylemini tetiklemesini dinler. Bu eylem varsayılan olarak sağ fare tıklamasıyla veya bir oyun kumandasındaki sol tetikleyiciyle eşlenmiştir. Ardından aşağıdakileri yapar:
Kamera yığınından geçerli kamerayı kaldırır.
Kamera dizisindeki sonraki kamerayı alır.
Yeni kamerayı aracıya ekler.
Gerekirse oyuncu karakterini gizler.
Gerekirse oyuncu karakterini gösterir.