Στην άσκηση αυτή θα εξοικειωθείτε με τη χρήση και το συνδυασμό triggers για να εισάγετε πιο πολύπλοκη λειτουργικότητα στους χάρτες, χρησιμοποιώντας το λογισμικό Hammer Valve Editor. Ας ξεκινήσουμε λοιπόν! Για τις ανάγκες της εργαστηριακής άσκησης, ανοίξτε το χάρτη που έχει σχεδιαστεί στο αρχείο «complextrig.rmf». Το αρχείο της τελικής σχεδίασης είναι το «complextrigfinal.rmf». Οι οντότητες φωτισμού και ήχου, καθώς και τα εμφανή αντικείμενα στο χάρτη είναι ήδη σχεδιασμένα. Οντότητες που θα εισαχθούν/χρησιμοποιηθούν: trigger_relay, env_shake, env_explosion, func_train, func_button, path_corner Φωτισμός Ήχος Trigger_relay (4) για την ενεργοποίηση γεγονότων env_shake για πρόκληση "σεισμού" Οντότητες path_corner (3) για τα σημεία εκκίνησης και στάσης του ασανσέρ env_explosion για πρόκληση "έκρηξης" func_button για ενεργοποίηση ασανσέρ Σχηματική αναπαράσταση της σχεδίασης προς υλοποίηση func_train για λειτουργικότητα ανελκυστήρα Ο παίχτης-ήρωας εκκινεί ευρισκόμενος στο έδαφος, μπροστά από τον ανελκυστήρα, ο οποίος είναι ανενεργός, στην "κάτω θέση", στο επίπεδο του πατώματος (η θέση αυτή καθορίζεται από την πρώτη οντότητα path_corner). Μόλις ανέβει στην πλατφόρμα και πατήσει το κουμπί με το πλήκτρο USE (E), ο ανελκυστήρας θα ενεργοποιηθεί και θα αρχίσει να κινείται αργά προς τα πάνω μέχρι να φτάσει το ανώτερο σημείο (δεύτερη οντότητα path_corner). Εκεί θα παραμείνει στάσιμος για μερικά δευτερόλεπτα, οπότε θα ακουστεί ένας ήχος και η πλατφόρμα θα ξεκινήσει να κατεβαίνει σιγά σιγά. Κάποια στιγμή ακούγεται μία έκρηξη από το έδαφος η οποία "τραντάζει" την πλατφόρμα, οπότε κι ο ανελκυστήρας κατέρχεται σε ελεύθερη πτώση και σκάει με μεγάλη ταχύτητα στο έδαφος. Το γεγονός αυτό προκαλεί μια δεύτερη έκρηξη, οπότε σκοτώνονται όσοι βρίσκονται πάνω στο ασανσέρ! Συνδυασμός triggers για πιο πολύπλοκη λειτουργικότητα- - Λιβανός Γ. Σελίδα 1
ΒΗΜΑ 1 - Ρύθμιση ανελκυστήρα: Επιλέξτε το αντικείμενο-πλατφόρμα και μετατρέψτε σε οντότητα func_train. Δώστε στην οντότητα το όνομα elev και ως "πρώτη στάση" (first stop target) ορίστε την τιμή elev1, η οποία θα είναι η ονομασία της πρώτης οντότητας path_corner, την οποία θα τοποθετήσετε λίγο πιο πάνω από το επίπεδο της πλατφόρμας ώστε να αιωρείται. Ορίστε τους ήχους αναπαραγωγής για την κίνηση του ανελκυστήρα. Επιλέξτε το σχέδιο-κουμπί και μετατρέψτε το σε οντότητα func_button, χωρίς να της δώστε όνομα αλλά ορίζοντας την παράμετρο target στην τιμή elev (το όνομα της οντότητας func_train). Θέλουμε το κουμπί να ενεργοποιείται με τη χρήση του πλήκτρου USE και να μην μετακινείται, οπότε ρυθμίσετε ανάλογα τα κατάλληλα flags. Συνδυασμός triggers για πιο πολύπλοκη λειτουργικότητα- - Λιβανός Γ. Σελίδα 2
Η οντότητα path_corner με την ονομασία elev1 θα έχει την τιμή elev2 στην παράμετρο next stop target. Τοποθετήστε λοιπόν μια νέα οντότητα path_corner με το όνομα elev2 στο πάνω μέρος των ραγών του ασανσέρ, στο σημείο δηλαδή που καταλήγουν οι πυλώνες. Προκειμένου ο ανελκυστήρας να παραμείνει εκεί και να μην κατέβει αμέσως, ενεργοποιήστε το flag wait for retrigger της οντότητας elev2. Η τιμή της παραμέτρου Fire on pass θα είναι sparks. elev1 elev2 Βάσει του σεναρίου, η πλατφόρμα θα σταματήσει σε ένα ενδιάμεσο σημείο πριν φτάσει με ορμή στο έδαφος, επομένως πρέπει να εισάγετε άλλη μία οντότητα path_corner στο κατάλληλο σημείο. Αφού στο σημείο αυτό θα είναι η προτελευταία "στάση" του ανελκυστήρα, το πεδίο next stop target θα είναι σε σημείο στο έδαφος (μια νέα οντότητα path_corner με όνομα elev4b) και η ταχύτητα κίνησης θα πρέπει να αυξηθεί αρκετά. elev3b Συνδυασμός triggers για πιο πολύπλοκη λειτουργικότητα- - Λιβανός Γ. Σελίδα 3
ΒΗΜΑ 2 - Οι οντότητες trigger_relay:οι οντότητες αυτές ουσιαστικά λειτουργούν ως σύνδεσμος μεταξύ μιας ενέργειας που πρόκειται να γίνει και του αντικείμενου έναρξης ή στόχου. Η οντότητα trigger_relay είναι πολύ χρήσιμη διότι επιτρέπει τη δημιουργία χρονικών παύσεων μεταξύ γεγονότων, ρυθμίζοντας κατάλληλα την παράμετρο delay value. Πολλές οντότητες τέτοιου είδους μπορούν να έχουν το ίδιο όνομα, έτσι ένα αντικείμενο μπορεί να ενεργοποιεί πολλά άλλα σε διαφορετικές χρονικές στιγμές. Όλες οι οντότητες trigger_relay έχουν το όνομα sparks, οπότε ενεργοποιούνται ταυτόχρονα όλες από την κίνηση του ανελκυστήρα. Οι σημαντικές παράμετροι που πρέπει να ρυθμιστούν είναι τα πεδία delay before trigger, τα οποία καθορίζουν την καθυστέρηση ενεργοποίησης των γεγονότων μέσω των triggers. Εισάγετε τέσσερις οντότητες trigger_relay λίγο πιο πάνω από το σημείο τερματισμού του ανελκυστήρα. Οι δύο από αυτές θα έχουν την ίδια καθυστέρηση (delay): 4 seconds. Η μία θα ενεργοποιεί την πλατφόρμα ( elev) και η άλλη τον ήχο (sound). Επειδή η οντότητα path_corner με το όνομα elev2 θα έχει μικρή τιμή στο πεδίο new train speed (π.χ. 12) μέχρι να κατέβει στην επόμενη "στάση", την οντότητα elev3b, έχουμε εισάγει τον ήχο μετά από 4 δευτερόλεπτα για να υποδηλώσουμε αυτή την ενέργεια. Συνδυασμός triggers για πιο πολύπλοκη λειτουργικότητα- - Λιβανός Γ. Σελίδα 4
Η τρίτη οντότητα trigger_relay θα έχει ως τιμή πεδίου target την οντότητα explo και καθυστέρηση delay ίση με 10 seconds. Στη σκηνή θα υπάρχουν δύο οντότητες με το όνομα explo. Εισάγετε λοιπόν μία οντότητα env_explosion στο έδαφος, κοντά στην πλατφόρμα και μία οντότητα env_shake κοντά στο σημείο της ενδιάμεσης στάσης του ανελκυστήρα. Η οντότητα env_explosion θα προκαλεί έκρηξη στο έδαφος κι η οντότητα env_shake θα προκαλεί εφέ σεισμού κατά την κίνηση του ανελκυστήρα. explo env_shake explo env_explosion Συνδυασμός triggers για πιο πολύπλοκη λειτουργικότητα- - Λιβανός Γ. Σελίδα 5
Η τελευταία οντότητα trigger_relay θα έχει καθυστέρηση (delay) ίση με 15 seconds και θα ενεργοποιεί ξανά τον ανελκυστήρα, αναγκάζοντάς τον να κατεβαίνει με πολύ μεγαλύτερη ταχύτητα. Για αυτό το λόγο, στην παράμετρο new train speed της οντότητας elev3b πρέπει να δοθεί μεγάλη τιμή. Όταν το ασανσέρ φτάσει στο τέλος του (elev4b) θα σταματήσει, γι αυτό η οντότητα elev4b πρέπει να έχει κενό το πεδίο target. Για να προκληθεί έκρηξη κατά την πτώση του ανελκυστήρα, δώστε την τιμή blow στο πεδίο fire on pass της οντότητας elev4b. Όταν δηλαδή η πλατφόρμα πέσει με ορμή στο έδαφος, θα πρέπει να προκληθεί μια έκρηξη μεγάλης έντασης. Ως τελευταίο κομμάτι λοιπόν, εισάγετε μια οντότητα env_explosion με όνομα blow πάνω στην πλατφόρμα και ρυθμίσετε κατάλληλα την παράμετρο magnitude. Τρέξτε το χάρτη κι ελέγξτε τη λειτουργικότητα της υλοποίησης. Συνδυασμός triggers για πιο πολύπλοκη λειτουργικότητα- - Λιβανός Γ. Σελίδα 6