ΣΥΜΜΑΖΕΜΑ ΕΦΑΡΜΟΓΗΣ: ΑΝΑΣΚΟΠΗΣΗ 2020 ΚΑΙ ΜΕΛΛΟΝ
Υποσχεθήκαμε ότι θα σας ενημερώνουμε τακτικά για τις εργασίες που επιτελούμε, ώστε να βελτιώνουμε τις επιδόσεις και την αξιοπιστία της εφαρμογής του League of Legends.
Η σημερινή ενημέρωση είναι το έκτο blog της σειράς. (Δείτε το πρώτο, το δεύτερο, το τρίτο,το τέταρτο και το πέμπτο της σειράς εδώ.)
TL;DR: Το 2020 επικεντρωθήκαμε στη βελτίωση του χρόνου εκκίνησης και την αρχιτεκτονική της εφαρμογής, στην επιλογή Ήρωα, στο τέλος του παιχνιδιού, στις διαρροές μνήμης, στις διακοπές λειτουργίας και στην επιδιόρθωση σφαλμάτων. Αυτήν τη στιγμή βρισκόμαστε στη μέση του σχεδιασμού για το πρώτο τρίμηνο του 2021 και έχουμε ως πρωταρχικό μας στόχο τη βελτίωση του πίνακα κοινωνικών επιλογών, αλλά και της ευρύτερης σταθερότητας της εφαρμογής.
Ανακεφαλαίωση 2020
Η ομάδα μας δημιουργήθηκε περί τα τέλη του 2019 και το αρχικό μας σχέδιο ήταν να κατανοήσουμε την κατάσταση στην οποία βρισκόταν η εφαρμογή του League. Στο πλαίσιο αυτής της διαδικασίας, αποφασίσαμε να επικεντρωθούμε στα κομμάτια της εφαρμογής, για τα οποία οι παίκτες ανά τον κόσμο (δηλαδή όλοι εσείς!) είχαν εκφράσει την έντονη δυσαρέσκειά τους. Με αυτόν τον τρόπο μπορέσαμε να προσδιορίσουμε τι χρειάζεται να γίνει, ώστε να βελτιωθεί η εφαρμογή. Έχουμε πολύ δρόμο μπροστά μας, όμως καθ' όλη τη διάρκεια του 2020 καταφέραμε να πραγματοποιήσουμε ουσιαστικές βελτιώσεις στην εφαρμογή.
- Διεξήγαμε μια έρευνα παγκόσμιας κλίμακας, ώστε να συγκεντρώσουμε τις απόψεις των παικτών για την εφαρμογή. Η εν λόγω έρευνα αποτελεί και τη βάση μας, όσον αφορά τον προσδιορισμό των σημείων που χρήζουν βελτίωσης. Τα περισσότερα από αυτά που καταφέραμε (τα οποία εμφανίζονται παρακάτω) έγιναν με γνώμονα όσα έθιξαν οι παίκτες.
- Μειώσαμε σημαντικά τον χρόνο bootstrap (χρόνος εκκίνησης εφαρμογής) στα 16 δευτερόλεπτα για το 90% των παικτών παγκοσμίως (από τα 29,5 δευτερόλεπτα στην αρχή του 2020).
- Αυτό έγινε χάρη στις εργασίες που πραγματοποιήσαμε όσον αφορά την αρχιτεκτονική της εφαρμογής, οι οποίες περιελάμβαναν μείωση της τάξεως του 63% στο bootstrap των εφαρμογών Ember (αυτές που φορτώνουν με την εκκίνηση της εφαρμογής) και 57% στις προσθήκες εντός της εφαρμογής. Με άλλα λόγια, κάναμε ένα καλό ξεκαθάρισμα στον κώδικα.
- Βελτιώσαμε την απόκριση και την αξιοπιστία της επιλογής Ήρωα, όταν καλούσασταν να επιλέξετε ή να αποκλείσετε Ήρωες
- Διορθώσαμε προβλήματα απόδοσης κατά τη διαδικασία φιλτραρίσματος και πραγματοποιήσαμε αλλαγές στον πίνακα επιλογής Ηρώων
- Διερευνήσαμε τη χρήση συγκεκριμένων λειτουργιών κατά την επιλογή Ήρωα. Θα μιλήσουμε περισσότερο για αυτό σε λίγο.
- Βελτιώσαμε τον χρόνο για την επιλογή και τον αποκλεισμό Ηρώων
- Διορθώσαμε διαρροές μνήμης κατά τη διάρκεια και γύρω από την επιλογή Ηρώων (επισημαίνονται παρακάτω)
- Αντιμετωπίσαμε το πάγωμα της εφαρμογής και την εμφάνιση μαύρης οθόνης, όταν οι παίκτες επέστρεφαν στην εφαρμογή μετά το τέλος του παιχνιδιού (EOG) στο πλαίσιο της ολοκλήρωσης του αγώνα.
- Αντιμετωπίσαμε την παραμονή της εφαρμογής στο κουμπί «Επανασύνδεση» κατά το τέλος του παιχνιδιού, παρά το γεγονός ότι το εν λόγω κουμπί δεν έπρεπε να εμφανίζεται καν
- Το 2020 επιδιορθώσαμε 175 σφάλματα, από μικρά σφάλματα έως σφάλματα που υπήρχαν εδώ και χρόνια.
- Τα ονόματα παικτών που εμφανίζονταν ως «...» στη συνομιλία
- Την έλλειψη φωτεινής ένδειξης στη γραμμή εργασιών κάθε φορά που λαμβάνατε μήνυμα στη συνομιλία
- Την απόκρυψη του πίνακα κοινωνικών επιλογών στους καινούργιους παίκτες
- Την επαναφορά των ρυθμίσεων, κάθε φορά που κάποιος παίκτης πραγματοποιούσε είσοδο από έναν διαφορετικό υπολογιστή
- Τις επαναλαμβανόμενες ενημερώσεις για δώρα κατά την είσοδο
- Την επιστροφή των παικτών σε μια μαύρη κεντρική οθόνη μετά από ποικίλες ενέργειες στην εφαρμογή
- Βελτιώσαμε την ταχύτητα απόκρισης της καρτέλας Συλλογές και όλων των υποκατηγοριών της
- Μειώσαμε τον χρόνο φόρτισης της καρτέλας Ρούνοι κατά 40% και κάναμε τη χρήση του περιβάλλοντος των Ρούνων πιο ομαλή και αξιόπιστη
- Αντιμετωπίσαμε 30 διαρροές μνήμης σε όλη την εφαρμογή. Οι διαρροές μνήμης αποτελούν μια μεγάλη πρόκληση, την οποία ανακαλύψαμε αργότερα, κατά τη διάρκεια του χρόνου. Ως εκ τούτου, είμαστε ιδιαίτερα χαρούμενοι που μπορέσαμε να θέσουμε σε κυκλοφορία όλες τις βελτιώσεις πριν τις γιορτές.
- Οι διαρροές μνήμης προκαλούνταν κάθε φορά που κάποιο μέρος ενός προγράμματος αδυνατούσε να αποδεσμεύσει τη μνήμη, μετά το τέλος κάποιας διεργασίας. Ως αποτέλεσμα, υπήρχε συνολικά λιγότερη μνήμη για τα άλλα προγράμματα που έτρεχαν στο σύστημα. Τέτοια προβλήματα είναι πάντοτε επιβαρυντικά, ωστόσο είναι πολύ δύσκολο να προσδιορίσουμε με ακρίβεια τις αιτίες τους, ιδιαίτερα σε μεγαλύτερες εφαρμογές.
- Προτού κυκλοφορήσουμε την πρώτη μας επιδιόρθωση των διαρροών μνήμης στην Ενημέρωση 10.23, οι παίκτες σε όλες τις περιοχές αντιμετώπιζαν 193.000 διακοπές λειτουργίας λόγω διαρροής μνήμης σε κάθε Ενημέρωση. Μέχρι την τελευταία Ενημέρωση του 2020, δηλαδή την Ενημέρωση 10.25, ο αριθμός τους μειώθηκε κατά 55%!
Όπως αναφέραμε προηγουμένως, πραγματοποιήσαμε αυτές τις αλλαγές με βάση τις απαντήσεις των παικτών στην παγκόσμια έρευνα που διεξήγαμε. Με αυτόν τον τρόπο μπορέσαμε να ενεργήσουμε επιλεκτικά, σε συγκεκριμένα σημεία. Οι παραπάνω βελτιώσεις αντικατοπτρίζουν την πρόοδο που κάναμε σε περιοχές για τις οποίες εκφράσατε πιο έντονα τη δυσαρέσκειά σας. Ωστόσο, αυτό που είναι σημαντικό είναι να αισθάνεστε ότι οι βελτιώσεις που γίνονται έχουν τη σωστή κατεύθυνση. Έχοντας αυτό κατά νου, είμαστε στην ευχάριστη θέση να ανακοινώσουμε ότι οι μετρήσεις του παιχνιδιού συνοδεύονται και από περισσότερες θετικές απαντήσεις στην έρευνά μας. Αυτό σημαίνει ότι όλο και περισσότεροι παίκτες δυσανασχετούν λιγότερο με την εφαρμογή!
Δυσανασχετούν λιγότερο... Υπάρχουν πολλά περισσότερα πράγματα που θέλουμε να πετύχουμε μέσα στον επόμενο χρόνο, ενώ παράλληλα θα συνεχίσουμε να σας ενημερώνουμε ανά τακτά χρονικά διαστήματα.
Μη δημοφιλείς λειτουργίες κατά την Επιλογή Ήρωα
Εάν είχατε την ευκαιρία να διαβάσετε την προηγούμενη ανάρτησή μας, θα γνωρίζετε ήδη ότι σκεφτόμαστε να αφαιρέσουμε ορισμένες επιλογές που δεν χρησιμοποιούν οι παίκτες κατά τη επιλογή Ήρωα, χάριν καλύτερης απόδοσης. Αφού αξιολογήσαμε τα Αγαπημένα, τις Αποστολές και τις Εκφράσεις, αποφασίσαμε να μην αφαιρέσουμε κανένα από αυτά. Αντίθετα, θα εργαστούμε πάνω στη βελτιστοποίησή τους. Διορθώσαμε ήδη ένα σφάλμα με τις Εκφράσεις και αυτήν τη στιγμή προσπαθούμε να βεβαιωθούμε ότι τα Αγαπημένα και οι Αποστολές λειτουργούν όπως πρέπει.
Μελλοντικές αλλαγές
Αυτήν τη στιγμή εργαζόμαστε πάνω στον σχεδιασμό για το πρώτο τρίμηνο του χρόνου, ωστόσο αυτά είναι τα προβλήματα που θέλουμε να αντιμετωπίσουμε όσον αφορά την εφαρμογή του League:
Πίνακας κοινωνικών επιλογών
Τον τελευταίο χρόνο είδαμε μια αύξηση στα προβλήματα που σχετίζονται με τον πίνακα κοινωνικών επιλογών. Τον Δεκέμβριο διορθώσαμε ένα σφάλμα κατά το οποίο οι κάρτες παικτών δεν εμφάνιζαν σωστά τις λειτουργίες παιχνιδιού ή τους Ήρωες των φίλων σας. Σας παρουσιάζουμε ορισμένα από τα προβλήματα που σκοπεύουμε να επιλύσουμε:
- Αδυναμία σύνδεσης στον πίνακα κοινωνικών επιλογών
- Αδυναμία φόρτωσης της Λίστας φίλων, λανθασμένη εμφάνιση κατάστασης, αδυναμία εμφάνισης των φίλων σας
- Μη αποστολή αιτήματος φιλίας, εάν η Λίστα φίλων ενός παίκτη είναι πλήρης
- Αδυναμία εμφάνισης πληροφοριών Κατάταξης στην κάρτα παίκτη, εάν παίζει Κανονικό παιχνίδι
- Διακοπή συνομιλίας, εάν στείλετε πολλά συναπτά μηνύματα
- Αναδιοργάνωση φακέλων μεταξύ περιόδων παιχνιδιού
- Εξαφάνιση φακέλων LoR και Valorant κατά την ταξινόμηση ανά «Ομαδοποίηση παιχνιδιών και σέρβερ»
- Την αλληλοεπικάλυψη πλαισίων κειμένου κατά την επιλογή «Προβολή ημερομηνιών»
- Την εμφάνιση των ειδοποιήσεων των αιτημάτων φιλίας κάθε φορά που η επιλογή ήταν απενεργοποιημένη και το αντίθετο
Σκεφτόμαστε επίσης να αποσύρουμε ένα πλαίσιο Javascript (περισσότερα σχετικά με αυτό σε λίγο) και την μεταφορά του πίνακα κοινωνικών επιλογών εξολοκλήρου στο Ember. Αυτή η αλλαγή είναι μια καλή ευκαιρία να ελέγξουμε και να συμμαζέψουμε ορισμένα δύσκολα σημεία του κώδικα, κάτι το οποίο θα αυξήσει την αξιοπιστία και θα μειώσει τα σφάλματα.
Σταθερότητα εφαρμογής
Σε αυτό το σημείο, θα θέλαμε να παρουσιάσουμε δύο νέα σημεία ενδιαφέροντος για τη βελτίωση της σταθερότητας της εφαρμογής του League: Τις διακοπές λειτουργίας της εφαρμογής και τα σφάλματα Javascript, τα οποία μπορούν να έχουν ποικίλα αποτελέσματα όπως... να προκαλούν διακοπή λειτουργίας της εφαρμογής. Για να το πετύχουμε αυτό, αντί να επικεντρωθούμε σε ένα συγκεκριμένο κομμάτι της εφαρμογής (όπως κάναμε π.χ. για την επιλογή Ήρωα και τον χρόνο εκκίνησης εφαρμογής) αποφασίσαμε να έχουμε μια πιο ευρεία προσέγγιση. Σας παρουσιάζουμε τα τέσσερα σημεία στα οποία επικεντρωνόμαστε, συνδυαστικά με τις εργασίες σταθερότητας στις οποίες έχουμε δώσει ήδη προτεραιότητα:
- Μείωση διακοπών λειτουργίας: Κατά την Ενημέρωση 10.25, παίκτες και από τις 16 περιοχές της Riot αντιμετώπισαν συνολικά 2,2 εκατομμύρια διακοπές λειτουργίας εφαρμογής του League. Όπως προκύπτει από την έρευνά μας, η καλύτερη επιλογή για να αντιμετωπίσουμε αυτό το φαινόμενο είναι να αναβαθμίσουμε την έκδοση του Chromium που χρησιμοποιούμε. Αυτό είναι το πρόγραμμα περιήγησης στο οποίο στηρίζεται όλη η εφαρμογή του League.
- Μείωση σφαλμάτων Javascript: Κατά την Ενημέρωση 10.25, παίκτες και από τις 16 περιοχές της Riot αντιμετώπισαν συνολικά 36 εκατομμύρια σφάλματα Javascript (JS) εντός εφαρμογής. Παρά το γεγονός ότι τα σφάλματα αυτά καθαυτά δεν οδηγούν, τις περισσότερες φορές, σε διακοπές λειτουργίας ή μείωση της απόδοσης, αναπόφευκτα αθροίζονται και οδηγούν σε προβλήματα με μεγάλο αντίκτυπο. Εάν καταφέρουμε να μειώσουμε αυτόν τον αριθμό, θα έχουμε μια σειρά από οφέλη για την εφαρμογή.
- Συνέχιση επιδιορθώσεων διαρροών μνήμης: Η επιδιόρθωση ορισμένων από αυτές ήταν μια τεράστια νίκη για εμάς, τη χρονιά που μας πέρασε. Θέλουμε να συνεχίσουμε στον ίδιο ρυθμό.
- Συνεχής εργασία πάνω στο συμμάζεμα της βάσης κώδικά μας: Η αναβάθμιση του Chromium, στην οποία αναφερθήκαμε παραπάνω, προϋποθέτει μια σειρά από επιμέρους εργασίες, οι οποίες θα βελτιώσουν περαιτέρω την απόδοση της εφαρμογής. Ελπίζουμε να έχουμε ολοκληρώσει αυτές τις εργασίες και να ενημερώσουμε το Chromium περίπου μέχρι στο μέσο της χρονιάς.
- Την τελευταία φορά που ενημερώσαμε το Chromium ήταν τον Δεκέμβριο του 2019, μόλις μερικούς μήνες πριν ξεκινήσουμε την Καμπάνια Συμμαζέματος της Εφαρμογής. Είδαμε αρκετά θετικά αποτελέσματα από εκείνη την αναβάθμιση, (CTRL+F «Chromium») ωστόσο θα σας ενημερώσουμε σχετικά με αυτές τις βελτιώσεις όταν πλησιάζουμε πιο κοντά στην κυκλοφορία της επόμενης αναβάθμισης.
Σας ευχαριστούμε για τα σχόλια που συνεχίζετε να στέλνετε σχετικά με την εφαρμογή και σας εγγυόμαστε ότι οι απόψεις σας εισακούγονται! Το 2020 ήταν μια καλή χρονιά για εμάς και σκοπεύουμε να συνεχίσουμε να βελτιώνουμε την εφαρμογή, για όλους τους παίκτες μας!