Δικτυακή καθυστέρηση, interpolation και τι νιώθει ο παίκτης
Το ping είναι ο πιο γνωστός αριθμός σε έναν online shooter και ταυτόχρονα ο πιο παρεξηγημένος. Δείχνει πόσο χρόνο κάνει ένα πακέτο να πάει και να γυρίσει, αλλά δεν λέει τίποτα για το πώς ο client γεμίζει τα κενά ανάμεσα στα πακέτα — και εκεί κρύβεται σχεδόν όλη η αίσθηση του παιχνιδιού.
Τι στέλνεται πραγματικά
Ο client δεν στέλνει εικόνα και ο διακομιστής δεν στέλνει βίντεο. Ο client στέλνει εντολές — κίνηση, στροφή, πάτημα σκανδάλης — και ο διακομιστής απαντά με στιγμιότυπα της κατάστασης: πού βρίσκονται οι παίκτες, τι κρατούν, τι έχει αλλάξει. Αυτά τα στιγμιότυπα φτάνουν σε τακτά διαστήματα, όχι συνεχώς.
Ανάμεσα σε δύο στιγμιότυπα ο client πρέπει να δείξει κάτι. Δεν μπορεί να παγώσει την εικόνα και δεν μπορεί να μαντέψει ελεύθερα. Χρησιμοποιεί δύο τεχνικές που δουλεύουν παράλληλα: πρόβλεψη για τον ίδιο τον παίκτη και παρεμβολή για όλους τους άλλους.
Πρόβλεψη: γιατί ο χαρακτήρας σου κινείται αμέσως
Αν ο client περίμενε την επιβεβαίωση του διακομιστή για κάθε βήμα, η κίνηση θα ένιωθε καθυστερημένη κατά όσο είναι το ping. Γι' αυτό ο client εφαρμόζει την εντολή τοπικά την ίδια στιγμή που τη στέλνει, χρησιμοποιώντας τους ίδιους κανόνες φυσικής με τον διακομιστή. Όταν έρθει η επιβεβαίωση, συγκρίνει: αν η θέση που είχε υπολογίσει συμφωνεί, δεν αλλάζει τίποτα.
Αν δεν συμφωνεί — για παράδειγμα επειδή ένας άλλος παίκτης σε έσπρωξε ή επειδή χάθηκε ένα πακέτο — ο client διορθώνει. Αυτή η διόρθωση είναι το γνωστό «τράβηγμα» της κίνησης. Δεν είναι σφάλμα του παιχνιδιού· είναι η στιγμή που η τοπική εκτίμηση αντικαθίσταται από την επίσημη κατάσταση.
Παρεμβολή: γιατί βλέπεις τους άλλους στο παρελθόν
Για τους υπόλοιπους παίκτες ο client κάνει το αντίθετο. Αντί να προβλέψει, καθυστερεί σκόπιμα την απεικόνιση κατά ένα μικρό διάστημα, συνήθως λίγες δεκάδες χιλιοστά του δευτερολέπτου. Έτσι έχει πάντα δύο στιγμιότυπα στα χέρια του και μπορεί να σχεδιάσει την ενδιάμεση κίνηση ομαλά, αντί να αναγκάζεται να μαντέψει το μέλλον.
Το τίμημα είναι ότι βλέπεις τους αντιπάλους ελαφρώς στο παρελθόν. Όταν πυροβολείς κάποιον, στοχεύεις σε μια θέση που ήταν αληθινή πριν από λίγο. Ο διακομιστής το γνωρίζει και το λαμβάνει υπόψη — αυτό ακριβώς κάνει η συμφιλίωση καθυστέρησης.
Από αυτόν τον συνδυασμό προκύπτει το φαινόμενο που όλοι έχουν συναντήσει: πεθαίνεις ενώ στην οθόνη σου είσαι ήδη πίσω από την κάλυψη. Στον διακομιστή, τη στιγμή που ελέγχθηκε η βολή, δεν ήσουν.
Σταθερότητα αντί για χαμηλό νούμερο
Ένα ping 45 ms που δεν μεταβάλλεται είναι σχεδόν πάντα καλύτερο από ένα ping που κυμαίνεται ανάμεσα σε 20 και 60 ms. Ο λόγος είναι ότι ο client προσαρμόζει τα buffer του στη μέση καθυστέρηση. Όταν αυτή αλλάζει διαρκώς, τα buffer είναι πότε πολύ μικρά και πότε πολύ μεγάλα, οπότε εμφανίζονται μικρά άλματα στην κίνηση των αντιπάλων.
Η διακύμανση αυτή λέγεται jitter και επηρεάζει την αίσθηση περισσότερο από την απόλυτη τιμή. Παρόμοια, η απώλεια πακέτων είναι πιο καταστροφική από την καθυστέρηση: ένα χαμένο στιγμιότυπο σημαίνει ότι ο client πρέπει να παρατείνει την εκτίμησή του, και όταν φτάσει το επόμενο, η διόρθωση γίνεται ορατή.
Τι μπορεί και τι δεν μπορεί να κάνει ο παίκτης
- Ενσύρματη σύνδεση αντί για ασύρματη μειώνει τη διακύμανση, ακόμη κι όταν η μέση τιμή δεν αλλάζει.
- Επιλογή διακομιστή πιο κοντά γεωγραφικά μειώνει τη διαδρομή και άρα τη βασική καθυστέρηση.
- Ταυτόχρονες μεταφορτώσεις στο ίδιο δίκτυο αυξάνουν το jitter, ακόμη και αν το εύρος ζώνης φαίνεται αρκετό.
- Καμία ρύθμιση δεν αναιρεί τη φύση του συστήματος: πάντα θα υπάρχει διάστημα ανάμεσα σε αυτό που βλέπεις και σε αυτό που ισχύει στον διακομιστή.
Γιατί οι διοργανώσεις παίζουν τοπικά
Σε ένα τουρνουά με τοπικό δίκτυο, η καθυστέρηση πέφτει σε λίγα χιλιοστά και η διακύμανση σχεδόν εξαφανίζεται. Αυτό δεν κάνει τους παίκτες καλύτερους· κάνει τις συνθήκες ίδιες για όλους. Όταν κανείς δεν έχει πλεονέκτημα ή μειονέκτημα από τη σύνδεση, το αποτέλεσμα εξαρτάται από τη θέση, το timing και τη συνεννόηση — δηλαδή από τα στοιχεία που μπορούν να προπονηθούν.
Γι' αυτό και οι συζητήσεις για tickrate και netcode επανέρχονται σε κάθε μεγάλη ενημέρωση. Δεν πρόκειται για λεπτομέρειες υλοποίησης, αλλά για τους κανόνες μέσα στους οποίους κρίνεται κάθε μονομαχία.