background image

2.2.3

Μαθηματική βιβλιοθήκη (Math Library)

Η μαθηματική βιβλιοθήκη αποτελεί θεμέλιο λίθο κάθε μηχανής παιχνιδιών. Όλα τα βασικά

υποσυστήματα – rendering, physics, animation, collision detection – βασίζονται σε μαθηματικές

δομές και αλγορίθμους για να λειτουργήσουν σωστά.

Κύριες Δομές & Συναρτήσεις:

• Σύμφωνα με ([5]) , οι ελάχιστες δομές που χρειάζονται είναι:

• Διανύσματα (Vectors) – 2D, 3D, 4D, με βασικές πράξεις (πρόσθεση, αφαίρεση, εσωτε-

ρικό/εξωτερικό γινόμενο, κανονικοποίηση).

• Πίνακες (Matrices) – 3×3 και 4×4 για μετασχηματισμούς (translation, rotation, scaling).

• Quaternions – αναπαράσταση περιστροφών χωρίς gimbal lock∙ γρήγορη σύνθεση περι-

στροφών.

• Γεωμετρικοί Μετασχηματισμοί – affine transformations, perspective/orthographic projections.

• Collision Volumes – bounding boxes (AABB, OBB), bounding spheres, planes.

• Αριθμητική Γραμμικής Άλγεβρας – απαραίτητη για interpolation (lerp, slerp), normal

transformations, και physics integration.

Η βιβλιογραφία προτείνει ([1]) να υλοποιείται αυτή η βιβλιοθήκη με χαμηλό κόστος σε

μνήμη και CPU, καθώς χρησιμοποιείται σε tight loops (περιοχές στον κώδικα που κατά την

εκτέλεση και λειτουργία του προγράμματος εκτελούνται πολλαπλές φόρες ανά δευτερόλεπτο).

Έτσι ολοκληρώσαμε τα τρία υποσυστήματα υποδομής, Από εδώ και πέρα, περνάμε στον

Πυρήνα της Μηχανής.

2.2.4

Υποσύστημα απόδοσης γραφικών (Rendering Engine) 2D/3D

Το υποσύστημα απόδοσης γραφικών (rendering engine) είναι ίσως το πιο χαρακτηριστικό

και απαιτητικό τμήμα μιας μηχανής παιχνιδιών, καθώς είναι υπεύθυνο για τη μετατροπή των

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

Το rendering system αποτελείται από μια σειρά από στάδια που ακολουθούν το μοντέλο του

(graphic pipeline):

• Μετασχηματισμοί (model, view, projection).

• Σχεδίαση γεωμετρίας (meshes, sprites).

• Εφαρμογή υλικών & shaders (textures, materials, GPU programs).

• Φωτισμός & σκιές.

11