Υποστήριξη μουσικής στην WME

Η Wintermute Engine προσφέρει διάφορες λειτουργίες σχετικά με τη μουσική, με την μορφή μεθόδων του αντικειμένου παιχνίδι. Δείτε τον Οδηγό αναφοράς για τη γλώσσα προγραμματισμού για περισσότερες λεπτομέρειες για κάθε μέθοδο.


Απλή αναπαραγωγή μουσικής

Η πιο σημαντική μέθοδος είναι πιθανότατα η Game.PlayMusic(). Σε αυτήν ορίζετε ένα αρχείο ήχου (Wav ή Ogg) και μία παράμετρο που ρυθμίζει αν το αρχείο θα σταματά όταν τελειώσει ή αν θα ξαναρχίζει από την αρχή.

Παράδειγμα:

Game.PlayMusic("music\MyMusic.ogg", true);

Αυτή η γραμμή λέει στην WME να παίξει το αρχείο MyMusic.ogg και να ξεκινάει από την αρχή όταν αυτό φτάσει στο τέλος.

Επειδή όμως δεν είναι πάντα εύκολο για τον μουσικό να επιτύχει μία τέλεια μετάβαση από το τέλος στην αρχή ενός μουσικού κομματιού η μέθοδος PlayMusic() μπορεί να δεχθεί και μία τρίτη παράμετρο που ορίζει το ακριβές σημείο που θα ξεκινάει το κομμάτι σε χιλιοστά του δευτερολέπτου:

Game.PlayMusic("music\MyMusic.ogg", true, 6890);

Αυτή η εντολή θα παίξει το αρχείο MyMusic.ogg και όταν αυτό τελειώσει θα το ξαναπαίξει παραλείποντας από την αρχή 6890 χιλιοστά του δευτερολέπτου.

Υπάρχουν ακόμα πολλές μέθοδοι ελέγχου της μουσική και τα ονόματά τους συνήθως επεξηγούν τις λειτουργίες για τις οποίες προορίζονται όπως Game.StopMusic(), Game.GetMusicPosition() κ.λπ. Δείτε τον οδηγό αναφορά για το Αντικείμενο παιχνίδι για μία πλήρη λίστα με περισσότερες λεπτομέρειες.

Συνήθως η μέθοδος Game.PlayMusic() χρησιμοποιείται συχνότερα στο scene_init.script της σκηνής που θέλετε ένα μουσικό κομμάτι να ξεκινήσει να παίζει.


Πολυκάναλη μουσική και βαθμιαία εναλλαγή ήχων

Εκτός από τις μεθόδους που περιγράφηκαν στην προηγούμενη παράγραφο η MWE περιλαμβάνει και ένα άλλο σετ μεθόδων που σας επιτρέπουν να δουλέψετε με εώς πέντε μουσικά κανάλια (0-4).

Οι μέθοδοι για πολυκάναλη μουσική έχουν παρόμοια ονόματα με τις αντίστοιχες μονοκάναλες, με την διαφορά ότι η λέξη "Music" αντικαθίσταται από την λέξη "MusicChannel". Δηλαδή υπάρχουν δύο μέθοδοι για να παίξετε μουσική:

Όλοι οι μέθοδοι για πολυκάναλη μουσική ως πρώτη παράμετρο δέχονται τον αριθμό του καναλιού (μπορεί να είναι από 0 εώς 4). Αντίθετα οι μέθοδοι για μονοκάναλη μουσική λειτουργούν πάντα στο κανάλι 0.

Για περισσότερες πληροφορίες δείτε τον οδηγό αναφορά για το Αντικείμενο παιχνίδι.

Επίσης υπάρχει η δυνατότητα για ομαλή διαβάθμιση από το ένα μουσικό κανάλι σε κάποιο άλλο χρησιμοποιώντας την μέθοδο Game.MusicCrossfade(). Ως παραμέτρους δέχεται τα δύο κανάλια και την διάρκεια της μετάβασης από το ένα στο άλλο. Μπορείτε επίσης να ορίσετε αν τα δύο κανάλια θα αλλάξουν θέση μεταξύ τους μετά το τέλος της εναλλαγής. Αυτό είναι χρήσιμο για να μπορείτε να έχετε την βασική μουσική πάντα στο ίδιο κανάλι.

Παρακάτω θα δούμε ένα τυπικό σενάριο χρήσης αυτής της μεθόδου. Ξεκινάτε το πρώτο κανάλι κάπου, συνήθως κατά την είσοδο σε μία σκηνή στο αρχείο scene_init.script:

Game.PlayMusicChannel(0, "music\FirstChannel.ogg", true);

Η μουσική τώρα παίζει στο κανάλι 0 όμως μετά από κάποιο γεγονός θέλουμε να αλλάξουμε την μουσική με κάποια άλλη μελωδία. Αυτό που χρειάζεται είναι να ξεκινήσουμε τη νέα μουσική σε ένα άλλο κανάλι και να καλέσουμε την μέθοδο MusicCrossfade:

Game.PlayMusicChannel(1, "music\SecondChannel.ogg");
Game.MusicCrossfade(0, 1, 3000);

Αυτές οι δύο γραμμές κώδικα θα ξεκινήσουν την μουσική στο κανάλι 1 και στη συνέχεια θα ενεργοποιήσουν την ομαλή διαβάθμιση με το κανάλι 0. Η διαδικασία θα διαρκέσει 3 δευτερόλεπτα και όταν τελειώσει τα δύο κανάλια θα αλλάξουν θέση μεταξύ τους. Αυτό σημαίνει ότι παρότι το μουσικό κομμάτι έχει αλλάξει, η μουσική εξακολουθεί να παίζει στο κανάλι 0.

Μερικές φορές θα χρειαστεί να ξεκινήσετε το δεύτερο μουσικό κανάλι όχι από την αρχή αλλά από ένα συγκεκριμένο σημείο. Σε αυτή την περίπτωση θα πρέπει να καλέσετε πρώτα την μέθοδο Game.SetMusicChannelPosition:

Game.SetMusicChannelPosition(1, 10000);
Game.PlayMusicChannel(1, "music\SecondChannel.ogg");
Game.MusicCrossfade(0, 1, 3000);