Unity Burst Compiler

Unity Burst Compiler
Günümüzde GTA V, Cyberpunk 2077 gibi, bilgisayar ve konsolların sınırlarını zorlayan oyunlar var. Her yeni çıkan oyunda bir öncekinden daha ileri seviyede sanatsal ve teknolojik bir dünya bulunuyor.

Bu tarz oyunlar, her cihazda performanslı çalışabilecek şekilde optimize edilmiş durumda. Son derece karmaşık kodlar olmadan bu seviye de bir optimizasyon da mümkün olamazdı.

Ancak bu oyunlar, uzman ekiplerden oluşan büyük stüdyolar tarafından yapılıyor. Peki küçük stüdyolar ve bağımsız geliştiriciler endüstriye nasıl ayak uyduracaklar?

Bu makalede Unity Burst Compiler’ın uzman bir ekip olmadan ve çok az çabayla son derece optimize edilmiş kod yazmanızı sağlayan özelliklerini anlatacağım.

Performans

Unity’de en iyi performansı nasıl elde edebiliriz?

İlk olarak, C# Job System kullanarak multithreading’den yararlanabilirsiniz. multithreading kod, işlemcide ki tüm çekirdekleri kullanır, böylece daha performanslı çalışır.

Unity ECS kullanarak kodunuzun bellek yönetimini optimize edebilirsiniz. Bellekte düzgün yönetilen veriler işlemcinin erişimini kolaylaştırır.

Son olarak, .NET kodunun, hedef platformunuzun işlemcisinde native olarak çalışmak üzere tasarlanmış ileri seviyede optimize edilmiş makine koduna dönüşür.

Multiplatform Desteği

Unity’nin programlama platformu Mono adlı açık kaynak bir projeye dayanıyor.

Mono, farklı yazılım sistemlerinde C# kodunu derleyip çalıştırabilen bir .NET Framework uygulamasıdır. Mono; Windows, macOS ve çoğu Linux dağıtımında, PlayStation, Xbox ve Wii’de bile çalışabilir.

Bunu, C# kodlarını Common Language Runtime sanal makinesi veya daha genel adıyla CLRVM adlı bir teknoloji kullanarak yapar.
Garbage Collector ise belleğin ve kodunuzun agnostik bir şekilde yönetilebilmesine olanak sağlar. Bu şekilde C# kodu, Mono’yu destekleyen herhangi bir sistemde çalışabilir.

Bu yüzden Mono çok önemli, çok fazla esneklik sağlıyor. Ancak esneklik sağladığı yerde performans kaybı da yaşatıyor.

Donanımdan en iyi şekilde nasıl yararlanabiliriz?

En iyi performansı elde etmek, donanımı en iyi şekilde kullanmaktan geçer. Bunu yapmak için kodunuzu makine koduna en yakın seviyede optimize etmeniz gerekir.

Bu, doğrudan işlemcide çalıştırılabilen C++ ve hatta C gibi dillerde kod yazmak anlamına gelir. Bu yazının kapsamı dışına çıkan bazı ileri seviye optimizasyonlar sağlar.

Ancak dezavantajı ,- Karmaşık kodları düzeltmek zorunda olmanın yanı sıra - Bu yaklaşım sizi Unity’nin en önemli özelliklerinden Çoklu Platform Desteğini enegeller.

İleri seviyede optimize edilmiş native kod elde etmek:

Ne yazık ki, kodunuzu birden fazla platformda çalıştırmak son derece pahalı bir yöntemdir.
Mono’nun arkasındaki geliştiriciler, platformu optimize etmek için çok çalışırken, yönetilen kodun performansı hiçbir zaman native kodla aynı olmayacaktır.

Şimdi zaten yazdığınız tüm karmaşık oyun mantığının üstüne karmaşık, düşük seviye kod yazmayı öğrenmek zorundayız?
Neyse ki cevap “hayır” dır. Unity Burst Compiler sayesinde mecbur değiliz!

Unity Burst Compiler

Burst, Unity tarafından geliştirilen bir derleyicidir. Derlediğiniz platformdan tam olarak yararlanan, ileri seviyede optimize edilmiş native kod üretebilir.
Bunu, ağır işlemlerin altından kalkabilen açık kaynaklı LLVM projesini kullanan karmaşık bir teknoloji kullanarak gerçekleştirir.
Tek yapmanız gereken Unity.Burst paketini projenize eklemek, sonrasında ise C# job’larınıza BurstCompile attribute eklemek.
Bunu yaptıktan sonra Unity Engine, Unity Job System kodunuzu optimize eder ve native makine koduna derleyerek geri kalanı kısmı halleder.
Yorumlar
Mustafa Çetin
Mustafa Çetin Teşekkürler bu faydalı yazı için.
Hasan Mahmut Tarhan
Hasan Mahmut Tarhan