Daha önce Tech Stream sürümünü duyurduğumuz 2022 sürümünde sonunda Unity 2022 LTS yayında! 1 Haziran 2023 tarihi itibariyle 2022.3 sürümü LTS (Long Term Support) olarak erişime sunuldu. Unity’ye göre 2022 sürümü sayesinde oyun geliştiriciler olarak daha esnek bir yapı içeren araçlarla oyunculara hayranlık bıraktıracak etkileşimler sunabileceğimiz gücü bize veriyor.
Genel hatlarıyla DOTS-ECS güncellemesi ve tam sürüm yayınlanması, multiplayer tarafındaki güncelleştirmeler, yüksek kaliteli görsellik üzerine yapılan çalışmalar sayesinde 2022 sürümü oyun geliştiriciler açısından dolu dolu diyebiliriz.
Bu yazımızda da ana hatlarıyla bu güncelleştirmelere ve yeniliklere dair bilgi edinebileceksiniz.
DOTS-ECS
Unity 2022 LTS yayında ve bu sürümle beraber ECS uygulamalarımızın yayınlanması aşamasında tam olarak kullanılabilecek ilk sürümüyle de yayınlandı. Daha basit haliyle belirtmemiz gerekirse ECS 1.0 sürümü bize sunuldu. ECS (Entity Component System) paketini tam sürüme geçmeden önce hali hazırda kullanmak da mümkündü. Ancak hem mimari olarak GameObjects yapısına alışkın geliştiricilere ayrı bir mücadele oluşturuyor hem de sistem tam olarak bütün ihtiyaçları karşılamıyordu. Bu sebeple ECS tam haliyle çıkması hem bu sistemi kullanmak isteyen hem de meraklı olan geliştiriciler için tam kıvama geldi diyebiliriz.
Özellikle yapılan güncellemelerle beraber GameObjects yapısını kullanmamıza sağlayan araçlar gibi, ECS yapısı için de editor üzerinde yeni araçlarımız bulunuyor. İlk duyurulduğunda ECS ile uğraşanları en çok korkutan şeylerden biri de bu araçların eksikliklerinden biriydi diyebiliriz. Böyle bir gelişme olması
ECS paketiyle beraber hali hazırda varolan Burst Compiler ve C# Jobs System sistemleriyle artık DOTS (Data-Oriented Technology Stack) ile geliştiricilerin eli performans dahil birden çok konuda güçlendi diyebiliriz.
İşin güzel yanlarından biri aşina olduğumuz GameObjects yapısıyla beraber ECS sistemini kullanabilmemiz. Yani ihtiyaç duyduğumuz bir kısımda sadece ECS kullanmamız mümkün, hibrit bir yapı kullanılmasına müsaade ediyor bu sistem. Özellikle ilk defa ECS tarafına geçiş yapacaklar için bu özelliğin olması öğrenme açısından usandırmamaya teşvik edecektir diye düşünüyorum.
Ancak bunun dışında, zaten elimizde hali hazırda çalışan sistemleri ECS yapısına uyarlamak da, ECS yapısına hakim olsak bile vakit harcamamız gereken bir şey olacak. Sadece DOTS yapısıyla beraber bize kazanç sağlayacak parçaları güncellemek verimlilik açısında çok iyi olacaktır.
Bahsettiğim gibi DOTS yapısını kullanan bir sürü proje hali hazırda şu an pazarda bulunuyor. Ancak yakın zamanda duymuş olabileceğinizi düşündüğüm V Rising oyunu da Unity’nin örnek olarak sunduğu projelerden bir tanesi. Özellikle yüksek sayıda verinizi işlediğiniz çok fazla obje olma durumunu DOTS sayesinde nasıl çözümlediklerini görebiliyoruz.
MULTIPLAYER
Daha önce bahsettiğimiz Unity Gaming Services ve Netcode for GameObjects ile multiplayer tarafına dair Unity’nin bir atılımda bulunduğundan bahsetmiştik. Unity 2022 LTS ile artık oyunlarınızda gönül rahatlığıyla kullanabileceğiniz tam sürüm haliyle (product-ready) Netcode for Entities paketi de erişime sunulmuş halde. ECS yapısını kullanarak multiplayer oyunlarınızın performansını ve oyuncularınıza sunabileceklerinizi daha da arttırabileceğinizi belirtmek yanlış olmayacaktır.
ECS için ilk duyurulan örnek projelerden biri Megacity idi. Megacity projesini temel alan ve 64 oyuncudan daha fazla oyuncuyu destekleyen, uçan arabaları kontrol ederek oyuncuların birbirleriyle kapıştığı multiplayer bir proje daha sunuldu. Bu proje içerisinde hem Netcode for Entities paketi kullanımını hem de daha önce bahsettiğimiz hosting, matchmaking, authentication ve voice chat gibi unity servis kullanım örneklerini de inceleyebilirsiniz.
HDRP
Özellikle piyasada sürekli olarak Unreal Engine ile Unity karşılaştırmalarında grafik konusu en çok tartışılan başlıklardan biri. Mühendislik tarafı yaklaşımları sebebiyle Unity çok geri planda kalıyormuş gibi değerlendiriliyor hep maalesef. Ancak özellikle HDRP ile Unity çoktan bu açığı kapatmaya başladı desek yalan olmaz. Unity 2022 LTS sürümünde de High Definition Render Pipeline için güncellemeler ve yeni özellikler olmaması çok şaşırtıcı olurdu.
Özellikle uzun süredir görmeyi istediğim şeylerden biri olan Volumetric Materials sonunda kullanımımıza sunuldu. Volumetric Material sistemi ile geliştimiş şekilde procedural fog ve volumetrik efektler oluşturmamız mümkün hale geliyor.
Volumetrik konusuna girmişken ayrıca Volumetric Clouds güncellemesinden de bahsetmek lazım. Bu yeni sistemle artık muazzam ve gerçekçi bulutlar elde etmemiz mümkün. Cloud Layers sistemiyle dinamik şekilde ışıktan da etkilenen bu bulutlarla çeşitli hava durumları oluşturmak ve bunların arasında yumuşak geçişler yapmak mümkün.
HDRP başlığında son olarak bahsedebileceğimiz konu ise yeni Water System, yeni deniz sistemi. Unitynin kendi blog yazısını incelerseniz özellikle render tarafında gerçekçilik ve ayar çeşitliiğinden bahsedilmekte, aşağıdaki linkteki görselde görebileceğiniz gibi ciddi manada tatmin edici görsellik bize sunuyor.
Unity HDRP Water System Örnek Görsel
Görsellik dışında kullanım açısından bazı şeylere de değinmek istiyorum. Öncelikle bu paket ile havuz, nehir, deniz, okyanus veya göl oluşturmamız mümkün. Ayrıca su altına has çalışan bir render seçeneğini bize getiriyor bu paket. Oluşturduğunuz suyun rüzgar ve su akımlarından etkilenerek davranış sergilemesi imkanı bulunmakta. Su köpürmesi, dalgalanmalar, yansımalar da tabii ki sisteme dahil. Ayrıca shader graph üzerinde kullanabileceğiniz Water ShaderGraph seçeneği de bulunuyor. Ayrıca yarattığınız su sistemini scriptleriniz üzerinden erişerek kullanmanız da mümkün. Bu sayede su sisteminizde objelerin batıp çıkmasını veya yüzeyde kalmasını sağlayabilirsiniz.
Bu su sisteminin aslında çok çok önceden Unity içerisinde dahil edilmesi gerektiğini düşünüyorum ve özellikle URP tarafında henüz böyle bir şey sunulmamız olması da hala sinir bozucu. Hali hazırda hazır paketler bulunsa da, bu tarz bir sistem ana unsurlardan biri olması gerekiyor diye düşünüyorum. Hâlâ geliştirilmesi gereken taraflar olduğunu da belirtmek gerekiyor.
Neyse, en azından artık biz de Unreal Engine geliştiriclerinin yaptığı gibi third person bir karakterin etrafta dolanıp durduğu deniz, dere falan yapıp paylaşabileceğiz rahat rahat :p
URP
Özellikle görsellik konusunda canavar gibi sistemleri değil de, çok geniş bir yelpazede cihazları ve platformları desteklemek istediğimizde URP can simidi konumunda. Unity 2022 LTS sürümünde de yapılan URP gerek güncelleme gerek yeni özellikler konusunda es geçilmiyor haliyle.
Öncelikle en önemli başlıklardan biri kullanabileceğimi ışık (Light) sayısındaki limitin kalkmasına imkan sağlayan Forward+ Rendering seçeneği. Özellikle yüksek kalitede gerçek zamanlı ışıklandırma yaratmak istediğimizde ışık sayısındaki limit geliştiriceleri zorlayan bir durum idi. Biraz teknik tarafa değinmek gerekirse Forward Rendering sisteminden farklı olarak Forward+ Rendering, ışığı objeler tekelinde değil düzlemsel olarak işleme sokmakta. Ancak belirtmekte fayda var,GLES2 grafik API kullanan cihazlarda bu render yöntemi kullanılamamakta.
Bir diğer yeni özellik LOD sistemine geliyor. LOD Crossfade seçeneği LOD sisteminin daha yumuşak bir şekilde geçiş yapmasına imkan tanıyan bir şey. Normalde LOD belli mesafelerde modelin farklı çözünürlükteki versiyonlarının render edilmesi şeklinde çalışıyor. Örneğin 10 metreden daha yakınsak en yüksek çözünürlükteki versiyonu görürken, 10 metreden 1 cm bile uzaklaştığımızda anında düşük olan versiyona geçiyordu. Ancak Crossfade seçeneği bu geçişi çok yumuşak bir hale getiriyor. Aşağıdaki linkteki görselden aradaki farkı görmeniz mümkün
Unity LOD Cross Fade Vazo Örneği
Yumuşatma demişken değinebileceğimiz bir diğer başlık da Temporal Anti-Aliasing. Özellikle çok keskin şekilde piksellenmeler ve titrek ışıklara çözüm olacak bir özellik Temporal Anti-Aliasing. Temelde bir önceki karedeki kullanarak varolan karede yumuşatma yapan bir yöntem aslında. Sonunda bu yöntemi URP tarafında görmek de hoş. Açıkçası bu sistemi yazıyla anlatmak yerine aşağıdaki görselden görmenizi tercih ederim.
Unity TAA (Temporal Anti-Aliasing) Örneği
Decal Layers özelliğiyle beraber, sahnelerimizde kullandığımız decal sistemlerin hangi layer üzerinde çalışacağını seçmemize imkan tanınıyor artık. Decal uygulamak istediğimiz yüzeye farklı bir obje yaklaştığında, yaklaşan objenin üzerinde de decal uygulanıyordu normalde. Ancak aşağıda da görebildiğiniz gibi, layer yapısı sayesinde artık yalnızca belirlediğimiz objelerde çalışacak şekilde decal ayarlamamız mümkün.
Unity Decal Layers Kullanımı Karşılaştırması
URP özelinde bir diğer gelen özellik de Shader Graph Full Screen seçeneği. Bu seçenek sayesinde yalnızca ekranda çalışacak çeşitli post-processing efektleri oluşturmamız mümkün. URP başlığında değinmiş olsak da, ayrıca HDRP de de bu özelliği kullanabilirsiniz.
Son olarak da Shader Variant Prefiltering sistemi ile hem build sürecinde hem de oynanış esnasında performans artışı sağlanmakta. Ayrıca Built-in Converter aracı ile hali hazırda URP kullanmaya projeleri URP sistemine geçirmede kolaylık sağlanmakta.
Spline Paketi
Sonunda sonunda artık dediğim bir güncelleme daha. Unity Spline paketi sonunda 2022 ile kullanıma sunuluyor ve deneyimlediğim kadarıyla o kadar güzel ki. Belki abarttığımı düşüncek çoğunuz. Özellikle hali hazırda ücretsiz olan paketlerle ihtiyacımızı giderebileceğimiz bir şey olduğunun düşünürsek bu kadar sevinmek garip gelebilir . Ancak hiçbir paket kullanım konusunda istediğim rahatlığı sunamıyor, kontrolleri doğal ve Unity’e ait hissettirmiyordu. Veya özellikle kendi ihtiyaçlarıma göre bir eklenti oluşturmaya çalıştığımda API kısmında Unity ekosistemi dışında hissettiriyordu.
Unity Spline paketi özellikle de bu tarz kötü deneyimlerden sonra kullanımı yağ gibi ve mis gibi bir API sunması ile kalbimi kazandı. Özellikle örneklerini de incelediğinizde göreceksiniz, çok çok basit şekilde temel ihtiyaçlarımızı da fazlasıyla karşılıyor. En basit kullanım olarak ilk akla gelen yollar oluşturmak olacaktır. Ancak yol dışında da özellikle çevre elementlerini yerleştirme konusunda da hem doğallık hem de hız açısından çok büyük rahatlık sağlıyor.
Kendi eklentilerinizi yapma konusunda rahat ve basit bir API sunması da çabası, özellikle benim gibi arkaplanda projeleriniz için çeşitli araçlar yazmaya bayılıyorsanız. Bir de ufak bir ekstra bilgi, Cinemachine 3 sürümünde de Camera Track oluştururken Spline paketinin bu faydalarından yararlanıp kameralarımızın hareket edeceği yolları da ayarlayacağız.
Platform ve Build Optimizasyonları
Her yeni sürümde olduğu gibi performans optimizasyonları da Unity 2022 LTS sürümünün bir parçası. DirectX 12 grafik API ile cihazlarda daha windows ve Xbox cihazlarda stabilliği ve performansı arttırabileceğiz artık. Ayrıca deneysel halde olsa da Ray Tracing seçeneğini Xbox Series X ve Playstation 5 cihazlarda deneyip daha gerçekçi ışıklandırma ve yansımaları oyunlarınızda kullanabilirsiniz.
Build işlemlerinde yapılan iyileştirmelerle özellikle Xbox, Playstation, IOS ve Nintendo Switch cihazlarınızda yayınlama süreçlerinizi hızlandırıp, hızlıca güncellemelerinizi yayınlayarak oyunlarınızdaki kaliteyi yükseltebilirsiniz.
Andriod cihazlar tarafında da çeşitli güncelleştirmeler bulunmakta. System Metrics Mali paketi ile ARM ekran kartlarında performans analizlerine daha derinlemesine dalmanız mümkün. Samsung cihazlarda Adaptive Performance 4.0 sistemini artık visual scripting ile de kullanabiliyoruz. Ayrıca mobil cihazlarda web çıktılarınızda WebGL bellek kullanımı iyileştirmeleri ve C++ native multithread desteği de bu sürümle beraber gelmekte.
XR konusunda da bazı geliştirmeler sunulmuş durumda. Playstation VR2 ve Meta Quest 2 cihazlara build alma süreçlerini XR Interaction aracı ile bize sunuyor. Vulkan grafik API kullandığınız oyunlarınızda çeşitli cihazlarda geliştirilmiş performans elde etmenize de imkan tanınıyor.
Unity 2022 LTS sürümü şu an karşımızda olan en stabil, güvenilebilir Unity sürümü olarak sunuluyor. 2 yıl boyunca 2 haftada bir olacak şekilde güncelleştirmeler alarak gelişeceğini ve iyileştirileceğini hatırlatmakta da fayda var.
Unity 2022 LTS yayında yazımızda değineceklerimiz bu kadar, keyifli bir okuma olmuştur umarım. Eğer Unity’nin yeni sürümünde neler olacak derseniz, hatta ve hatta belli başlı özellikleri önermek isterseniz diye şuraya Unity Roadmap linkini bırakayım. Her ne kadar bazen sinir etseler de hâlâ Unity içerisinde biz geliştiricileri dinleyenler bulunmakta. Bundan yararlanmak gerektiğini düşünüyorum.
Bir sonraki yazımıda görüşmek dileğiyle, hoşçakalın.