Wednesday, January 23, 2013

Ενσωματωμένες βιβλιοθήκες


Δημιουργία


Για να δημιουργηθεί ένας εικονικό τρισδιάστατο περιβάλλον σε υπολογιστή το οποίο να περιλαμβάνει γραφική απεικόνιση, ήχο και να υπάρχουν κανόνες εξομοίωσης φυσικής έπρεπε εμπλέξεις πολλές διαφορετικές βιβλιοθήκες. Η Real Library βασίζεται σε τέτοιες βιβλιοθήκες τις οποίες έχει ενσωματώσει και συνδυάσει κάτω από μία κοινή διεπαφή προγραμματισμού εφαρμογών (API). Κάθε μία από αυτές τις βιβλιοθήκες έχει τυλιχθεί ( wrap ). Έχει δημιουργηθεί δηλαδή μία διεπαφή που υλοποιείται από μια κλάση στην περίπτωση μας, η οποία ελέγχει τον τρόπο που επικοινωνεί με τα υπόλοιπα στοιχεία της Real Library.

Τα πλεονεκτήματα αυτού του τρόπου είναι ότι υπάρχει μια συνοχή στον πυρήνα της Real Library. Εάν βρεθεί κάποια καλύτερη βιβλιοθήκη από κάποια από τις ενσωματωμένες βιβλιοθήκες τότε πολύ εύκολα μπορεί να αντικατασταθεί χωρίς να υπάρχει αλλαγή στον τρόπο που θα συνεργάζεται με τις υπόλοιπες ενσωματωμένες.
Για παράδειγμα πριν ολοκληρωθεί η Alpha έκδοση της βιβλιοθήκης αντικαταστάθηκε η βιβλιοθήκη Bullet Physics engine με την Havok Physics and Animation.

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

Διεπαφή προγραμματισμού εφαρμογών


Στις γλώσσες αντικειμενοστραφούς προγραμματισμού, διεπαφή προγραμματισμού εφαρμογών ή application programming interface (API), συνήθως είναι η περιγραφή ενός συνόλου ορισμών κλάσεων και συναρτήσεων με συγκεκριμένη συμπεριφορά. Αυτή η αφηρημένη έννοια συνδέεται με την πρακτική εφαρμογή που παρέχεται από όλες τις δημόσιες μεθόδους των κλάσεων και επιπλέον στοιχεία προγραμματισμού που είναι διαθέσιμα όπως συναρτήσεις, μεταβλητές, απαριθμητές κα. Βέβαια υπάρχουν και στοιχεία εσωτερικά όπως κλάσεις που χρησιμοποιούνται μόνο από άλλες συγκεκριμένες κλάσεις κι όχι από τον χρήστη. Το API σε αυτήν την περίπτωση μπορεί να θεωρηθεί σαν το σύνολο των στοιχείων προγραμματισμού που είναι διαθέσιμα στον τελικό χρήστη. Αυτό σημαίνει ότι το API περιγράφει τον τρόπο με τον οποίο ο χρήστης αλληλεπιδρά με τα αντικείμενα που είναι διαθέσιμα.
Συνήθως το API είναι συγγενές με μια βιβλιοθήκη. Τότε περιγράφει την συμπεριφορά της βιβλιοθήκης καθώς η ίδια η βιβλιοθήκη είναι η πραγματική υλοποίηση αυτής της συμπεριφοράς. Ένα API μπορεί να παρέχει πολλές πολλαπλές υλοποιήσεις διαφορετικών βιβλιοθηκών οι οποίες μοιράζονται μια κοινή διεπαφή. 

Ενσωματωμένες βιβλιοθήκες


Η Real Library ονομάζει ενσωματωμένη βιβλιοθήκη κάθε βιβλιοθήκη κατασκευασμένη από τρίτους και έχει συμπεριληφθεί και χρησιμοποιηθεί σε αυτήν.
Σε αυτήν την έκδοση της χρησιμοποιεί τις εξής βιβλιοθήκες.

  • Irrlicht lightning fast realtime 3D engine
    Απεικόνιση γραφικών στην οθόνη.

  • Irrklang high level 3D audio engine / API
    Αναπαραγωγή ήχων από την συσκευή ήχου/ηχεία.

  • Havok Physics and Animation
    Εφαρμογή των νόμων της κλασσικής μηχανικής στο εικονικό περιβάλλον.

  • Lua
    Ενσωμάτωση δυνατότητας εκτέλεσης από γλώσσα δέσμης ενεργειών.

  • LuaBind
    Ορισμός της σύνταξης των εντολών της γλώσσα δέσμης ενεργειών για αυτήν την βιβλιοθήκη.
Επίσης χρησιμοποιεί την Boost Library αλλά όχι με τον τρόπο που αναφέρθηκε παραπάνω. Η LuaBind εξαρτάται από την Boost κι η Real Engine από την LuaBind.