Μηχανή παιχνιδιού

Επισκόπηση

Οι μηχανές παιχνιδιών παρέχουν μια σουίτα οπτικών εργαλείων ανάπτυξης εκτός από επαναχρησιμοποιήσιμα στοιχεία λογισμικού. Αυτά τα εργαλεία γενικά παρέχονται σε ένα ολοκληρωμένο περιβάλλον ανάπτυξης ώστε να καθιστούν ικανή την απλή, γρήγορη ανάπτυξη παιχνιδιών με ένα οδηγούμενο από δεδομένα τρόπο. Αυτές οι μηχανές παιχνιδιών συχνά καλούνται "game middleware" επειδή, όπως με την εμπορική έννοια του όρου, παρέχουν μια ευέλικτη και επαναχρησιμοποιήσιμη πλατφόρμα λογισμικού η οποία παρέχει όλη την κεντρική λειτουργικότητα που απαιτείται, αμέσως έξω από το κουτί, για την ανάπτυξη μια εφαρμογής παιχνιδιού ενώ ταυτόχρονα μειώνει τα κόστη, τις πολυπλοκότητες, και το χρόνο μέχρι την αγορά (time-to-market) — όλοι κρίσιμοι παράγοντες στην υψηλά ανταγωνιστική βιομηχανία βιντεοπαιχνιδιών.
Όπως άλλες λύσεις middleware, οι μηχανές παιχνιδιών συνήθως παρέχουν μια αφαίρεση της πλατφόρμας, επιτρέποντας στο ίδιο παιχνίδι να τρέχει σε διάφορες πλατφόρμες συμπεριλαμβανομένων των κονσολών παιχνιδιών και των προσωπικών υπολογιστών με λίγες, αν όχι καθόλου, αλλαγές στον πηγαίο κώδικα του παιχνιδιού. Συχνά, το middleware παιχνιδιού σχεδιάζεται με μια βασισμένη σε στοιχεία αρχιτεκτονική η οποία επιτρέπει σε συγκεκριμένα συστήματα στη μηχανή να αντικατασταθούν ή να επεκταθούν με πιο εξειδικευμένα (και συχνά πιο ακριβά) στοιχεία middleware όπως το Havok για φυσική, το FMOD για ήχο, ή το Scaleform για UI και Βίντεο. Μερικές μηχανές παιχνιδιών όπως η RenderWare είναι και ακόμη σχεδιασμένες ως μια σειρά χαλαρά συνδεδεμένων στοιχείων middleware τα οποία μπορούν να συνδυαστούν κατά βούληση για τη δημιουργία μια προσαρμοσμένης μηχανής, αντί για την πιο κοινή προσέγγιση της επέκτασης ή της προσαρμογής μια ευέλικτης ενσωματωμένης λύσης. Με οποιοδήποτε τρόπο και αν η επεκτασιμότητα επιτυγχάνεται, παραμένει μια υψηλή προτεραιότητα στις μηχανές παιχνιδιών λόγω της ευρείας ποικιλίας χρήσεων για την οποίες αυτές εφαρμόζονται. Παρά την συγκεκριμένη έννοια του ονόματος, οι μηχανές παιχνιδιών συχνά χρησιμοποιούνται για άλλα είδη διαδραστικών εφαρμογών με πραγματικού χρόνου γραφικές απαιτήσεις όπως επιδείξεις μάρκετινγκ, αρχιτεκτονικές οπτικοποιήσεις, εκπαιδευτικές εξομοιώσεις, και περιβάλλοντα μοντελοποίησης.
Μερικές μηχανές παιχνιδιών παρέχουν μόνο ικανότητες φωτοαπόδοσης 3D πραγματικού χρόνου (real time 3D rendering) αντί της ευρείας γκάμας λειτουργικότητας που απαιτείται από τα παιχνίδια. Αυτές οι μηχανές βασίζονται στον δημιουργό του παιχνιδιού να εφαρμόσει το υπόλοιπο αυτής της λειτουργικότητας ή να το συνθέσει από άλλα στοιχεία middleware παιχνιδιού. Αυτού του τύπου οι μηχανές γενικά αναφέρονται ως «μηχανή γραφικών», «μηχανή rendering», ή «μηχανή 3D» αντί για τον πιο περιληπτικό όρο «μηχανή παιχνιδιού». Ωστόσο, αυτή η ορολογία χρησιμοποιείται ανακόλουθα καθώς πολλές πλήρεις σε χαρακτηριστικά μηχανές 3D παιχνιδιών αναφέρονται απλά ως «μηχανές 3D». Μερικά παραδείγματα μηχανών γραφικών είναι οι εξής: RealmForge, Truevision3D, OGRE, Crystal Space, Genesis3D, Irrlicht και JMonkey Engine. Οι μοντέρνες μηχανές παιχνιδιών ή γραφικών γενικά παρέχουν ένα scene graph, ο οποίος είναι μια αντικειμενοστρεφής αναπαράσταση του 3D κόσμου του παιχνιδιού η οποία συχνά απλοποιεί τον σχεδιασμό του παιχνιδιού και μπορεί να χρησιμοποιηθεί για πιο αποδοτικό rendering τεράστιων εικονικών κόσμων.

Αφαίρεση υλικού

Πιο συχνά, οι 3D μηχανές ή τα συστήματα rendering στις μηχανές παιχνιδιών κατασκευάζονται πάνω σε ένα API γραφικών, όπως τα Direct3D ή OpenGL, το οποίο παρέχει μια αφαιρετικότητα λογισμικού της GPU ή της κάρτας βίντεο. Βιβλιοθήκες χαμηλού επιπέδου όπως τα DirectX, SDL και OpenAL επίσης χρησιμοποιούνται συχνά σε παιχνίδια καθώς παρέχουν πρόσβαση ανεξάρτητη από το υλικό σε άλλο υλικό του υπολογιστή όπως συσκευές εισόδου (ποντίκι (υπολογιστές), πληκτρολόγιο και joystick), κάρτες δικτύου και κάρτες ήχου. Πριν από τα επιταχυνόμενα από το υλικό 3D γραφικά, είχαν χρησιμοποιηθεί renderers λογισμικού. To rendering λογισμικού ακόμα χρησιμοποιείται σε κάποια εργαλεία μοντελοποίησης ή για εικόνες ακίνητα rendered όταν η οπτική ακρίβεια αποτιμάται πάνω από την επίδοση πραγματικού χρόνου (καρέ ανά δευτερόλεπτο) ή όταν το υλικό του υπολογιστή δεν συναντά απαιτήσεις όπως υποστήριξη shader ή, στην περίπτωση των Windows Vista, υποστήριξη για το Direct3D 10.
Με την ανατολή της επιταχυνόμενης από το υλικό επεξεργασίας φυσικής, διάφορα API φυσικής όπως το PAL και οι επεκτάσεις φυσικής του COLLADA (μιας ανταλλακτικής μορφής για 3D στοιχεία) έγιναν διαθέσιμα για να παρέχουν μια αφαιρετικότητα λογισμικού της μονάδας επεξεργασίας φυσικής διαφορετικών παρόχων middleware και πλατφορμών κονσολών.

Ιστορία

Πριν από τις μηχανές παιχνιδιών, τα παιχνίδια τυπικά γράφονταν ως μοναδικές οντότητες: ένα παιχνίδι για το Atari 2600, για παράδειγμα, έπρεπε να σχεδιαστεί από το μηδέν για να κάνει βέλτιστη χρήση του υλικού εμφάνισης – αυτή η κεντρική ρουτίνα εμφάνισης σήμερα καλείται πυρήνας από τους δημιουργούς retro. Άλλες πλατφόρμες είχαν περισσότερα περιθώρια, αλλά ακόμα και όταν η εμφάνιση δεν ήταν μέριμνα, οι περιορισμοί μνήμης συνήθως σαμπόταραν προσπάθειες για τη δημιουργία της βαριάς σε δεδομένα σχεδίασης που μια μηχανή απαιτούσε. Ακόμα και σε πιο φιλικές πλατφόρμες, πολύ λίγα μπορούσαν να χρησιμοποιηθούν ανάμεσα σε παιχνίδια. Η γοργή ανάπτυξη του arcade υλικού – ο ακρογωνιαίος λίθος της αγοράς – σήμαινε ότι το μεγαλύτερο μέρος του κώδικα θα έπρεπε να πεταχτεί μετά έτσι και αλλιώς, καθώς οι μεταγενέστερες γενιές παιχνιδιών θα χρησιμοποιούσαν τελείως διαφορετικές σχεδιάσεις παιχνιδιών οι οποίες εκμεταλλευόντουσαν επιπλέον πόρους. Παρομοίως, οι περισσότερες σχεδιάσεις παιχνιδιών τη δεκαετία του 1980 σχεδιάζονταν διαμέσου ενός σκληρά κωδικοποιημένου συνόλου κανόνων με μια μικρή ποσότητα δεδομένων επιπέδου και γραφικών.
Η πρώτη γενιά μηχανών γραφικών τρίτων μερών ή renderers κυριαρχούνταν από τρεις παίκτες: την BRender από την Argonaut Software, την Renderware από την Criterion Software Limited και την Reality Lab της RenderMorphics. Η Reality Lab ήταν η ταχύτερη από τις τρεις και ήταν η πρώτη που αναλήφθηκε σε μια επιθετική κίνηση της Microsoft. Η ομάδα της RenderMorphics, οι Servan Keondjian, Kate Seekings και Doug Rabson, ακολούθως προσχώρησαν στο εγχείρημα της Microsoft το οποίο μετέτρεψε την Reality Lab στο Direct3D, πριν οι Keondjian και Rabson φύγουν για να ξεκινήσουν μια άλλη εταιρεία middleware Qube Software. Η Renderware τελικά αγοράστηκε από την EA.
Ο όρος «μηχανή παιχνιδιού» ήρθε στην επιφάνεια στα μέσα της δεκαετίας του 1990, ειδικά σε σχέση με 3D παιχνίδια, όπως τα βολών πρώτου προσώπου (FPS). (Δείτε επίσης: μηχανή βολών πρώτου προσώπου). Τόση ήταν η δημοτικότητα των σειρών παιχνιδιών Doom και Quake που, αντί να δουλέψουν από μηδενική βάση, άλλοι δημιουργοί πήραν άδεια για τα κεντρικά κομμάτια του λογισμικού και σχεδίασαν τα δικά τους γραφικά, χαρακτήρες, όπλα και επίπεδα – το «περιεχόμενο του παιχνιδιού» ή τα «στοιχεία του παιχνιδιού». Ο διαχωρισμός των ειδικών για το παιχνίδι κανόνων και δεδομένων από βασικές έννοιες όπως ο έλεγχος σύγκρουσης και οι οντότητες του παιχνιδιού σήμαινε ότι οι ομάδες μπορούσαν να μεγαλώσουν και να ειδικευτούν.
Μεταγενέστερα παιχνίδια, όπως το Quake III Arena και το Unreal του 1998 της Epic Games σχεδιάζονταν με αυτή την προσέγγιση στο μυαλό, με τη μηχανή και το περιεχόμενο αναπτυγμένα ξεχωριστά. Η πρακτική της αδειοδότησης τέτοιας τεχνολογίας έχει αποδειχθεί ότι είναι μια χρήσιμη βοηθητική πηγή εσόδων για κάποιος δημιουργούς παιχνιδιών, καθώς μια μόνο άδεια για μια υψηλής ποιότητας εμπορική μηχανή παιχνιδιού μπορεί να κυμανθεί από $10,000 μέχρι εκατομμύρια δολάρια, και ο αριθμός των αποδεκτών αδειών μπορεί να φτάσει αρκετές ντουζίνες εταιρειών (όπως έγινε με την Unreal Engine. Τουλάχιστον, οι επαναχρησιμοποιήσιμες μηχανές κάνουν την ανάπτυξη συνεχειών παιχνιδιών γρηγορότερη και ευκολότερη, το οποίο είναι ένα πλεονέκτημα αξίας στην ανταγωνιστική βιομηχανία βιντεοπαιχνιδιών.
Οι μοντέρνες μηχανές παιχνιδιών είναι μερικές από τις πιο πολύπλοκες εφαρμογές για γράψιμο, με το να συχνά χαρακτηρίζονται από τελειοποιημένα συστήματα που αλληλεπιδρούν για να εγγυώνται μια ακριβώς ελεγχόμενη εμπειρία χρήστη. Η συνεχής εξέλιξη των μηχανών παιχνιδιών έχει δημιουργήσει ένα ισχυρό διαχωρισμό ανάμεσα στο rendering, το scripting, την τέχνη, και το σχεδιασμό επιπέδων. Είναι τώρα κοινό, για παράδειγμα, για μια τυπική ομάδα ανάπτυξη παιχνιδιού να έχει πολλές φορές περισσότερους καλλιτέχνες απ' ότι προγραμματιστές.
Τα παιχνίδια βολών πρώτου προσώπου παραμένουν οι κυρίαρχοι χρήστες μηχανών παιχνιδιών τρίτων μερών, αλλά τώρα επίσης χρησιμοποιούνται σε άλλα είδη. Για παράδειγμα, το βιντεοπαιχνίδι ρόλων The Elder Scrolls III: Morrowind και το MMORPG Dark Age of Camelot βασίζονται στη μηχανή Gamebryo, ενώ το επίσης MMORPG,Lineage II, στην Unreal Engine. Οι μηχανές παιχνιδιών χρησιμοποιούνται επίσης για παιχνίδια αρχικά ανεπτυγμένα για οικιακές κονσόλες: για παράδειγμα η μηχανή RenderWare χρησιμοποιείται στα franchises Grand Theft Auto και Burnout.
Ο προγραμματισμός με νήματα γίνεται όλο και πιο σημαντικός λόγω των μοντέρνων πολυπύρηνων συστημάτων (π.χ. ο Cell της Sony και των αυξημένων απαιτήσεων σε ρεαλισμό. Τυπικά νήματα περιλαμβάνουν το rendering, το streaming, τον ήχο, και τη Φυσική. Τα αγωνιστικά παιχνίδια έχουν τυπικά βρεθεί στην πρώτη γραμμή του προγραμματισμού με νήματα με τη μηχανή Φυσικής να τρέχει ένα ξεχωριστό νήμα πολύ πριν άλλα υποσυστήματα του πυρήνα μετακινήθηκαν, κατά ένα μέρος επειδή το rendering και σχετικές εργασίες απαιτούν μόνο ενημέρωση στα 30-60 Hz. Για παράδειγμα, το Need For Speed στο Playstation τρέχει την Φυσική του στα 100 Hz συγκρινόμενα με το Forza Motorsport 2 που τρέχει τη Φυσική του στα 360 Hz.
Αν και ο όρος πρωτοχρησιμοποιήθηκε στη δεκαετία του 1990, υπάρχουν κάποια προγενέστερα συστήματα στη δεκαετία του 1980 τα οποία επίσης θεωρούνται μηχανές παιχνιδιών, όπως τα συστήματα AGI και SCI της Sierra, το σύστημα SCUMM της LucasArts και η Μηχανή Freescape της Incentive Software. Ωστόσο, αντίθετα με τις μοντέρνες μηχανές παιχνιδιών, αυτά τα συστήματα δεν χρησιμοποιήθηκαν ποτέ σε προϊόντα τρίτων μερών (εκτός του συστήματος SCUMM το οποίο πήρε άδεια και χρησιμοποιήθηκε από την Humongous Entertainment).

Πρόσφατες τάσεις

Καθώς η τεχνολογία των μηχανών παιχνιδιών ωριμάζει και γίνεται πιο φιλική προς το χρήστη, η εφαρμογή των μηχανών παιχνιδιών έχει διευρυνθεί σε έκταση, και τώρα χρησιμοποιείται για σοβαρά παιχνίδια: οπτικοποίησης, εκπαίδευσης, ιατρικής και στρατιωτικής εξομοίωσης εφαρμογές. Για να διευκολύνουν αυτή την προσβασιμότητα, νέες πλατφόρμες υλικού στοχεύονται τώρα από μηχανές παιχνιδιών, περιλαμβανομένου κινητών τηλεφώνων (π.χ. το iPhone) και φυλλομετρητών (π.χ. Shockwave, Flash, Silverlight, Unity Web Player, O3D).
Επιπρόσθετα, περισσότερες μηχανές παιχνιδιών κατασκευάζονται πάνω σε Υψηλού επιπέδου γλώσσες προγραμματισμού όπως η Java και η C#/.NET (π.χ. TorqueX, Blade3D, και Visual3D.NET) ή Python (Panda3D). Καθώς τα περισσότερα από τα πλούσια σε 3D παιχνίδια είναι περισσότερο περιορισμένα από την GPU (δηλαδή περιορισμένα από την ισχύ της κάρτας γραφικών), οι ενδεχόμενες καθυστερήσεις των υψηλού επιπέδου γλωσσών προγραμματισμού γίνονται αμελητέες, ενώ τα οφέλη παραγωγικότητας που προσφέρονται από αυτές τις γλώσσες στους δημιουργούς μηχανών παιχνιδιών γίνονται κέρδος. Αυτές οι πρόσφατες τάσεις προωθούνται από εταιρείες όπως η Microsoft για να υποστηρίξουν ανεξάρτητη ανάπτυξη παιχνιδιών σε περισσότερες πλατφόρμες, όπως το Xbox360 και το Zune χρησιμοποιώντας το .NET Framework και το XNA για γραφικά και rendering ήχου. Γίνεται ευκολότερο και φθηνότερο από ποτέ να δημιουργηθούν μηχανές παιχνιδιών για πλατφόρμες οι οποίες υποστηρίζουν διαχειριζόμενα πλαίσια.

Middleware

Μερικές εταιρείες τώρα ειδικεύονται στην ανάπτυξη σουιτών λογισμικού γνωστές ως "middleware". Οι δημιουργοί middleware αποπειρώνται να «προανακαλύψουν τον τροχό» με την ανάπτυξη εύρωστων σουιτών λογισμικού οι οποίες περιλαμβάνουν πολλά στοιχεία που ένας δημιουργός παιχνιδιού μπορεί να χρειαστεί για να κατασκευάσει ένα παιχνίδι. Τα περισσότερα προγράμματα middleware παρέχουν δομές που κάνουν εύκολη την ανάπτυξη, όπως λειτουργίες γραφικών, ήχου, Φυσικής και AI. Η Gamebryo και η RenderWare είναι τέτοια ευρείως χρησιμοποιήσιμα προγράμματα middleware.
Μερικά middleware κάνουν μόνο ένα πράγμα, αλλά το κάνουν πιο πειστικά ή πιο αποδοτικά απ' ότι οι γενικού σκοπού μηχανές. Για παράδειγμα, η SpeedTree χρησιμοποιήθηκε για να κάνει render τα ρεαλιστικά δέντρα και βλάστηση στο παιχνίδι ρόλων The Elder Scrolls IV: Oblivion.
Τα τέσσερα πιο ευρείως χρησιμοποιούμενα πακέτα middleware τα οποία παρέχουν υποσυστήματα λειτουργικότητας περιλαμβάνουν το Bink της RAD Game Tools, το Firelight FMOD, το Havok, και το Scaleform GFx. Η RAD Game Tools αναπτύσσει το Bink για βασικό rendering βίντεο, μαζί με το Miles audio, και το Granny 3D rendering. Το Firelight FMOD είναι μια χαμηλού κόστους εύρωστη βιβλιοθήκη ήχου και σύνολο εργαλείων. Το Havok παρέχει ένα εύρωστο σύστημα εξομοίωσης Φυσικής, μαζί με μια σουίτα λύσεων animation και συμπεριφοράς. Το Scaleform παρέχει GFx για για υψηλής απόδοσης Flash UI, μαζί με μια υψηλής ποιότητας λύσης αναπαραγωγής βίντεο, και έναν πρόσθετο Επεξεργαστή Μεθόδου Εισόδου (IME) για την υποστήριξη Ασιατικής συζήτησης μέσα στο παιχνίδι.
Μερικά middleware περιέχουν πλήρη πηγαίο κώδικα, άλλα απλά παρέχουν API αναφορά για μια μεταγλωτισμένη δυαδική βιβλιοθήκη. Μερικά προγράμματα middleware μπορούν να αδειοδοτηθούν και με τους δύο τρόπους, συνήθως για μια υψηλότερη χρέωση για τον πλήρη πηγαίο κώδικα.