Αφελής προσέγγιση σε θέμα υποδομής για game development
Αυτές τις μέρες ασχολήθηκα με μία εργασία για τα Γραφικά 2, από το πανεπιστήμιο. Προσοχή, ακολουθούν αφελείς σκέψεις - NSFW :P
H εργασία αφορούσε Ambient Occlusion σε FFP (όχι SSAO / programmable aka shaders). Αυτός ο αλγόριθμος αφορά σε γενικές γραμμές τον υπολογισμό του ποσού ακτινοβολίας που δέχεται μία ακμή, δηλαδή το πόσο ορατό είναι το σημείο τοπικά ώστε να ξέρουμε αν και πόση ακτινοβολία μπορεί να δεχτεί (στην ουσία να εκπέμψει στο μάτι μας ;) ). Με λίγα λόγια, είναι ένα αποδοτικό μοντέλο για να δίνουμε ρεαλισμό στην φωτεινότητα της σκηνής μας. Υπάρχουν τεχνικές που το κάνουν real time αλλά εν γένει η θεωρία είχε όπως περιέγραψα.
Η εργασία είναι να παρουσιάσω ένα heightmap των 128 x 128 pixels το οποίο θα έχω επεξεργαστεί με τον κλασσικό αλγόριθμο. Για κάθε ακμή, πρέπει να εξετάσω για όλες τις ακτίνες σφαιρικά (μικρός αριθμός samples) ποιες τέμνονται από άλλα τριγωνάκια, πράγμα που σημαίνει ότι χρειάζονται έλεγχοι για όλα παραπάνω. Προφανώς και μπορεί να περιοριστεί η πολυπλοκότητα του αλγορίθμου, περιορίζοντας τον χώρο, περιορίζοντας τις ακμές και πολλά άλλα. Στην δική μας περίπτωση όμως για να προυπολογιστούν όλα με old-school αλγόριθμο, για το παραπάνω heightmap, χρειάζομαι 20 λεπτά (και αυτό με μικρό samples-ακτινών). Επαναλαμβάνω πως η πολυπλοκότητα μπορεί να μειωθεί σε O(m*n) ακόμα και σε O(m*logn) αλλά δεν είναι το θέμα μας εδώ. Όταν έχω τεράστιο αριθμό πολυγώνων και θέλω να κάνω δοκιμές σε μοντέλα και το πως κάθεται ο φωτισμός που προγραμμάτισα πάνω σε αυτά τότε τι κάνω; Αν έχω σκοπό να κάνω precomputing techniques τότε το rendering ακόμα και με βελτιστοποιήσεις θα είναι μια απίστευτη διαδικασία. Γίνεται μία φορά, αποθηκεύεται, αλλά μέχρι να φτάσουμε σε αυτό το σημείο πόσες 10άδες ώρες πρέπει να περάσουν για να πάρω αποτέλεσμα;
Και φυσικά δεν είναι μόνο αυτό το θέμα, καθώς έστω ότι είσαι μια μικρή εταιρία, έστω ότι φτιάχνεις μια μικρή υποδομή με queues και αφήνεις τα jobs να τρέχουν για μερικές ώρες. Φαντάζομαι όμως ότι αν θες να κάνεις ένα σωστό παιχνίδι, θα πρέπει να έχεις κάτι πιο εξειδικευμένο από αυτό. Αν θες να έχεις prerendered videos θα πρέπει να έχεις μια σοβαρή υποδομή render farm. Στην Ελλάδα πώς αντιμετωπίζεται το θέμα; Οι εταιρείες που ασχολούνται με την περιοχή ανάπτυξης βιντεοπαιχνιδιών, τι έχουν στην διάθεσή τους;Υπάρχουν εταιρείες που έχουν την δυνατότητα να προγραμματίσουν κάτι τέτοιο, ή έστω να επενδύσουν στο outsourcing;
Αρκετές απορίες μαζεύονται για το meeting του Σαββάτου και δεν ξέρω τι να πρωτορωτήσω!!
Μέχρι τότε θα ήθελα να μοιραστώ μαζί σας ένα λάθος που είχα κάνει σε έναν iterator (+=3) και το τι αποτέλεσμα έβγαλε!!!! Ήταν η πρώτη φορά στην ζωή μου, που διαδικασία debugging έγινε τέχνη!!!!!