PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Random BGM (zB. in Bars, Restaurant etc.)



Jadoo
24.03.2007, 17:41
Hallo,

ich habe bereits in einer Tür ein Event erstellt, dass man bei jedes Mal neu betreten andere Musik hört. Die BGM allerdings, nachdem sie ausgespielt hat, beginnt ja wieder von Neuem.

Nun meine Frage: Wäre es irgendwie möglich, verschiedene Midis per Zufall abspielen zu lassen? Meine Idee derzeit, einen paralellen Prozess anzulegen, der im Loop verschiedene BGMs nacheinander abspielt. Probiert habe ichs noch nicht, ich denke ich müsste dann auch Waits reinsetzen oder spielt er die BGMs dann automatisch erstmal durch bevor er die nächste startet?

Greyce
24.03.2007, 17:54
Du könntest doch durch eine Fork abfragen, ob die BGM einmal
durchgespielt wurde?
Natürlich bestimmst du am Anfang mittels Variaben welche BGM gespielt wird
und wenn eine durchgespielt ist fragst du ab welche gerade nicht gespielt wurden
und diese lässt du wieder per zufallsprinzip(Variablen) entscheiden.
Ich hoffe, dass ich dir helfen konnte

Edit:Ich werde dir einfach ein Script hochladen.
Könnte noch bisschen dauern(aber heute wirds noch)^^

~Waradience~

Jadoo
24.03.2007, 18:14
Hallo,

danke für deinen Lösungsvorschlag, werde das mal ausprobieren. Könntest du mir vielleicht noch kurz beschreiben, wie der Quelltext dann aussehen sollte? Hab mal nachgesehen aber ich wüsste da jetzt keinen Ansatz, wie ich das Event beginnen könnte ...

Greyce
24.03.2007, 20:24
Naja, jetzt hab ichs.
Wenn du noch fragen hast frag nur :D
Sollte im Maker aber alles beschrieben sein und einwandfrei funktionieren(sollte)

Download (http://www.mediamax.com/volucris/Hosted/zuf%C3%A4llige%20BGM.rar)

Jadoo
24.03.2007, 21:31
Vielen Dank für die Mühe! Habs mal angetestet und durchgelesen, aber werde es nachher nochmal in Ruhe durchgehen und dann selber probieren.

Noch ne Frage generell: Wenn ich auf derselben Map aber noch ein anderes Event erstelle, wo der Spieler die gewünschte Musik selber auswählen kann, wird es dann Beeinträchtigungen diesbezüglich geben? Weil wenn ich, während anderseits der parallele Prozess mit den Zufalls-BGMs läuft, plötzlich ein "Play BGM" wähle, wird er dann nicht das übernehmen bzw. dies dann garnicht möglich sein?

elessar_isilra
24.03.2007, 22:25
Noch ne Frage generell: Wenn ich auf derselben Map aber noch ein anderes Event erstelle, wo der Spieler die gewünschte Musik selber auswählen kann, wird es dann Beeinträchtigungen diesbezüglich geben? Weil wenn ich, während anderseits der parallele Prozess mit den Zufalls-BGMs läuft, plötzlich ein "Play BGM" wähle, wird er dann nicht das übernehmen bzw. dies dann garnicht möglich sein?

Hab' mir das Script mal angeschaut, sieht (und hört) gut aus. Die neue Musik würde nicht abgespielt, es müsste aber glaube ich funktionieren, wenn du vorher das Event für die Zufallshintergrundmusik per Switch deaktivieren würdest.

Jadoo
24.03.2007, 22:45
Hallo,


Die neue Musik würde nicht abgespielt, es müsste aber glaube ich funktionieren, wenn du vorher das Event für die Zufallshintergrundmusik per Switch deaktivieren würdest.

Genau daran hab ich eben auch gedacht, muss nur die Umsetzung ausprobieren. Theoretisch dürfte es so aussehen, dass wenn der Spieler selber auswählt, der parallele Prozess per Switch ausgeschaltet wird. Mit dem wieder einschalten nachdem das Stück vorbei ist, das muss ich dann noch austüfteln.

Bin jetzt mal das Script durchgegangen, alles logisch und ich denke ich kann jetzt loslegen. Aber eine Frage noch, um sicher zu gehen dass ich es richtig verstanden haben:

Im Script ist jetzt ein Beispiel von 3 Musikstücken. Wenn ich mehrere auswähle, zB. 7, dann müsste ich doch, bis auf 1 und 7, immer ein Label setzen, oder? Ich meine das so:

if var = 1 ... set to random 2-7
else
if var = 7 ... set to random 1-6

damit er aber bei zB. 3 auch 1-2 auswählen kann, anstatt nur 4-7, müsste ich dann wieder ein Label setzen:

if music has played once
if var = 3
label 1
change var = set to random 1-7
if var = 3
go to label 1

dasselbe dann für alle anderen Werte bis auf 1 und 7, sowie dann jeweils immer einen Label höher. Richtig :) ?

Greyce
24.03.2007, 22:48
Was ich bei dem Script vll. vergessen habe ist das Fade in/out aber
ich glaube das kriegst du hin ^^

Zu deinem Problem:
Mach einfach auf die Seite des PP-Events die Bedingung, dass die Variable
größer gleich 1 sein muss.
Wenn du jetzt den Spieler wählen lassen willst welche BGM gespielt wird
musst du die Variable natürlich auf einen Wert der kleiner als 1 ist setzten.

Erklärung:
Die Event Seite wird nur aufgerufen wenn die Variable größer oder
gleich 1 ist. Wenn sie jetzt aber zb. 0 ist wird das PP lahm gelegt.
Kommt man aber wieder neu auf die Map würde wieder ein Zufallsmusik
abgespielt werden.
Wenn dir das nicht passt müsstest du es noch sagen.


Hab' mir das Script mal angeschaut, sieht (und hört) gut aus. Die neue Musik würde nicht abgespielt, es müsste aber glaube ich funktionieren, wenn du vorher das Event für die Zufallshintergrundmusik per Switch deaktivieren würdest.
So müsste es auch gehen allerdings verwendet man dabei einen Switch.

@Jadoo
Sobald du wieder zurückgeschrieben hast werde ich das Script noch erweitern.
Am besten du sagst mir genau was du haben willst(also, soll nachdem du die Map verlassen hast und dann den Raum wieder betrittst wieder die Zufalls-
Bgm oder doch die vom Spieler ausgewählte abgespielt werden)

Edit:
Du kannst das natürlich mit soviel BGMs machen wie du willst,
nur musst du immer aufpassen wenn du zb. die BGM 6 gerade apspielst und du hast 10BGMs,darf die Variable nicht wieder auf 6 gesetzt werden weil die Musi sonst gleich bleibt.
Darum musst du eine Fork machen die abfragt ob die Zahl in unserem Bsp. 6 ergibt.
Wenn ja dann die Loop machen die wieder eine Zufallszahl ermittelt.
Das ganze wird so oft wiederholt, bis die zahl nicht 6 ist.
Hoffe du hast das Prinzip verstanden

Oh hab deinen Post übersehen -> ja, richtig http://multimediaxis.net/images/smilies/s_034.gif

~Waradience~

Jadoo
25.03.2007, 01:29
Hallo Waradience,

ich werde es erstmal so probieren und wenn es klappt, das andere Event erstellen, wo der Spieler auswählen kann. Meine Idee dazu war, gleichzeitig beim setzen der Variable wenn der Spieler die Map betritt (zB. in der Tür) einen Switch anzuschalten. Sobald der Spieler dann selbst eine BGM auswählt, wird der Switch dann halt wieder ausgeschaltet. Ich denke, das per Variable zu machen so wie du es beschrieben hast, ist doch dann eigentlich dasselbe, zumindest von der Wirkung her oder?

Die Frage die mir dabei bleibt ist nur, würde die BGM denn erst ausspielen, wenn ich das Event wie folgt erstelle:

Play BGM
Switch off / bzw. set var to 0

?

Wird dann nicht die BGM nur kurz angespielt? Wenn ich dann einen Wait setzen müsste, würde der Spieler sich ja nicht mehr bewegen können oder doch?

Was meinst du genau mit Fade BGM? Nach jeder Musik oder nur dann, wenn der Spieler die Map verlässt? Da bau ich (bzw. hab ichs schon) ein Event in die Tür ein, dass die BGM "ausgefadet" wird, das Geräusch (SE) der Tür überdeckt dann auch son bisschen den letzten Ton, passt ganz gut so wie es ist.

Die Musik soll jedes mal per Zufall generiert werden, sobald man die Map betritt. Wenn man sich länger dort aufhält, sollte die Musik eben nicht wieder von neu beginnen, sondern wechseln. Wählt der Spieler selbst ein Lied aus, so kann er es sich bis zum Ende anhören, danach sollte wieder per Zufall abgespielt werden.

Für eine Bar oder ein Restaurant wird mir das Script so ausreichen, denn da sollte nur, so wie es auch in Wirklichkeit ist, die Musik ab und zu mal wechseln und eben nicht immer dieselbe abspielen.

Desweiteren handelt es sich bei einer Map, wo es etwas aufwendiger werden soll, um eine Diskothek. Deswegen habe ich jetzt noch weitere Fragen. Die Variable, je nachdem welchen Wert sie hat, lässt sich ja auch auf die NPCs und andere Events übertragen. So wäre es möglich, bei langsamer Musik die Animation des Charsets langsamer anzeigen zu lassen, sowie umgekehrt bei schnellerer Musik eben schneller. Die Fragen jetzt:

1. Bei einem Event mit mehreren Seiten muss man doch die höchste Variable auf der 2. Seite setzen, ist das richtig? Zumindest habe ich das so in Erinnerung, dass man dies so machen muss, damit nicht die höchste Seite zuerst aufgerufen wird. Ist das in der Situation mit der Zufallsvariable denn genauso?

2. Da sich die NPCs auch mal ändern sollen vom Äußerlichen her (weil ja nicht immer dieselben Personen sich in der Disko aufhalten ^^), müsste ich da auch noch ein paar Switches einbauen. Zumindest immer dann, wenn man die Diskothek nach einiger Zeit (oder auch sofort von mir aus) wieder neu betritt. Problem dabei wäre ja, dass je nachdem wieviele Seiten ein Event schon hat aufgrund der Variable, man keine weiteren Events mehr anlegen kann. Oder ist es möglich, zB. ab der 10. Seite einen Switch zu setzen mit einem neuen Charset und wieder dieselben Variablen?

Ist etwas aufwendig, zumindest was die NPCs betrifft und man ja auch nicht weiß, wie lange sich der Spieler jeweils in der Diskothek aufhält. Die Disko soll ja zunächst ein Feature darstellen, von einigen Pflichtbesuchen (bei der Suche nach etwas oder um mit einem NPC zu reden) mal abgesehen.

Hoffe ich nerve damit nicht zu sehr^^, aber bei den Variablen muss ich immer vorher ein bisschen überlegen bzw. mir ein Beispiel ansehen um einen Ansatz zu finden. Gewusst hatte ich es schon, dass die Sache mit der Zufallsmusik sicherlich per Variable möglich wäre. Nur eben der Ansatz hatte mir gefehlt ... was ich ja jetzt weiß (danke :) )

Edit: Hab das Script jetzt in die Disko eingebaut mit 6 Musikstücken, klappt wunderbar :A

Edit 2 Guten Morgen^^ ... Habe nun auch getestet wie es mit der Musikauswahl klappen könnte, ohne Switches zu verwenden. Da ich einen NPC eingestellt habe und dann per F9 die Variable geändert, um zu sehen wie er sich bewegt, habe ichmal abgewartet. Da ja parallel die Fork Condition abfragt, ob -in diesem Fall Titel 6- schon gespielt wurde, wird ja dann per Zufall eine andere ausgewählt. Demnach kann ich auf die Switches verzichten und muss immer nur bei jedem Lied dann die Variable ändern. Nachteil allerdings: Wenn ich mehr Titel zur eigenen Auswahl anbieten möchte, als so abgespielt wird, muss ich mich für eine Sache entscheiden: Entweder Random nur 6 und Auswahl mehr, dafür aber mit Switches - oder eben ohne Switches, aber dafür dann auch Random die gesamten Titel die auch zur eigenen Auswahl bereit stehen :(

Greyce
25.03.2007, 12:15
Tut mir Leid Jadoo, aber ich habe jetzt ein bisschen den Überblick verloren ^^

Am besten du machst mir stichpunktartig eine Aufzählung was du haben willst,
und ich lade dann noch mal ein Script hoch.

Wegen dem Fade in/out:
Naja, ich meinte eigentlich, wenn eine BGM durchgespielt werden würde,
ob sie dann ausgefadet werden soll und die darauf folgende eingefadet.
Beim verlassen der Map auch?

Wie gesagt mach mir ein par aussagekräftige Aufzählpunkte die ich
dann versuchen werde umzusetzten.

~Waradience~

Jadoo
25.03.2007, 17:06
Hallo,


Tut mir Leid Jadoo, aber ich habe jetzt ein bisschen den Überblick verloren ^^

Uups ^^ dann hab ich wohl zu viel geschrieben :D

Eigentlich ist da nichts mehr, was noch großartig hinzugefügt werden könnte, bis auf das Fade Out. Das FadeIn habe ich schon bei den einzelnen BGMs eingestellt und eben in der Tür ein FadeOut, damit die Musik auch ausklingt, wenn man den Raum verlässt.

Wegen dem selber auswählen der Musik, ich hab mich jetzt entschieden, alle Titel die auch vom Spieler auswählbar sind, in das RandomScipt einzubauen. So muss bei einer eigenen Musikauswahl nur der Wert der Variable geändert werden aber kein Switch benötigt.

Bei der Zufallsmusik in der Bar werde ich noch einen Switch setzen, damit ich den Prozess an- und ausschalten kann. In der Bar gibt es nämlich schon eine Zwischensequenz, wo ich die Musik dazu manuell ausgewählt habe.

Was ich jetzt noch überlege ist halt mit den NPCs in der Disko wegen der Bewegung bei unterschiedlicher Musik ... ob ich jetzt für jede Variable eine Seite nehme oder die NPCs als parallelen Prozess wähle.

Naja mal sehen :)

Greyce
25.03.2007, 19:53
Wie ich dich jetzt verstanden habe, willst du Charas bei unterschiedlicher Musik unterschiedlich animieren.
Wenn es nicht zu viele NPC's sind kannst du ruhig alle auf PP laufen lassen.
Ich glaube kaum, dass da eine zu hohe Rechenleistung beansprucht wird.



Bei der Zufallsmusik in der Bar werde ich noch einen Switch setzen, damit ich den Prozess an- und ausschalten kann.
Nicht nötig, du kannst die Variable auch einfach auf 0 setzten und
beim PP(mit der random Musik) als Bedingung angeben, dass die Variable größer/gleich 1 sein muss.
So kannst du den Prozess ausschalten wenn du die variable auf 0 setzt
und wenn sie größer gleich 1 ist springt der PP an.

Noch viel Erfolg bei deinem Spiel!

~Waradience~

Jadoo
25.03.2007, 20:54
Hallo,

OK. Ich werde dann ein paar NPCs als PP einstellen und andere normal, dass sind dann die ansprechbaren.


Nicht nötig, du kannst die Variable auch einfach auf 0 setzten und
beim PP(mit der random Musik) als Bedingung angeben, dass die Variable größer/gleich 1 sein muss.
So kannst du den Prozess ausschalten wenn du die variable auf 0 setzt
und wenn sie größer gleich 1 ist springt der PP an.

Stimmt auch wieder, dann mach ich das so :)


Noch viel Erfolg bei deinem Spiel!

Danke, aber auch dir vielen Dank für die Mühe mit dem Erklären :A