Torque Game Engine - #03 Κώστας Καρπούζης (kkarpou) Αμαρυλλίς Ραουζαίου (araouz) Γιώργος Καρυδάκης (gcari) http://www.image.ntua.gr
Torque Game Engine
Torque Script Script files *.cs Compiled files *.dso Πάντα τηρείται Client – Server δομή Common vs. Control folders Mission area maps Textures – interiors –data Player files – bot files Torque Game Engine
Είδος Μεταβλητής Δύο είδη: global –μεταβλητές με πρόθεμα "$" local – με ταβλητές με πρόθεμα "%". π.χ. $maxplayers και %maxplayers Η μεταβλητή %maxplayer μπορεί να χρησιμοποιηθεί μέσα σε μία συγκεκριμένη συνάρτηση, ενώ η μεταβλητή $maxplayer μπορεί να χρησιμοποιηθεί οπουδήποτε μέσα στο πρόγραμμα. Torque Game Engine
Αντικείμενα και Κλάσεις Αντικειμένων Το Αντικείμενο είναι στιγμιότυπο (instance) μίας Κλάσης Αντικειμένων, η οποία είναι μία συλλογή ιδιοτήτων και μεθόδων, που μαζί ορίζουν ένα σύνολο από συμπεριφορές και χαρακτηριστικά. Ένα αντικείμενο Torque αποτελεί τη δημιουργία στιγμιοτύπου από μία κλάση αντικειμένων. Μετά τη δημιουργία του, το αντικείμενο Torque έχει ένα μοναδικό αριθμητικό αναγνωριστικό που ονομάζεται handle. Όταν υπάρχει ένα αντικείμενο σε ένα multiplayer game με ένα server και πολλούς clients, ο server και κάθε client αναθέτουν το δικό τους handle για να αποθηκεύσει τα αντικείμενα στη μνήμη. Torque Game Engine
Datablocks Το datablock είναι ένα είδος αντικειμένου που περιέχει ένα σύνολο χαρακτηριστικών που χρησιμοποιούνται για να περιγράψουν τις ιδιότητες ενός άλλου αντικειμένου. Αντικείμενα datablock υφίστανται ταυτόχρονα στο server και σε όλους τους συνδεδεμένους clients. Κάθε αντίγραφο ενός δεδομένου datablock χρησιμοποίει το ίδιο handle είτε είναι στο server είτε σε κάποιο client. Εξ ορισμού, το αναγνωριστικό ενός datablock έχει τη μορφή NameData. VehicleData, PlayerData, και ItemData είναι όλα παραδείγματα αναγνωριστικών datablock. Παρόλο που τα datablocks είναι αντικείμενα, δεν αναφερόμαστε σε αυτά με τον όρο αντικείμενα, ώστε να αποφύγουμε σημασιολογική σύγχυση με τα κανονικά αντικείμενα. Torque Game Engine
Τι θα κάνουμε σήμερα; Extract lab3_triggers.zip Θα εμπλουτίσουμε ένα υπάρχον παιχνίδι Θα προσθέσουμε στον κόσμο μας μερικά δέντρα Θα προσθέσουμε στον κόσμο μας μια φωτιά Θα ορίσουμε ένα trigger area στην περιοχή της φωτιάς Θα συνδέσουμε το event της εισόδου του παίκτη στο trigger area με τη δημιουργία ενός bot. Torque Game Engine
World editor Με F11 μπαίνουμε στον mission editor World editor inspector World editor creator Δημιουργία δέντρου: World editor creator (κάτω δεξιά παράθυρο) StaticShapes ->control->data->Tree Τοποθέτηση στο χώρο Αλλαγή θέσης από τον World Editor Inspector, αλλάζοντας το Transform και πατώντας Apply Μετά από σημαντικές αλλαγές, θυμόμαστε να σώζουμε το mission file από το αντίστοιχο μενού, γιατί αλλιώς οι αλλαγές χάνονται μετά τον τερματισμό του παιχνιδιού Torque Game Engine
Δημιουργία Φωτιάς World editor creator (κάτω δεξιά παράθυρο) Mission objects -> environment ->particleEmitter Θα φτιάξουμε ένα particleEmitter με όνομα myFire και με datablock FireParticleEmitterNoc Άλλο ένα particleEmitter με όνομα mySmoke και με datablock SmokeParticleEmitterNoc Φροντίζουμε από τον world editor inspector οι δύο emitters να έχουν ίδια θέση (Transform) Αλλάζουμε το μέγεθος κάθε emitter επιλέγοντας το και κρατώντας πατημένα τα πλήκτρα ctrl + alt Πίσω στον world editor creator, πάνω από εκεί που διαλέξαμε τα mission objects διαλέγουμε: StaticShapes ->control->data->campfire Του δίνουμε όνομα campfire από τον inspector και ίδιο transform με την φωτιά και τον καπνό Αλλάζουμε το μέγεθος του επιλέγοντας το campfire και κρατώντας πατημένα τα πλήκτρα ctrl + alt Σώζουμε το mission file Torque Game Engine
Create Trigger Area (I) Ανοίγουμε “server.cs" script file που βρίσκεται στο "lab3_trigger/control" και μέσα στην συνάρτηση onServerCreated() function προσθέτουμε στο τέλος την εξής γραμμή: exec("./triggers.cs"); world editor creator, κάτω δεξιά στα Mission Objects διαλέγουμε mission – trigger Δίνουμε όνομα myTrigger και διαλέγουμε για datablock αντί για το defaultTrigger το MyFirstTrigger Από τον inspector τοποθετούμε το trigger στην ίδια θέση με την φωτιά Αλλάζουμε το μέγεθος του επιλέγοντας το trigger και κρατώντας πατημένα τα πλήκτρα ctrl + alt Mission Editor and select the "File->Save Mission" menu item Torque Game Engine
MyFirstTrigger datablock TriggerData( MyFirstTrigger ) // tickPeriodMS is a value is used to control how often the console // onTriggerTick callback is called while there are any objects // in the trigger. The default value is 100 MS. tickPeriodMS = 100; function MyFirstTrigger::onEnterTrigger( %this, %trigger, %obj ) // This method is called whenever an object enters the %trigger // area, the object is passed as %obj. function MyFirstTrigger::onLeaveTrigger( %this, %trigger, %obj ) // This method is called whenever an object leaves the %trigger function MyFirstTrigger::onTickTrigger( %this, %trigger ) // This method is called every tickPerioMS, as long as any // objects intersect the trigger. Torque Game Engine