Προγραμματισμός και Καφεΐνη

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

Αναφέρομαι στην γκρίνια που βγάζουμε όταν βρίσκουμε ένα Bug ή Glitch σε κάποιο παιχνίδι. Ένα μικρο πρόβλημα που είτε μας χαλάει την αίσθηση του παιχνιδιού γιατί ας πούμε ο πρωταγωνιστής δεν έχει πρόσωπο, αλλά μόνο τα δόντια του και τα μάτια του που αιωρούνται στο πουθενά, είτε ένα ακόμα χειρότερο που δεν μας αφήνει να προχωρήσουμε το παιχνίδι και να απολαύσουμε την ιστορία του και να φτάσουμε επιτελούς στο επιθυμητό συναίσθημα της ολοκλήρωσης του.

Αυτό που παρατήρησα είναι ότι ελάχιστοι από μας, (ακόμα και εγώ που παλιότερα είχα κάνει αντικειμενοστραφή προγραμματισμό σε Delphi και Virtual Basic και C++), ξέρουν το πόσο δύσκολη δουλειά είναι να φτιάξεις ένα παιχνίδι και το πόσο ακόμα πιο δύσκολο είναι να βρεις τα πιο σημαντικά σφάλματα της δημιουργίας σου ώστε να το στρώσεις, να είναι ομαλή και να τρέχει ευχάριστα.

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


Ας πούμε ότι θέλουμε να φτιάξουμε ρολόι με ένα απλό ημερολόγιο. Για να μην φύγουμε από το ψηφιακό τεχνολογικό πλαίσιο θα πούμε ότι θα είναι πρόγραμμα για κινητό. Είναι ίσως ένα από τα πιο κοινά προγράμματα που όλοι μας αγνοούμε καθημερινά.

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

Το πρόγραμμα μας όμως δεν μας λέει πουθενά τι ημέρα είναι. Μας έλεγε ότι πέρασε μια ημέρα, αλλά ακόμα δεν ξέρει πια ήμερα είναι η 23η ημέρα, ούτε σε ποιον μήνα είμαστε, ούτε καν σε ποιο έτος.

Ας κοιτάξουμε την λίστα μας μια στιγμή.

1. Όταν περάσουν 24 ώρες έχει περάσει μια ημέρα.

2. Όταν περάσουν επτά ημέρες έχει περάσει μια εβδομάδα.

3. Το ημερολόγιο ξεκινά στις 1 Γενάρη και του μαθαίνουμε και την λίστα με τους υπολοίπους 12 μήνες.

Έπειτα θέλουμε να πούμε στο πρόγραμμα ότι οι ακόλουθοι μήνες έχουν 30 ημέρες ενώ άλλοι έχουν 31 και ότι μόνο ο Φλεβάρης έχει 28.

Εδώ ήδη κάποιος θα σχολίασε ή έστω θα σκέφτηκε ότι ανά τέσσερα χρόνια ο Φλεβάρης έχει 29 ήμερες.

Φυσικά θα πρέπει να του πούμε ότι η χρονιά αυξάνεται όταν ξαναδούμε την 1 Γενάρη. Και αυτό θα πρέπει να το πούμε στο πρόγραμμα μας.

Έχουμε γράψει στο σημειωματάριο μας ήδη όλα τα προηγούμενα πράγματα. Ξέρουμε τι θέλουμε να κάνουμε και αρχίζουμε να φτιάχνουμε το πρόγραμμα και έχουμε μετά από λίγη εργασία δυο εβδομάδων φτιάξει την πρώτη του δοκιμαστική μορφή.

Η οποία ευτυχώς αυτοί που την δοκιμάζουν μας λένε ότι είναι πολύ καλή. Χάρις αυτό περνούμε την απόφαση να το κυκλοφορήσουμε, όταν μας έρχεται ένα μήνυμα και μας λέει ότι ξεχάσαμε την αλλαγή ώρας σε χειμερινή και θερινή.

Αναστάτωση.

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

Το κυκλοφορούμε και πηγαίνει πολύ πιο καλά από αυτό που αναμέναμε και είμαστε κατευχαριστημένοι από αυτό. Άλλωστε ποιος δεν θα ήθελε να τα πάει καλά ο κόπος του;

Περνάει λίγος καιρός και ένα ωραίο πρωί λαμβάνουμε ένα ωραιότατο μήνυμα ότι το πρόγραμμα μας είναι πολύ ωραίο και ότι θα ήταν πολύ καλή ιδέα να έχει και πληροφορίες για τις γιορτές της κάθε ημέρας. Να αξιοποιεί δηλαδή παραπάνω τις πληροφορίες για το τι ημέρα είναι.

Πάμε λοιπόν πάλι στην λίστα μας και …

Κάπου εδώ αρχίζουμε και συνειδητοποιούμε ότι δεν έχουν όλες οι χώρες τις ίδιες γιορτές. Έχουν διαφορετικές εθνικές και θρησκευτικές, και ειδικά αυτές δεν είναι κάθε χρόνο τις ίδιες ήμερες. Μέσα σε όλο αυτό, κάποιες χώρες έχουν αλλαγές ώρας σε διαφορετικές ημερομηνίες από άλλες, και όταν κάποιος φτάσει στην Αιθιοπία θα δει ότι αυτή η χώρα έχει 13 ΜΗΝΕΣ αντί για δώδεκα … γιατί προφανώς μπορούν.


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

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

Δεν προκύπτει να σταματήσετε να γκρινιάζετε μπροστά στα διάφορα bugs απλά τώρα θα ξέρετε ότι για να έγινε αυτό, κάτι πολύ περίπλοκο θα έχει συμβεί από πίσω, στον κώδικα και κατά την περίοδο του σχεδιασμού του.

Περιμένουμε και τις δικές σας απόψεις στα σχόλια παρακάτω.

Μείνετε συντονισμένοι για περισσότερα.

  1. Ειναι δεδομένο πως ολα σχεδόν τα παιχνίδια σήμερα ΄έχουν πολύ μεγάλο βαθμό πολυπλοκότητας. Το θέμα απλά είναι ότι κάποιες φορές οι Developers βιάζονται στο να φέρουν ένα παιχνίδι ή μια εφαρμογή σε σύντομο χρονικό διάστημα και με τον βαθμό πολυπλοκότητας που ανέφερα πιο πάνω υπάρχουν πολλά bugs που διορθώνονται μετά με τα γνωστά updates. Αnyway ωραιο Editorial Πάντως

  2. Θα συμφωνήσω σε αρκετά μαζί σου. Το να πετυχαίνεις bug πλέον είναι οτι πιο φυσιολογικό και λογικό. Οι τίτλοι γίνονται πιο πολύπλοκοι, προσφέρουν πιο πολλά και είναι πολύ δυσκολότερη η ανάπτυξή τους. Μιας και τελευταία ασχολούμαι (πολύ ελαφρά) και στη σχολή με ανάπτυξη παιχνιδιών, εκτιμώ πολύ παραπάνω κάθε τι που παίζω, όσο απλό και να είναι. Το σκέφτομαι πόσο απλά πράγματα κάνω εγώ και βλέπω τη δουλειά τους και μου φεύγει η μαγκιά απλά.

    Αυτό που προσωπικά δε δέχομαι, είναι τα game breaking bugs. Το να κολλήσεις σε μια πόρτα, σε ένα δωμάτιο, ένα ασανσέρ που δεν ανοίγει και να χάσω τις ώρες που έχω επενδύσει, είναι επόμενο πως θα κράξω όσο δεν πάει (το έπαθα κοντά στο τέλος του FarCry 2). Παλιότερα δεν είχανε την πολυτέλεια οι εταιρίες των day-one updates για να διορθώνουν ολόκληρο το παιχνίδι (πχ BM Arkham Knight). Οτι έβγαζες στην αγορά, αυτό ηταν. Αν είχε θέμα, “μαύριζε” το όνομά σου γιατί πολύ απλά το QA ηταν για γέλια ή ανύπαρκτο. Η μόνη εταιρία που τηρεί ακόμη αυτή την παράδοση είναι η Nintendo (και όχι, δεν το λέω μόνο γιατί είμαι fan), αλλά γιατί έτσι είναι. Τρανταχτό παράδειγμα το Metroid Prime της Retro Studios. Άρτιο σε τρελό βαθμό.

    Συμφωνώ στο οτι πρέπει να είμαστε πιο ελαστικοί, ναί. Αλλά οταν βγάζουνε 10GB patch την ημέρα κυκλοφορίας, αναρωτιέσαι τι έκαναν οι τυπάδες τόσα χρόνια ή πόσο παλιό κώδικα έχει το δισκάκι (πχ Halo 5, κοντά 100GB download η retail έκδοση, δεν χρησιμοποιεί τίποτα απο τα δεδομένα που βρίσκονται στο δισκάκι).

  3. Με εκφράζει απόλυτα το κείμενό σου Δημήτρη μου, ίσως βρήκες το πιο κατάλληλο παράδειγμα να αναφέρεις, σχετικά με την γραφή και την εφαρμογή του κώδικα. Ασχολήθηκα πολύ με το Eclipse σε Java περιβάλλον για Apps σε Android, και μακάρι να μπορούσα να δείξω σε όλους αυτούς που μυξοκλαίνε στα σχόλια από κάτω, ειδικά στο Google Play, πόσες ώρες έχει αφιερώσει από την ζωή του ένας άνθρωπος, ή μία ομάδα ανθρώπων για να κάνουν την ζωή τους λίγο πιο εύκολη, βέβαια το κακό είναι ότι δεν έχουν εκεί έξω όλοι, S7 και πάνω, και η Google δεν βοηθάει καθόλου σε αυτό με τα apis της, αλλά ας μην μακρηγορούμε, αν δεν έχεις βάλει κάποια στιγμή τα χέρια σου σε φωτιά με…κώδικα, δεν μπορείς να εκτιμήσεις και να καταλάβεις το glitchάρισμα, με τίποτα. Αφιερωμένη η παρακάτω εικόνα:

    https://uploads.disquscdn.com/images/16c0704795dc0935db78b3f8239362d8a6379891cd407c53ee61cd21c0bedf48.jpg

More Stories
No Man’s Sky: Έρχεται το πρώτο Expansion με τίτλο The Foundation Update