ΣΥΜΜΑΖΕΜΑ ΕΦΑΡΜΟΓΗΣ: 2021 Μέχρι Στιγμής και Μέλλον

Άρουμε την κατάργηση αναβάθμισης του Chromium Embedded Framework ενώ διερευνούμε άλλες ευκαιρίες.

Υποσχεθήκαμε ότι θα σας ενημερώνουμε τακτικά για τις εργασίες που επιτελούμε, ώστε να βελτιώνουμε τις επιδόσεις και την αξιοπιστία της εφαρμογής του League of Legends.

Η σημερινή ενημέρωση είναι το έβδομο blog της σειράς. (Δείτε το πρώτο, το δεύτερο, το τρίτο, το τέταρτο το πέμπτο και το έκτο της σειράς εδώ)

TL;DR: Κατά το πρώτο τρίμηνο του 2021 εργαστήκαμε στο να στρώσουμε τον δρόμο προς την άρση της κατάργησης ενημέρωσης του Chromium Embedded Framework (CEF). Υπάρχουν ακόμη εργασίες που πρέπει να γίνουν, όμως αναμένουμε την απόκτηση της νέας έκδοσης του Chromium Embedded Framework (CEF) στα τέλη του δευτέρου τριμήνου του 2021, γεγονός που θα παρέχει στους παίκτες πληθώρα προτερημάτων.

Ενημέρωση του Chromium Embedded Framework (CEF)

Όπως αναφέραμε και την προηγούμενη φορά, ένα από τα μεγάλα έργα πάνω στα οποία εργαζόμαστε είναι η ενημέρωση της έκδοσης του Chromium Embedded Framework (CEF), δηλαδή του προγράμματος περιήγησης στο οποίο στηρίζεται όλη η εφαρμογή του League. Υποτιμήσαμε τη σημασία αυτής της ενημέρωσης την προηγούμενη φορά, για να είμαστε πιο σαφείς. Η ενημέρωση του Chromium Embedded Framework (CEF) είναι η πλέον εποικοδομητική αλλαγή που μπορούμε να κάνουμε, ώστε να βελτιώσουμε την εφαρμογή. Αυτή η ενημέρωση θα έχει άμεσα πλεονεκτήματα, ενώ παράλληλα θα μας δώσει τη δυνατότητα να πραγματοποιήσουμε μεγαλύτερες βελτιώσεις.

Η τελευταία φορά που ενημερώσαμε το CEF ήταν τον Νοέμβριο του 2019 (έκδοση 74). Τη στιγμή σύνταξης του παρόντος κειμένου η πιο πρόσφατη έκδοση του CEF είναι η έκδοση 90. Η ενημέρωση του CEF (σκοπός μας είναι η αναβάθμιση σε CEF 90) θα προσφέρει τα ακόλουθα προτερήματα:

  • Μείωση των κρασαρισμάτων της εφαρμογής
    • Οι ξεπερασμένες εκδόσεις του CEF δεν συνεργάζονται αρμονικά με συγκεκριμένο υλικό. Τα πρώτα στοιχεία υποδεικνύουν ότι η πλειονότητα των κρασαρισμάτων ενδεχομένως να οφείλεται στις ξεπερασμένες εκδόσεις του CEF. Πιστεύουμε ακράδαντα ότι μόλις γίνει η αναβάθμιση, οι παίκτες θα αντιμετωπίζουν λιγότερα κρασαρίσματα.
  • Βελτιώσεις στη συμβατότητα
    • Η ομάδα του CEF δοκιμάζει διαρκώς τις νέες εκδόσεις με διάφορους συνδυασμούς υλικού. Η εφαρμογή του League έχει αυτό το προνόμιο να πραγματοποιεί αντίστοιχες δοκιμές εντελώς δωρεάν.
  • Αυξημένη απόδοση WebSocket
    • Η εφαρμογή του League χωρίζεται σε δύο μεγάλα κομμάτια: Το «προσκήνιο» που αποτελεί την οπτική εφαρμογή με την οποία αλληλεπιδρούν οι παίκτες και την «υποδομή». Η δεύτερη τρέχει στο παρασκήνιο, λαμβάνει δεδομένα από τους διακομιστές μας και καταγράφει τις πληροφορίες που χρειάζεται η εφαρμογή για να σας δείξει τα σωστά πράγματα. Παραδείγματα λειτουργίας της υποδομής:
      • «Αυτός ο παίκτης έχει ενεργοποιήσει τη ρύθμιση κλεισίματος της εφαρμογής κατά τη διάρκεια του παιχνιδιού και μόλις μπήκε σε ένα παιχνίδι. Κλείσε την εφαρμογή μέχρι να τελειώσει το παιχνίδι.»
      • «Αυτός ο παίκτης μόλις άνοιξε την καρτέλα Συλλογή. Ποιους Ήρωες έχει στην κατοχή του;»
  • Στην ουσία, φανταστείτε το WebSocket σαν έναν σωλήνα που ενώνει το προσκήνιο με την υποδομή. Ένας μεγαλύτερος σωλήνας χωρίς στροφές και διασταυρώσεις μπορεί να μεταφέρει δεδομένα πιο γρήγορα. Αυτό ακριβώς μας παρέχει η νέα έκδοση του CEF. Οι βελτιώσεις WebSocket έχουν ως αποτέλεσμα την καλύτερη απόδοση παιχνιδιού σε σημεία όπου υπάρχει μεγάλη μεταφορά δεδομένων (Τέλος παιχνιδιού και Επιλογή Ήρωα), ιδιαίτερα για παίκτες που χρησιμοποιούν παλιότερο υλικό. Συγκριτικά, η διαφορά μεταξύ των εκδόσεων CEF μπορεί να έχει σαν αποτέλεσμα έως και:
    • 4,1 φορές μεγαλύτερη ταχύτητα σε Windows
    • 7,8 φορές μεγαλύτερη ταχύτητα σε Mac
  • Βελτίωση απόδοσης animation
    • Πιο συγκεκριμένα, σε animation που συμβαίνουν σταδιακά με βάση συγκεκριμένα δεδομένα, όπως για παράδειγμα η γραμμή εμπειρίας στην οθόνη Τέλους παιχνιδιού (υπάρχουν αρκετά τέτοια). Τεχνικά, αυτά τα animation είναι ένα είδος διαρροής μνήμης, οπότε η γενικότερη απόδοση της εφαρμογής έπειτα από εκτεταμένες περιόδους παιχνιδιού θα βελτιωθεί εξίσου.
  • Βελτιωμένα FPS —Μείωση της αίσθησης βραδύτητας και γρηγορότερη αναγνώριση των κλικ
  • Μεγαλύτερη ευκολία διαχείρισης από τους προγραμματιστές
    • Επιπλέον τρόποι να αποτραπούν οι διαρροές μνήμης σε εκτεταμένες περιόδους παιχνιδιού
    • Μια νέα μέτρηση που μας δίνει καλύτερα δεδομένα σχετικά με το πόση ώρα χρειάζεται για την απεικόνιση των δεδομένων της εφαρμογής στην οθόνη
  • Εξυπνότερη χρήση CPU
    • Η τρέχουσα έκδοση CEF της εφαρμογής (έκδοση 74) εισήγαγε την «Υπηρεσία Δικτύου» μια νέα λειτουργία που δρομολογεί όλα τα αιτήματα δικτύου μέσω ενός μόνο νήματος στη CPU. Με αυτόν τον τρόπο απελευθερώνονται περισσότερα νήματα τα οποία μπορούν να χρησιμοποιηθούν για άλλους σκοπούς, όπως για παράδειγμα τη φόρτωση περιεχομένου. Αυτήν τη στιγμή δεν χρησιμοποιούμε την εν λόγω λειτουργία, δεδομένου ότι όταν κυκλοφόρησε δεν είχαμε αρκετό χρόνο να πειραματιστούμε με αυτήν κατά την τελευταία ενημέρωση του CEF. Με την επόμενη αναβάθμιση, ωστόσο, μπορούμε να ξεκινήσουμε να σχεδιάζουμε την υποστήριξή της από το League.
  • Βελτίωση απόδοσης Javascript
    • Οι νεότερες εκδόσεις του Chromium φέρνουν σημαντικές αλλαγές στη μηχανή v8, η οποία χρησιμοποιείται για τη διαχείριση Javascript. Ομοίως με τις βελτιώσεις συνδεσιμότητας, αυτό είναι ένα προνόμιο το οποίο μπορούμε να αποκτήσουμε απλά μέσω της αναβάθμισης στη νέα έκδοση.


Το περασμένο τρίμηνο οι εργασίες μας επικεντρώθηκαν στην αναβάθμιση των υπαρχόντων στοιχείων web (σκεφτείτε την τεχνολογία ενσωμάτωσης βίντεο για τοποθεσίες web, αναδυόμενες ειδοποιήσεις και άλλα τέτοια πραγματάκια) σε εκδόσεις που θα είναι συμβατές με τις νέες εκδόσεις CEF, προκειμένου να βεβαιωθούμε ότι η αναβάθμιση του CEF αυτού καθαυτού δεν θα έχει σαν αποτέλεσμα την καταστροφή των πάντων. Θέλουμε να αναβαθμίσουμε αυτά τα στοιχεία, ώστε να παρέχουμε μια απρόσκοπτη εμπειρία. Έχοντας αυτό κατά νου, ελπίζουμε να μην παρατηρήσατε την κυκλοφορία αυτών των αναβαθμίσεων στις πρόσφατες Ενημερώσεις μας. Αυτές οι αναβαθμίσεις άπτονται μεγάλου μέρους κώδικα, οπότε γνωρίζουμε ότι υπάρχει η πιθανότητα ορισμένα μικρά σφάλματα να έχουν ξεφύγει από τις δοκιμές. Ωστόσο, θα διορθώσουμε όλα αυτά τα προβλήματα μόλις τα εντοπίσουμε.

Κλείνοντας, θέλουμε να σας ενημερώσουμε ότι απέχουμε μόλις μερικές εβδομάδες από την ολοκλήρωση της αναβάθμισης αυτών των στοιχείων και ότι θα μπορέσουμε να προχωρήσουμε στην ενημέρωση του CEF. Ευελπιστούμε ότι αυτό θα έχει γίνει μέχρι τα τέλη Ιουλίου 2021.

Πίνακας κοινωνικών επιλογών

Ένα άλλο ζήτημα στο οποίο αναφερθήκαμε την προηγούμενη φορά ήταν ο Πίνακας κοινωνικών επιλογών. Ο μακροπρόθεσμος στόχος μας είναι η μετάβαση από ComponentsJS (παλιά αρχιτεκτονική) σε Ember. Τη δεδομένη χρονική στιγμή αυτό το σχέδιο βρίσκεται σε εκκρεμότητα, καθώς έχουμε επικεντρωθεί στην κυκλοφορία της ενημέρωσης του CEF. Ωστόσο, έχουμε ήδη ολοκληρώσει τα αρχικά βήματα που χρειάζονται για τη μετάβαση σε Ember και θα επιστέψουμε σε αυτά μετά την ολοκλήρωση της ενημέρωσης του CEF.

Σας παρουσιάζουμε τα σημαντικά ζητήματα που επιλύσαμε όσον αφορά τον Πίνακα κοινωνικών επιλογών προτού ξεκινήσουμε τις διαδικασίες για την αναβάθμιση του CEF:

  1. Αδυναμία σύνδεσης στον πίνακα κοινωνικών επιλογών
  2. Αδυναμία φόρτωσης της Λίστας φίλων, λανθασμένη εμφάνιση κατάστασης, αδυναμία εμφάνισης των φίλων σας
  3. Αδυναμία εμφάνισης πληροφοριών Κατάταξης στην κάρτα παίκτη, εάν παίζει Κανονικό παιχνίδι
  4. Άμεση εναλλαγή ανάμεσα στην ένδειξη αποσύνδεσης με την εικόνα του θλιμμένου Πόρο και στη φόρτωση της Λίστας φίλων κατά την εκκίνηση


Ενημέρωση σχετικά με τις απαιτήσεις σε μνήμη και τα σφάλματα Javascript

Συνεχίσαμε να παρακολουθούμε τις απαιτήσεις σε μνήμη όσον αφορά τα παιχνίδια που παίζονταν συναπτά σε μια περίοδο παιχνιδιού. Βρισκόμαστε στην ευχάριστη θέση να σας ενημερώσουμε ότι έχουμε εντοπίσει μείωση της τάξης των 30 MB ανά παιχνίδι από την Ενημέρωση 10.25 και έπειτα, αλλά και μια γενικότερη διαρκή μείωση όσον αφορά τα κρασαρίσματα που οφείλονται στη μνήμη.

Το τελευταίο σημείο στο οποίο θα θέλαμε να αναφερθούμε είναι τα σφάλματα Javascript. Κάναμε ένα λάθος στην τελευταία ανάρτηση σχετικά με τον πραγματικό αριθμό των σφαλμάτων Javascript που αντιμετώπιζαν οι παίκτες στις περιοχές της Riot. Στην Ενημέρωση 10.25 ο αριθμός τους ήταν δραματικός και έφτανε τα 265 εκατομμύρια. Στα θετικά της υπόθεσης είναι ότι αυτό τονίζει τη σημασία του προβλήματος και ότι ο πραγματικός αριθμός των σφαλμάτων που αντιμετώπιζαν οι παίκτες δεν άλλαξε. Το μόνο που άλλαξε είναι η καταγραφή μας. Έκτοτε, μειώσαμε τον αριθμό των σφαλμάτων στα 140 εκατομμύρια ανά Ενημέρωση και είμαστε αισιόδοξοι ότι θα καταφέρουμε να μειώσουμε αυτόν τον αριθμό ακόμα περισσότερο.

Μελλοντικές αλλαγές

Αν και η αναβάθμιση του CEF είναι ο πρωταρχικός μας βραχυπρόθεσμος στόχος, βάζουμε παράλληλα μια σειρά σε όλα τα προβλήματα που θέλουμε να αντιμετωπίσουμε αργότερα μέσα στο 2021.

  • Η μετάβαση του Πίνακα κοινωνικών επιλογών σε Ember, όπως αναφέραμε προηγουμένως
  • Επανεξέταση του Τέλος παιχνιδιού (EOG) Αν και αντιμετωπίσαμε ορισμένα σημαντικά ζητήματα απόδοσης σχετικά με το Τέλος Παιχνιδιού τον περασμένο χρόνο, υπάρχουν πολλά ακόμα που πρέπει να γίνουν. Πολλοί παίκτες συνεχίζουν να κάνουν παράπονα ότι χρειάζεται αρκετός χρόνος μέχρι να επιστρέψουν στην εφαρμογή ή/και ότι η οθόνη του Τέλους παιχνιδιού παγώνει. Όταν επικεντρωθούμε σε αυτό το έργο, θα ξεκινήσουμε την καταγραφή των αλληλεπιδράσεων της εφαρμογής με τη μηχανή και τις υπηρεσίες εντός παιχνιδιού και στη συνέχεια θα δούμε τι μπορούμε να κάνουμε για να βελτιώσουμε την εμπειρία. Το Τέλος παιχνιδιού συνεργάζεται με πολλές άλλες υπηρεσίες που δεν εμπίπτουν στις αρμοδιότητες της ομάδας της εφαρμογής. Στο πλαίσιο αυτής της διαδικασίας, θα χρειαστεί συνεργασία μεταξύ πολλών ομάδων, προκειμένου να αντιμετωπιστούν κοινά προβλήματα.
  • Αργοπορημένη είσοδος στην Επιλογή Ήρωα. Αυτό είναι ένα πρόβλημα για το οποίο έχουν γίνει αρκετές αναφορές σε ορισμένες περιοχές. Αυτό μας δείχνει ότι βασίζεται σε μεγάλο βαθμό στη σύνδεση των παικτών (οι υποδομές διαδικτύου αλλάζουν από περιοχή σε περιοχή). Παρά το γεγονός ότι δεν μπορούμε να κάνουμε κάτι όσον αφορά τα προβλήματα δικτύου, θα συνεργαστούμε με την ομάδα Αγώνων για να κάνουμε ό,τι περνάει από το χέρι μας, ώστε όλοι οι παίκτες να μπαίνουν στην Επιλογή Ήρωα σε ένα εύλογο χρονικό διάστημα.
  • Σταθερότητα εφαρμογής κατά τη διάρκεια εκτεταμένων περιόδων παιχνιδιού. Ένας από τους κυριότερους στόχους μας στο τέλος της περασμένης χρονιάς ήταν η αντιμετώπιση των διαρροών μνήμης, οι οποίες έκαναν την εφαρμογή να καταλαμβάνει ολοένα και περισσότερη μνήμη όσο οι παίκτες συνέχιζαν να παίζουν ή όσο εκείνη παρέμενε αδρανής για μεγάλες χρονικές περιόδους. Για να σας ενημερώσουμε πιο ξεκάθαρα για τους στόχους μας, αυτήν τη στιγμή αναζητούμε έξυπνους τρόπους, ώστε οι παίκτες να απολαμβάνουν σταθερά μια εμπειρία, όμοια με εκείνη που έχουν μόλις ανοίξουν την εφαρμογή, ανεξάρτητα από τον αριθμό παιχνιδιών που έχουν παίξει. Μια λύση θα ήταν να συνεχίσουμε να εστιάζουμε στην αντιμετώπιση των πιο απαιτητικών διαρροών μνήμης, ωστόσο θα πρέπει να αξιολογήσουμε την αποτελεσματικότητα αυτής έναντι άλλων βραχυπρόθεσμων λύσεων.



Αυτά για αυτή την ενημέρωση! Όπως πάντα, οι εργασίες μας εξαρτώνται σε μεγάλο βαθμό από τα σχόλια που λαμβάνουμε από διάφορα μέσα, όπως τις συχνές έρευνες παικτών. Συνεχίστε να μας ενημερώνετε σχετικά με τα κομμάτια της εφαρμογής που πιστεύετε ότι πρέπει να αλλάξουν, αλλά και για το ποιες από τις αλλαγές είχαν τον μεγαλύτερο αντίκτυπο στην εμπειρία σας!