SCSKiller ile Oyunlarda Shader Derleme Takılmalarını Azaltma Rehberi

SCSKiller Library kütüphane ekranı

Oyunlarda ilk kez bir efektle, bir düşmanla ya da yeni bir bölgeyle karşılaştığınızda ekranın bir anlığına donduğunu fark ettiyseniz, büyük ihtimalle shader derleme takılması yaşıyorsunuz. Bugün bu soruna doğrudan çözüm getiren, ücretsiz ve açık kaynaklı yeni bir araç olan SCSKiller’a göz atacağız.

Shader derleme takılması neden yaşanıyor?

Önce sorunu kısaca anlayalım, çünkü aracın neyi çözüp neyi çözemediğini bilmek önemli. Ekranda gördüğünüz her ışık, gölge, patlama ya da su efekti aslında “shader” adı verilen küçük programlarla çiziliyor. DirectX 12 oyunlarda bu shader’lar, ekran kartınızın anlayacağı hale getirilip “pipeline” denilen paketler halinde derleniyor. Sorun şu: birçok oyun bu derleme işini oyun sırasında, yani bir efekte ilk kez ihtiyaç duyduğu anda yapıyor. Derleme bitene kadar oyun bekliyor ve siz de bunu anlık bir donma, bir takılma olarak hissediyorsunuz.

Derlenen shader’lar ekran kartı sürücüsünün önbelleğine kaydediliyor, bu yüzden aynı yerden ikinci kez geçtiğinizde genelde takılma olmuyor. Ama ilk oynayışta, özellikle de yeni bir sürücü kurduktan sonra, bu takılmalar oyun deneyimini ciddi şekilde bozabiliyor. İşte SCSKiller tam da burada devreye giriyor: Oyunun kendi dosyalarıyla birlikte gelen shader’ları okuyor, oyunun hangi pipeline’ları oluşturacağını hesaplıyor ve bunları oyun kapalıyken, kendi süreci üzerinden doğrudan sürücünüzün shader önbelleğine derliyor. Böylece oyunu açtığınızda bu shader’lar zaten hazır oluyor ve oyun onları derlemek için durmak zorunda kalmıyor.

Burada önemli bir detay var: program sürücünüzü değiştirmiyor, sürücü ayarlarınıza dokunmuyor ve oyun dosyalarını da değiştirmiyor. Derleme işlemini, oyunun kendisinin de kullandığı DirectX üzerinden yapıyor. Yani oyun açıldığında, normalde kendi oluşturacağı önbelleği hazır buluyor.

Karşılaştırmalar ve desteklenen platformlar

Gaming Optimized, Silent Hill: Townfall’da her iki senaryoyu da boş bir shader önbelleğiyle, yani sıfırdan test etmiş. Bir tarafta oyun shader’ları oynanış sırasında derliyor, diğer tarafta ise SCSKiller ile shader’lar önceden derlenmiş. Aradaki farkı kare süresi grafiğinde de, oynanışın akıcılığında da net şekilde görebiliyorsunuz.

Geliştiricinin kendi testlerinde de sonuçlar oldukça çarpıcı: Final Fantasy VII Rebirth’te 20 milisaniyeyi aşan takılma sayısı 19’dan sıfıra iniyor. Hogwarts Legacy’de 1014 takılma 87’ye, Star Wars Jedi: Survivor’da ise tam 9038 takılma sadece 11’e düşüyor.

Platform tarafında oldukça geniş bir destek var: Steam, Epic Games, EA app, GOG, Ubisoft Connect, Xbox PC uygulaması, Battle.net ve bunların yanında PURPLE, HoYoPlay ve Gaijin başlatıcıları da destekleniyor. Yani hangi mağazadan oyun aldıysanız, SCSKiller büyük ihtimalle onları otomatik olarak bulacak.

İndirme ve kurulum

Programı geliştiricinin GitHub sayfasından indiriyoruz. SCSKiller’ı ilk açtığımızda program bilgisayarımızdaki oyunları otomatik olarak tarıyor ve her oyunun shader dosyalarını buluyor. Karşımıza gelen Library, yani kütüphane ekranında oyunlar mağazalarına göre gruplanmış şekilde listeleniyor.

Her oyunun yanında birkaç bilgi görüyoruz: kaç shader ve kaç pipeline içerdiği, önbellekte ne kadar yer kaplayacağı ve derlemenin yaklaşık ne kadar süreceği. Ayrıca bir durum etiketi var: “Ready to compile” derlemeye hazır demek, “Warmed” ise o oyunun shader’larının zaten önbelleğe derlendiğini gösteriyor.

Geliştiricinin örnek veriler içeren arayüz görseli. Kaynak: SCSKiller.

Shader’ları önceden derleme

Derlemek istediğimiz oyunu seçiyoruz. Seçimi yaptıktan sonra Compile butonuna basıyoruz. Derleme sırasında ilgili oyun kapalı olmalı. Ekranda ilerlemeyi, saniyede kaç pipeline derlendiğini anlık olarak görebiliyorsunuz. Süre, oyuna ve işlemcinize göre değişiyor.

Geliştiricinin örnek veriler içeren arayüz görseli. Kaynak: SCSKiller.

Derleme bittikten sonra oyunu her zamanki gibi kendi mağazasından ya da programın içindeki Play butonundan başlatabilirsiniz. Programı açık bırakırsanız, derlenen shader’ların gerçekten sürücü önbelleğine ulaşıp ulaşmadığını doğrulayabiliyor ve oyun boyunca kare sürelerinizi takip edebiliyorsunuz.

Record ile pipeline kaydı oluşturma

Bazı oyunlarda hangi pipeline’ların oluşturulacağı oyun dosyalarından tam olarak çıkarılamıyor. İşte bu oyunlar için SCSKiller’ın isteğe bağlı bir kayıt özelliği var. Kullanımı şöyle:

  1. Kütüphanede ilgili oyunu buluyoruz.
  2. Oyunun satırındaki Record anahtarını açıyoruz.
  3. Oyunu birkaç dakika normal şekilde oynuyoruz. Bu sırada kayıt aracı, oyunun kullandığı pipeline’ları yakalıyor.
  4. Oyundan çıkıp SCSKiller’a dönüyoruz ve normal şekilde derlemeyi başlatıyoruz.
Geliştiricinin örnek veriler içeren arayüz görseli. Kaynak: SCSKiller.

Sürücü güncellemeleri

Bilmeniz gereken bir nokta daha var: ekran kartı sürücüsünü güncellediğinizde sürücü, shader önbelleğini genelde sıfırlıyor. Yani daha önce derlediğiniz her şey gidiyor. Program bunu kendisi fark ediyor ve ayarlarda açıksa oyunların shader’larını otomatik olarak yeniden derliyor. Yani her sürücü güncellemesinden sonra elle uğraşmanıza gerek kalmıyor.

Neyi çözer, neyi çözmez?

Beklentileri doğru ayarlamak lazım. SCSKiller sadece shader derleme takılmalarını çözüyor. Açık dünya oyunlarında yeni bir bölgeye geçerken yaşanan takılmalar, doku ve içerik yüklemesinden kaynaklanan takılmalar ya da işlemci kaynaklı darboğazlar bu aracın alanına girmiyor. Ayrıca program her shader’ı yakalayamayabiliyor; nadiren de olsa oyun içinde derlenen bir shader yine küçük bir takılmaya sebep olabilir.

SCSKiller’ı kaldırma

Programı kaldırmak isterseniz Windows Ayarlar üzerinden normal şekilde kaldırabilir ya da portable sürümde klasörü silebilirsiniz. Kaldırma işlemi, kayıt modunun oyun klasörlerine eklediği dosyaları da otomatik olarak temizliyor.

Sonuç

Bu rehberde SCSKiller ile oyunlarımızın shader’larını daha oyunu açmadan nasıl derleyeceğimize baktık, özellikle Unreal Engine 5 ile yapılmış, shader takılmasıyla bilinen oyunları oynuyorsanız mutlaka bir deneyin deriz. Siz de denediyseniz hangi oyunda ne kadar fark gördüğünüzü yorumlarda yazmayı unutmayın.

Mobil sürümden çık