LoL İstemcisi'nin performansını ve istikrarını arttırmaya yönelik güncellemelerimizi düzenli olarak paylaşacağımıza söz vermiştik.
Bugünkü güncelleme, serimizin altıncı yazısı olacak. (İlk yazımızı burada, ikinci yazımızı burada, üçüncü yazımızı burada, dördüncü yazımızı burada ve beşinci yazımızı da burada bulabilirsiniz.)
ÖZET: 2020'yi istemcinin başlatılma süresini azaltmak, mimari yapısını güçlendirmek, şampiyon seçimini ve oyun sonu ekranını iyileştirmek, bellek sızıntıları ve istemci çökmelerini azaltmak ve hataları gidermekle geçirdik. Şu anda 2021'in ilk çeyreğinin planlarını yapıyoruz ve ana hedefimiz sosyal paneli iyileştirmek ve istemcinin genel istikrarlılığını arttırmaya devam etmek olacak.
2020 Özeti
Ekibimiz 2019'un sonlarına doğru kuruldu ve ilk aşamalardaki çalışmalarımızın büyük çoğunluğu LoL İstemcisi'nin durumunu anlamak üzerineydi. Bu sürecin bir parçası olarak istemciyi iyileştirmek adına nelerin üstünde çalışmamız gerektiğini belirlemek için tüm dünyadaki oyuncuların (yani sizin!) en çok şikâyetçi olduğu bölümlere odaklanmaya karar verdik. Daha yapacak çok işimiz var, ancak 2020'ye dönüp baktığımızda istemcide önemli iyileştirmeler yaptığımızı görüyoruz.
- İstemci hakkında küresel bir oyuncu anketi düzenledik ve bunu üstünde çalışacağımız kısımları belirlemek için kullandık. Aşağıda görebileceğiniz başarılarımızın büyük çoğunluğu, oyuncuların giderilmesini istedikleri sorunları belirtmesinin sonucuydu.
- İstemcinin önyükleme (başlatılma) süresini tüm dünyadaki oyuncuların %90'ı için 16 saniyeye indirdik (2020'nin başında bu süre 29,5 saniyeydi).
- Bunu önyükleme ember uygulaması sayısını %63 (istemci başlatılırken yüklenenler), istemcideki eklenti sayısını da %57 azalttığımız mimari çalışmalarımız sayesinde başardık. Yani özetle, gereksiz bir sürü kodu temizledik.
- Şampiyon seçiminde şampiyon seçerken ve yasaklarken, ekranı daha hassas ve daha düzgün çalışacak şekilde iyileştirdik.
- Şampiyonları filtrelerken ortaya çıkan performans sorunlarını giderdik ve şampiyon seçim tablosunda bazı iyileştirmeler yaptık.
- Şampiyon seçimindeki bazı özelliklerin kullanım oranlarını araştırdık. Bu konuyu aşağıdaki bölümde daha ayrıntılı bir şekilde açıklayacağız.
- Şampiyon kesinleştirme ve yasaklama sürelerini iyileştirdik.
- Şampiyon seçimindeki ve ilgili ekranlardaki bellek sızıntılarını düzelttik (ayrıntıları aşağıdaki bölümde bulabilirsiniz).
- Oyuncular karşılaşma sonrası oyun sonu ekranına geçtiğinde istemcinin tamamen donması ve siyah ekran vermesi sorununu çözdük.
- İstemcinin oyun sonu ekranında "Yeniden Bağlan" düğmesini göstermesi sorununu çözdük.
- 2020'de hem küçük hem de uzun zamandır oyuncuların başını ağrıtan 175 hatayı giderdik.
- Oyuncu isimlerinin sohbette üç nokta olarak görünmesi
- Sohbette yeni mesaj aldığınızda görev çubuğu simgesinin yanıp sönmemesi
- Yeni oyuncuların sosyal paneli görememesi
- Oyuncu farklı bilgisayardan giriş yaptığında ayarların sıfırlanması
- Giriş yaptığınızda hediye bildirimlerinin tekrar tekrar çıkması
- Oyuncuların istemcide çeşitli şeyler yaptıktan sonra siyah ana ekrana geri dönmesi
- Koleksiyon sekmesinin ve yan sekmelerinin hassasiyeti iyileştirildi.
- Rünler sekmesinin yüklenme süresi %40 azaltıldı ve rünler arayüzü daha sorunsuz çalışacak hale getirildi.
- İstemcideki 30 bellek sızıntısı giderildi. Bu, yıl sonuna doğru keşfettiğimiz epey zorlayıcı bir alandı. Dolayısıyla bu iyileştirmeleri tatil döneminden önce getirebildiğimiz için çok sevindik.
- Bellek sızıntıları, programın bir bölümünün bir görevi tamamladıktan sonra belleği serbest bırakamamasından kaynaklanır. Bu da sistemde çalışan diğer programlar için geriye daha az bellek bırakır. Üst üste biriken sorunlar her zaman kötü sonuçlanır; ancak bu sorunların neden kaynaklandığını özellikle de büyük uygulamalarda bulmak epey zordur.
- 10.23'te getirdiğimiz ilk bellek sızıntısı düzeltmelerinden önce, Riot sunucularındaki oyuncular her yamada belleğin tükenmesinden kaynaklanan 193.000 çökme sorunuyla karşılaşıyordu. 2020'nin son yaması 10.25'teyse bu çökmelerin %55 oranında azaldığını gördük!
Daha önce bahsettiğimiz gibi, odaklanacağımız alanları tespit etmek için sizin küresel istemci anketinde verdiğiniz yanıtlardan faydalandık. Yukarıdaki iyileştirmeler, en çok şikâyetçi olduğunuz alanlardaki ilerlememizi temsil ediyor. Fakat nihayetinde önemli olan tek şey, doğru yönde ilerlediğimizi düşünüp düşünmediğiniz. İşte bu yüzden oyun tabanlı ölçütlerin yanı sıra, tüm anketlerimizde daha olumlu sonuçlar aldığımızı açıklamaktan mutluluk duyuyoruz. Yani istemcide karşılaştığı sorunların azaldığını düşünen oyuncuların sayısı gitgide artıyor!
Yine de bu sorunlar tamamen ortadan kalkmış değil. Bu yıl başarmamız gereken hâlâ çok fazla şey var ve gelişmeleri sizinle paylaşmaya devam edeceğiz.
Şampiyon Seçiminde Fazla Kullanılmayan Özellikler
Önceki yazımızda genel performansı arttırmak için şampiyon seçiminde fazla kullanılmayan bazı özellikler hakkında bir inceleme yaptığımızı söylemiştik. Favoriler, görevler ve ifadeler özelliklerini değerlendirdikten sonra, bunların hiçbirini kaldırmamaya karar verdik. Bunun yerine onları optimize etmeye odaklanacağız. İfadelerle ilgili sorunu şimdiden çözdük ve şu anda favoriler ve görevler özellikleri üstünde çalışıyoruz.
Sırada Ne Var?
Şu anda yeni yılın ilk çeyreği için plan yapmaya devam ediyoruz, fakat bir sonraki adımımız LoL İstemcisi'ndeki şu sorunları çözmek olacak:
Sosyal Panel
Geçtiğimiz yıl boyunca sosyal panelle ilgili sorunların arttığını gözlemledik. Aralık ayında imlecinizi oyun içindeki arkadaşlarınızın üstüne getirdiğinizde ortaya çıkan kartların, oyun türünü veya şampiyonu göstermemelerine yol açan hatayı giderdik. Çözmek istediğimiz diğer sorunlarsa şöyle:
- Sosyal panelin bağlanmaması
- Arkadaş listesinin yüklenmemesi, yanlış durumun görüntülenmesi, arkadaşların görünmemesi
- Arkadaş listesi dolu olan oyunculara arkadaşlık isteği gönderilebilmesi
- Oyuncu normal oyundayken dereceli bilgilerinin kartında görünmemesi
- Hızla mesaj yazarken sohbetin takılması
- Oyun her yeniden açıldığında klasörlerin yer değiştirmesi
- Oyunları ve sunucuları gruplandırırken LoR ve VALORANT klasörlerinin kaybolması
- Sohbet kutucuğunda "Tarih çizgilerini göster" seçeneğine tıklamanın, metin kutularının çakışmasına yol açması
- Arkadaşlık isteği bildiriminin yalnızca seçenek devre dışıyken gösterilmesi ve bu durumun tam tersi
Ayrıca eski Javascript altyapısını kaldıracağız (biraz sonra Javascript'ten daha fazla bahsedeceğiz) ve sosyal paneli tamamen ember uygulamalarına aktaracağız. Bu geçiş, koddaki sorunlu yerlerin üstünden geçmek ve bunları temizlemek için iyi bir fırsat. Bu fırsatı kaçırmayacağız ve böylece istemci daha düzgün çalışacak ve daha az hatayla karşılaşacaksınız.
İstemci İstikrarı
LoL İstemcisi'ni daha istikrarlı hale getirmek için iki yeni alana odaklanacağız: istemci çökmeleri ve Javascript hataları. Javascript hataları, tahmin edebileceğiniz gibi istemci çökmeleri de dahil çeşitli sorunlara yol açabiliyor. Bu çalışmamızda istemcinin belli bir bölümüne (örn. şampiyon seçimi, istemci önyüklemesi) odaklanmak yerine, tüm istemciyi ele alacağımız daha genel bir yaklaşım izleyeceğiz. Halihazırda öncelik verdiğimiz istikrarlılık çalışmalarının yanı sıra, dört farklı hedefimiz daha olacak:
- Çökme sorunlarını azaltmak: 10.25 Yaması'nda 16 Riot sunucusundaki tüm oyuncuların istemcileri, toplam 2,2 milyon kez çöktü. İlk araştırmamız sonucunda, çökme sorunlarının çoğunu gidermek için en iyi seçeneğimizin Chromium sürümümüzü güncellemek olduğunu gördük. Bu, LoL İstemcisi'nin altyapısının en önemli parçalarından biri olan internet tarayıcısı.
- Javascript hatalarını azaltmak: 10.25 Yaması'nda 16 Riot sunucusundaki tüm oyuncular, istemcilerinde toplam 36 milyon Javascript hatasıyla karşılaştı. Tüm Javascript hataları çökme veya performans düşüşüyle sonuçlanmasa da görünmez hatalar bile birikip daha büyük sorunlara yol açabilir. Bu sayıyı düşürmek, istemcide çeşitli iyileştirmelere sebep olacak.
- Bellek sızıntılarını düzeltmeye devam etmek: Geçen yıl düzelttiğimiz sızıntılardan bazılarının büyük faydasını gördük. Bu yıl da bunları görmeye devam etmek istiyoruz.
- Kod tabanımızı temizlemek için mimari çalışmalarımıza devam etmek: Yukarıda da bahsettiğimiz gibi, Chromium'u güncellemek için birkaç önkoşulu yerine getirmemiz gerekiyor. Bunlar da istemcinin performansını arttıracak. Önce bu çalışmamızı tamamlamayı ve daha sonra da yıl ortalarına doğru Chromium'u güncellemeyi planlıyoruz.
- Chromium'u en son Aralık 2019'da güncelledik. Bu, İstemci Temizleme Çalışmaları'na başlamadan birkaç ay önceydi. Bu güncelleme sonrası epey iyi sonuçlar aldık ve bir sonraki güncellemeyle birlikte gelecek iyileştirmeleri, çıkış tarihine yaklaştığımızda paylaşacağız.