Oyun modları, özellikle GTA Online için bir düzine paradır. Ancak bazen, birisi o kadar iyi ve yine de o kadar basit olanla gelir ki, geliştiricinin aynı şeyi neden bir yamada yapmadığını merak ediyorsunuz. Bir bilgisayar korsanı, yükleme süreleri için o kadar basit bir düzeltme gösterdi ki, Rockstar’ın bunu neden yıllar önce yapmadığını merak edeceksiniz.
.
.
Şüphesiz, Grand Theft Auto Online’ın yükleme süreleri korkunçtur. Geçen yaz Reddit’te yapılan bilimsel olmayan bir anket , çoğunun oyunun başlaması için üç ila altı dakika beklediğini ve oyuncuların yüzde 35’inden fazlasının altı dakikadan daha uzun yükleme sürelerine sahip olduğunu ortaya koydu. En kötü senaryolarda, bekleme süreleri 15 dakikadan fazlaydı.
.
T0st kullanan bir bilgisayar korsanı, altı dakikalık yükleme sürelerine neyin sebep olabileceğini araştırdı. İşlem yığınını boşalttıktan sonra, tek bir CPU iş parçacığını en üst düzeye çıkaran iki darboğaz keşfetti. Kötü yazılmış bir rutin, 63.000’den fazla öğe içeren 10MB JSON dosyasını verimsiz bir şekilde ayrıştırıyordu.
.
.
Görünüşe göre, JSON dosyası oyun içi mağazalardan satın alınabilen öğeleri barındırıyordu (mikro işlemlerle karıştırılmamalıdır). Rutin, dosyadaki her girişi okur ve ardından bir dizide depolar. Her geçişte, yeni öğeyi eklemeden önce tüm diziyi kopyalar için yeniden denetler. Tahmin edilebileceği gibi, dizi büyüdükçe bu süreç uzar ve uzar.
.
Sorunu çözmek için T0st, iki darboğazı ortadan kaldıran bir DLL oluşturdu. İlk düzeltme, uzun dizi uzunluklarını “önbelleğe alır”.
.
“Eğer dizge aralığı içinde yeniden çağrılırsa, önbelleğe alınmış değeri [döndürür].”
.
Bu düzeltme, tekrarlanan girişleri ortadan kaldırdığından, çift kontrol artık gerekli değildir. Dolayısıyla, DLL’nin ikinci bölümü değerleri diziye ekler.
.
.
Bu iki yamanın sonuçları oldukça dikkat çekici. Yalnızca çoğaltma denetimi düzeltmesi yüklendiğinde, yükleme süresi mütevazı bir şekilde altı dakikadan 4,5 dakikaya düşürüldü. JSON ayrıştırıcısı çok daha etkiliydi, beklemeyi iki dakika 50 saniyeye düşürdü ve her iki yamayı DLL’ye uygulayarak yükleme süresini yaklaşık yüzde 70 (veya 1 dakika 50 saniye) artırdı.
.
Sonuçlar, donanım yapılandırmasına bağlı olarak değişebilir, ancak optimizasyonlar, her kurulum için yükleme hızlarını önemli ölçüde artırmalıdır.
.
T0st , ilgileniyorsanız kavram kanıtını GitHub’a gönderdi , ancak çevrimiçi iken enjekte etmenin sizi askıya alabileceği konusunda uyarıyor. Sorunu nasıl bulup çözdüğüne dair yazdığı yazı da oldukça iyi bir okuma. Rockstar’ın PoC’sinden haberdar olacağını ve stüdyonun mantıksız bir talep olmayan resmi bir yama yayınlayacağını umuyor.
.
“Bu bir şekilde Rockstar’a ulaşırsa: Sorunların tek bir geliştiricinin çözmesi bir günden fazla sürmemelidir,” diye yazıyor. “Lütfen bununla ilgili bir şeyler yapın.”
.
DAHA FAZLA HABER İÇİN DONANİMFORUM.COM
GOOGLE NEWS’DE BİZİ TAKİP ETMEK İÇİN TIKLA!
Bir Cevap Yaz