Geliştiricilerden
İSTEMCİ TEMİZLİĞİ: 2021 Çalışmaları ve Planlarımız

Bir Chromium Embedded Framework geliştirmesini etkinleştiriyor ve bazı fırsatları değerlendiriyoruz.

  • Seçim panoya kopyalandı

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 yedinci 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, beşinci yazımızı burada ve altıncı yazımızı burada bulabilirsiniz)

ÖZET: 2021'in ilk çeyreğini Chromium Embedded Framework'ü (CEF) yükseltmemizin önündeki engelleri kaldırmakla geçirdik. Hâlâ tamamlamamız gereken bazı işler olsa da yılın ikinci çeyreğinin sonlarına doğru Chromium Embedded Framework'ün yeni bir sürümüne geçmeyi bekliyoruz. Bu da oyunculara pek çok fayda sağlayacak.

Chromium Embedded Framework'ü (CEF) Güncellemek

Son yazımızda da belirttiğimiz gibi, şu anda üstünde çalıştığımız önemli projelerden biri de istemcinin Chromium Embedded Framework (CEF) sürümünü güncellemekti. CEF'in LoL İstemcisi mimarisinin merkezinde yatan web tarayıcısı olduğunu söyleyebiliriz. Bunun önemini geçen sefer yeterince veremediğimizi düşündüğümüzden bu sefer biraz daha açık konuşacağız. CEF'i güncellemek, istemciyi geliştirmek için yapabileceğimiz en önemli değişikliklerden biri. Bu sayede hem doğrudan bazı faydalar elde edecek hem de diğer geliştirmeleri yapma fırsatı yakalayacağız.

CEF'i en son Kasım 2019'da güncellemiştik (sürüm 74) ve bu yazıyı yazdığımız andaki mevcut sürüm CEF 90. CEF'i güncellemek (hedefimiz CEF 90) bize şu faydaları sağlayacak:

  • İstemci çökmelerinde azalma
    • Güncel olmayan CEF sürümleri bazı donanımlarda pek iyi sonuçlar vermiyor. Kısa vadede topladığımız verilere göre yaşanan çökmelerin büyük bölümü güncel olmayan CEF sürümünden kaynaklanıyor. Yükseltmenin ardından oyuncuların daha az çökmeyle karşılaşmalarını bekliyoruz.
  • Uyumluluk iyileştirmeleri
    • CEF Ekibi yeni sürümleri pek çok donanım konfigürasyonu üstünde kapsamlı olarak deniyor. LoL İstemcisi, tüm bu testlerden faydalanma imkânı yakalayacak.
  • Daha yüksek WebSocket performansı
    • LoL İstemcisi iki büyük parçadan oluşuyor: etkileşime girdiğiniz görsel uygulama olan "ön kısım" ve çok daha küçük olan "temeller". Bu ikinci kısım arka planda çalışarak sunucularımızdan verileri alıyor ve istemcinin size doğru şeyleri gösterebilmek için ihtiyaç duyduğu tüm bilgileri takip ediyor. Temellerin yaptığı şeylere birkaç örnek vermek gerekirse:
      • "Bu oyuncu oyuna girildiğinde istemciyi kapatan ayarı seçmiş ve az önce bir oyuna girdi. Hemen ön kısmı kapatalım. "
      • "Bu oyuncu Koleksiyon sekmesini açmış. Hangi şampiyonlara sahip?"
    • Websocket, aslında ön kısmı temellere bağlayan bir boru görevi görüyor. Daha az dolambaçlı ve daha büyük borular verilerin daha hızlı taşınmasını sağlıyor. Yeni CEF sürümünün bize sağlayacağı şey de bu. Özellikle de eski donanımlara sahip oyuncular için websocket iyileştirmeleri büyük miktarda verinin aktarıldığı noktalarda (oyun sonu, şampiyon seçimi) daha iyi performans sağlayabilir. CEF sürümlerimizi karşılaştırdığımızda aradaki fark:
      • Windows için 4,1 kata kadar daha hızlı
      • Mac için 7,8 kata kadar daha hızlı
  •  Daha iyi animasyon performansı
    • Özellikle de oyun sonu ekranındaki deneyim çubuğu gibi verilere bağlı olarak prosedürel olarak oluşturulan animasyonlar (bunu sıkça kullanıyoruz) etkilenecek. Bu animasyonlar teknik olarak birer bellek sızıntısı konumunda. Dolayısıyla uzun süreli oyun seanslarındaki genel istemci performansı da iyileşecek.
  • Daha İyi FPS - Yavaşlamalarda azalma ve tıklamaların daha hızlı algılanması
  •  Geliştiricilerimiz için daha kolay (daha hızlı, daha güvenilir) çalışma imkânı
    • Uzun oyun seanslarında oluşan bellek sızıntılarını azaltmanın daha fazla yolu olacak.
    • İstemci öğelerinin ekranda belirmesinin ne kadar sürdüğünü ölçmek için yeni ve daha iyi bir aracımız olacak.
  •  Daha akıllı CPU kullanımı
    • İstemcinin mevcut CEF sürümü (74), tüm ağ isteklerini CPU'daki tek bir izlekten geçirerek diğer izlekleri içerikleri yüklemek gibi farklı şeyler yapabilmeleri için boş bırakan "Ağ Hizmeti" adında bir özelliği getirmişti. Bu özelliği şu anda kullanmıyoruz çünkü CEF'i son güncellediğimizde özellik çok yeniydi ve henüz onunla denemeler yapma şansı bulamamıştık. Bir sonraki yükseltmemizle birlikte bunu LoL'de desteklemenin planlarını yapmaya başlayabileceğiz.
  • Daha iyi Javascript performansı
    • Chromium'un yeni sürümleri, Javascript için kullanılan v8 motoruna önemli iyileştirmeler getiriyor. Tıpkı uyumluluk iyileştirmeleri gibi bu da yalnızca sürümü yükselterek elde edebileceğimiz bir fayda.

Geçtiğimiz çeyrek boyunca çalışmalarımızda mevcut web bileşenlerimizi (gömülü videolar, açılır bildirimler gibi web sitesi teknolojileri) yeni CEF sürümleriyle uyumlu olacak şekilde yükseltmeye odaklandık ve CEF'in kendisinin bir şeyleri bozmayacağından emin olmaya çalıştık. Bu bileşenleri yükseltmenin pürüzsüz bir deneyim sunmasını istiyoruz. Bu yüzden umarız son birkaç yama boyunca getirdiğimiz yükseltmeleri fark etmemişsinizdir. Bu yükseltmeler çok büyük miktarda kodu etkiliyor. Dolayısıyla testler sırasında birkaç sorunun gözden kaçtığını biliyoruz ama bu sorunları yakaladıkça çözmeye devam edeceğiz.

Bu bileşen yükseltmelerini sadece birkaç hafta içinde tamamlayacağız ve ardından CEF'in kendisini güncellemeye geçebileceğiz. Bunu da Temmuz 2021'in sonuna kadar tamamlamayı umuyoruz.

Sosyal Panel

Son yazımızda bahsettiğimiz noktalardan biri de sosyal paneldi. Uzun vadede planımız sosyal paneli ComponentsJS'den (eski mimari) Ember'a aktarmak. Bu çalışmamız, şu anda CEF güncellemesini tamamlamaya çalıştığımız için duraksatılmış halde olsa da Ember'a yapılacak geçişin ilk adımlarından bazılarını tamamladık ve CEF güncellenir güncellenmez kaldığımız yerden devam edeceğiz.

CEF güncellememizin önündeki engelleri kaldırmaya odaklanmadan önce çözdüğümüz önemli sosyal panel sorunlarıysa şöyle:

  1. Sosyal panelin bağlanmaması
  2. Arkadaş listesinin yüklenmemesi, yanlış durumun görüntülenmesi, arkadaşların görünmemesi
  3. Oyuncu normal oyundayken dereceli bilgilerinin kartından kaybolması
  4. Sosyal panel başlatılırken bağlantı kesildi, üzgün poro ve arkadaş listesi ekranlarının yanıp sönmesi

Bellek İzi ve Javascript Hatalarına Dair Güncelleme

Ayrıca tek bir seans boyunca oynanan oyunların bellek izini takip etmeye devam ettik. 10.25 Yaması'ndan bu yana oyun başına neredeyse 30 MB'lik bir azalma kaydettiğimizi ve bellek aşımı nedeniyle yaşanan çökmelerin azalmaya devam ettiğini belirtmekten mutluluk duyuyoruz.

Değinmek istediğimiz son nokta da Javascript hataları. Önceki yazımızda Riot bölgelerindeki oyuncuların yaşadığı JS hatalarının sayısına dair bir hata yapmışız. 10.25 Yaması'nda bu sayı 265 milyondu. Tabii bu da sorunun öneminin altını bir kez daha çiziyor. Oyuncuların deneyimlediği hataların sayısı aslında değişmiyor. Değişen tek şey bizim yaptığımız ölçümler. O günden bu yana hataların sayısını yama başına 140 milyona düşürdük ve bu sayıyı daha da azaltacağımızdan eminiz.

Sırada Ne Var?

Kısa vadede CEF yükseltmesi asıl odaklanacağımız nokta olsa da 2021'in ilerleyen dönemleri için planladığımız birkaç diğer proje daha var.

  • Yukarıda da bahsettiğimiz gibi sosyal paneli Ember'a taşıyacağız.
  • Oyun sonu ekranını yeniden gözden geçireceğiz. Geçtiğimiz yılın sonlarında ve bu yılın başlarında oyun sonu performansına dair birkaç büyük sorunu gidersek de hâlâ yapmamız gereken bazı çalışmalar var. Pek çok oyuncu hâlâ istemciye dönüş için gereken sürenin çok uzun olması veya oyun sonu ekranının çökmesi gibi sorunlardan şikâyetçi. Bu proje başladığında ilk olarak istemcinin oyun motoru ve hizmetleriyle olan etkileşimlerini gözlemleyeceğiz ve ardından deneyimi iyileştirmek için neler yapabileceğimize bakacağız. Oyun sonu ekranı, İstemci Ekibi'nin kontrolünde olmayan pek çok diğer hizmetle birlikte çalışıyor. Dolayısıyla bu sürecin bir bölümü de diğer ekiplerle bir araya gelerek ortak çözümlere öncelik vermek olacak.
  • Şampiyon seçimine geç gelinmesini çözeceğiz. Bunun bazı bölgelerde sık sık rapor edilen bir sorun olması, ortada oyuncuların ağ bağlantılarıyla ilgili bazı durumlar bulunduğunu gösteriyor (internet altyapıları bölgeden bölgeye farklılık gösteriyor). Ağ sorunları için herhangi bir şey yapmamız mümkün olmasa da Rekabet Ekibi'yle ortaklaşa çalışarak tüm oyuncuların makul bir süre içerisinde şampiyon seçimine geçebilmesi için neler yapabileceğimizi araştıracağız.
  • Uzun oyun seansları esnasında istemci sağlamlığını korumaya çalışacağız. Geçen yılın sonlarına doğru odaklandığımız noktalardan biri de bellek sızıntılarını gidermekti. Bu sorun, oyuncular daha fazla oyun oynadıkça veya istemciyi uzun bir süreliğine açık bıraktığında istemcinin giderek daha fazla bellek kullanmasına neden oluyor. Buna daha kapsamlı bir ekleme yapmak gerekirse, oyuncuların ne kadar oyun oynarlarsa oynasınlar istemciyi her zaman daha yeni açılmış gibi deneyimlemesinin yollarını arayacağız. Buradaki çözüm sorunun üstüne gitmeyi sürdürerek daha zorlu bellek sızıntılarını çözmek olabilir. Ancak bu çözümü de daha kısa vadeli çözümlerle kıyaslamamız gerekecek.

Şimdilik bizden bu kadar. Her zaman olduğu gibi yaptığımız çalışmaların yadsınamaz bir bölümünü pek çok farklı yoldan gelen geribildirimler ışığında yapıyoruz. Örneğin düzenli oyuncu anketlerimiz bunlardan biri. Lütfen istemcinin en çok hangi noktaları üstünde çalışılması gerektiğini ve yaptığımız hangi değişikliklerin deneyiminiz üstünde en büyük etkiyi bıraktığını bizimle paylaşmaya devam edin.



  • Seçim panoya kopyalandı