Gotham Knights, The Callisto Protocol, Wild Hearts, The Last of Us Part I, Star Wars: Jedi Survior, Redfall. Son 6-7 ayda PC'ye facia şekilde çıkan oyunlardan sadece birkaçı. Öyle kötü durumdalar ki piyasadaki en güçlü kartla bile 60 FPS almak mümkün olamıyor. Hatta bazen bırakın 60 FPS'yi, yırtılmalar ve takılmalardan oyun oynanamaz duruma geliyor.
Bu kadar fazla sayıda oyunun PC'de can cekişmesinin bir sebebi olmalı, değil mi? Bunu kestirme yoldan "Firmalar açgözlü oldukları için" diyerek cevaplayabilirsiniz ve bu doğru da olur.Ancak buzdağının görünmeyen tarafında teknik dertler azımsanmayacak kadar fazla ve bu yazıda bu teknik dertlere odaklanacağız.
Vizyon Sancıları
Her şeyden önce, her oyunun aynı geliştirme sürecine ve mantalitesine sahip olmadığını belirtmek gerek. Bazı firmalar ana platform olarak PC'yi tercih eder ve ilk olarak oyunlarını PC'de çalışacak şekilde geliştirirler. Ardından bu versiyon, konsollara uyumlu olacak şekilde düzenlenir. Başka firmalar ise tam tersi, önce konsollara ardından PC'ye geliştirme yapar, ki günümüz AAA oyunlarında gördüğümüz trend de bu yönde.
The Last of Us on PC hits different 🙏 pic.twitter.com/5AOiL2NSX3
— Horizon 🌿 (@Captainhorizon7) April 1, 2023
Bunun bu şekilde olmasının en büyük sebebi, ki bu sebebi sıkça dile getireceğim, konsolların sabit bir donanım setine sahip olmasından geliyor. Yani, bir oyun geliştirilirken geliştirdiğiniz konsolun işlemcisini, ekran kartını, mimarisini vs biliyorsunuz ve bunun değişmeyeceğinin de garantisi var. Öte yandan PC'de onlarca farklı donanım parçasından sayısız kombinasyon çıkarmak mümkün. Bu da her bir kombinasyon için ayrı (ve ciddi emek isteyen) bir iş anlamına geliyor. Firmaların önceliği, geliştirme sürecini olabildiğince kısa tutmak istemelerinden ötürü, tabii ki de konsollar oluyor. Bu yüzden PC optimizasyon süreci, geliştirme döngüsünün en sonunda yer alıyor ve yeterli vakit kalmadığından malum tablo oluşuyor.
Shader "Belası"
PC'de yüzlerce farklı sistem oluşturabilmenin, oyun geliştiricileri için yaşattığı en büyük sorunlardan biri de shader. Tanımlamak gerekirse shader; ekran kartı üzerinde çalışan, oyun ekranında gördüğümüz objelerin ekranın neresinde (pozisyon, texture koordinatları) ve nasıl görüneceğini (renk, alfa değeri) hesaplayan bir programdır. İşlemci tarafından gerçekleştirilen bu hesaplamaların, ekranda (programcı ağzıyla demek gerekirse sahnede) yer alan objeler sürekli değiştiği için devasa oranlarda yapılması gerekiyor.
The Callisto Protocol Shader Stutter. Kaynak Digital Foundry
Eğer konsollar gibi sabit bir donanıma geliştirme yapıyorsanız, tüm shader hesaplamalarını önden yapıp oyunun dosyaları içerisine koyabilirsiniz. Böylece oyun esanasında herhangi bir hesaplamaya gerek kalmaz. Ancak PC'de oyuncunun nasıl bir kombinasyona sahip olduğu bilinmediği için shader hesaplamaları önden oyuna eklenemiyor. Bu yüzden geliştiriciler bu zorlu duruma farklı çözümler getirmek zorunda, ki bu da zaman (ve haliyle para) isteyen bir şey.
Uygun çözüm bulunmadığı takdirde oyuncuların, anlık takılmalara maruz kalması kaçınılmaz olur. "Shader stutter" adı verilen bu durum, özellikle Unreal Engine 4 oyunlarında karşılaştığımız bir şey. İşlemci, kendi tarafında o kadar fazla shader hesaplaması yapıyor ki, ekrandaki değişime yetişemez oluyor ve ekran kartı, gereken shader hesaplamaları ortada olmadığı için sahneyi yenileyemiyor ve takılma gerçekleşiyor. Bu sorun, işlemcinin çoklu çekirdek kullanmaması sorununun da bir yansıması aslında.
İşlemci Çoklu Çekirdekleri
Yeni nesil konsollarda da artık çoklu çekirdeğe sahip işlemciler var; ancak her oyun hala bu avantajı tamamen kullanacak şekilde geliştirilmiyor. Buna, konsol odaklı geliştirilen bir oyunun tüm çekirdekleri kullanmasını gerektiren bir durum olmamasını neden olarak verebiliriz. Ama bu yüzden konsolda sorunsuz çalışan bir oyun PC'ye portlandığında işlemcinin sadece belirli bir yüzdesi çalışır oluyor. Bu durumu düzeltmek için tabii ki yine ekstra kodlama, dolayısıyla efor ve zamana gerek oluyor.
Gotham Knights'ın en yüsek ile en düşük grafik ayarları arasında sadece 6 FPS fark olmasının sebebi CPU kullanımı. Kaynak: Digital Foundry
Eğer bu yapılmazsa, işte shader hesaplamaları gibi bir senaryo ortaya çıkıyor ve ekran kartı ne kadar güçlü olursa olsun, işlemciden istenen hızda cevap gelmediği için oyun kötü performans veriyor. Hem ekran kartı hem de işlemci tam performansını kullanamıyor bu durumda.
RAM (Hafıza) Mimarisi Farklılığı
Belki bu yeni bir şey değil ama konsollarda, PC'nin aksine, tek bir RAM alanı bulunuyor. PC'de ise ekran kartının ayrı (VRAM), sistemin ayrı (RAM) hafızası bulunur. Ve birçok PC sistemi için toplam hafıza alanının konsollara göre daha fazla olduğunu rahatlıkla söyleyebiliriz. Konsol odaklı geliştirilen bir oyun PC'ye portlandığında aslında avantajlı bir konuma geçmiş oluyor hafıza anlamında. Ancak bu avantajı kullanmak için yine buna uygun kod yazmış olmak gerekiyor. Ve tahmin edin bu ne gerektiriyor? Zaman ve para.
Yazılımsal Dertler
Yukarıda bahsettiğimiz tüm bu optimizasyon çözümleri aslında API'lar aracılığıyla gerçekleşiyor. API'lar, bu konu özelinde tanımlamak gerekirse, geliştiricilerin donanımı daha kolay şekilde yönetmesini sağlayan yazılım hizmetleridir. API'lar da bir yazılımdır ve geliştiricilerin daha az kod yazmasını sağlar.
Star Wars: Jedi Survivor'daki FSR seçeneği oyunu ciddi anlamda bulanıklaştırıyor. Kaynak: Digital Foundry
PC tarafında hatırı sayılır yazılım çözümleri var. Grafik programlama özelinde, Windows'ta özellikle DirectX, OpenGL, Vulkan kullanılıyor. Ve bu yazılımlar, her yeni versiyonda farklılaşıyor. Yeni bir ekran kartı serisi, bu versiyonları destekleyerek ve belki de o versiyonda daha iyi çalışarak piyasaya çıkıyor. Ortalama bir AAA oyun geliştirme süresinin 5 sene olduğunu düşünürsek, sadece bu süreçte bile NVIDIA iki jenerasyon ilerlemiş oluyor. Bu da daha fazla iş demek oluyor PC tarafında. Piyasada yeni API'ları bilen geliştiricileri bulmak da zor olduğundan ortaya sancılı bir süreç çıkmış oluyor.
Kapanış
PC portlarının şanssız kaderi aslında uzun süredir böyle. 90'larda da konsolların farklı mimariye sahip olmasından ötürü çok sayıda kötü PC portları görüldü. Ancak o zamanın geliştiricileri artık oyun geliştirmiyor ve yatırımcı baskısı altındaki bugünün firmaları yoğurdu üfleyerek yemiyor. Bu makus talih ne zaman değişir pek bilinmez ama son aylardaki, tüketiciye hakaret denilecek seviyedeki PC portlarının önüne geçilmesi için belki de ulusal anlamda regülasyonlara ihtiyaç var.
Çok açıklayıcı bir yazı olmuş. Elinize sağlık.
Oyun yapmak gerçekten çok maliyetli bir iş olmaya başladı. İyi bir oyun çok iyi gelirler elde edebiliyor ki birçok örneğini gördük. Konsola çıkarmak anladığım kadarıyla daha az maliyetli ancak PC tarafı da çok ciddi bir gelir kapısı.
Rockstar'ın gittiği yol bence daha doğru. İlk önce konsola çıkar. 2 sene sonra da portu yap, PC'ye çıkar.