Hintergrundsounds

Das Board für Schwierigkeiten beim Adventure-Machen und zum Melden von Bugs
Post Reply
parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Hintergrundsounds

Post: # 80575Post parkiii
07 Aug 2013, 20:43

Hey!

Mein Spiel gliedert sich in viele Bereiche, die jeweils aus mehreren Räumen bestehen. Für jeden Bereich ist ein anderer Hintergrundsound vorgesehen (beispielsweise Bereich Dorf und Bereich Wald oder gar Kampf-Theme).
Allerdings kann man nahezu alle Bereiche über mehrere Räume betreten und somit müsste ich in all diesen Räumen einen Loopsound-Wechsel beim Betreten schreiben.
Wenn man dann allerdings intern im Bereich herumgeht, wird der Sound immer mittendrin gestoppt und neu abgespielt, obwohl das gar nicht notwendig wäre.

Meine (etwas komplizierte Lösung dafür):
Eine String-Variable mit dem aktuellen Soundnamen speichern.
Bei jedem Raumwechsel diese Variable überprüfen (oder in einem Skript, das andauernd nebenbei läuft, zB main) und nur bei Änderung des Soundes neu abspielen.

Code: Select all

 ifnot_string (soundAktuell ; [soundNeu]) {
   stoploop ([soundAktuell])
   loopsound ([soundNeu])
   setstring (soundAktuell; [soundNeu])
}

Wie würdet ihr das Probelm lösen? Gibt es da einfachere Varianten?

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Hintergrundsounds

Post: # 80576Post japanhonk
08 Aug 2013, 06:20

Wieso hälst Du deine Lösung für kompliziert ? Ist doch ein nettes kleines
Skript, das kannst Du sogar ins Mainskript packen.
( Wenn ich es zu dieser Uhrzeit schon richtig erfasse... :lol: )

Du müsstest nur die Strings in jedem Raum definieren.

Ich finde das vernünftig gelöst.

Wobei ich selbst aufgrund vieler Soundeffekte sowieso ne Menge
loopsound und loopstop Befehle in die Räume setze.
( solange ich keinen Grund habe, es anders zu lösen )


Gruss

Manni
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Re: Hintergrundsounds

Post: # 80577Post parkiii
08 Aug 2013, 10:35

Hmm, wenn ich jetzt so drüber nachdenke, ist das gar nicht so kompliziert. Lag wahrscheinlicj daran, dass ich das noch nicht implementiert hatte und mir nur im Kopf eine Lösung überlegt habe.
Aber da ich mit Sounds und Musik noch fast keine Erfahrung habe, hätte es auch leicht sein können, dass es sogar einen Befehl gibt, der das alles automatisch macht :D

Vielen Dank auf jeden Fall!

DeinTroll
Experienced PaC-DK User
Posts: 561
Joined: 07 Sep 2011, 21:33
Location: In der Ortenau
Contact:

Re: Hintergrundsounds

Post: # 80578Post DeinTroll
08 Aug 2013, 16:16

Da ich bis jetzt nur ein Song in meinem Spiel habe, hab ich mich damit noch net beschäftigt. Aber auf den ersten Blick würd ichs auch so machen. Ich würds wahrscheinlich in jedem Raum in den "on (enter)" befehl setzen.
Image

parkiii
An Adventure Creator
Posts: 276
Joined: 30 Jun 2009, 13:58
Location: Austria

Re: Hintergrundsounds

Post: # 80579Post parkiii
08 Aug 2013, 16:48

Für alle, die das auch mal verwenden werden:

Offensichtlich kann man den loopstop-Befehl nicht mit Variablen nutzen.
Also muss man manuell alle loopsounds zum Stoppen bringen.

Raumskript:

Code: Select all

on (enter)
{
setstring (soundNeu;soundname1)
}
Mainskript:

Code: Select all

(*Sounds*)
ifnot_string (soundAktuell;[soundNeu])
{
  (*alles manuell stoppen, da Variablen in loopstop nicht funktionieren*)
  if_string (soundAktuell;soundname1)
     loopstop (soundname1)
  if_string (soundAktuell;soundname2)
     loopstop (soundname2)
       
  loopsound ([soundNeu])
  setstring (soundAktuell;[soundNeu])
}
Ansonsten funktioniert alles einwandfrei.

japanhonk
PaC-DK God
Posts: 1716
Joined: 05 Feb 2009, 20:36
Location: NRW
Contact:

Re: Hintergrundsounds

Post: # 80580Post japanhonk
08 Aug 2013, 18:58

Ich gebe nochmal einen meiner gängigen Hinweise aus meiner Praxis :

Ich nutze ja oft auch Timerobjeke, d.h. Dummyobjekte, die dann in jedem Zustand eine andere Dauer warten und dann eine Funktion starten.


Praktische Anwendung bei mir :

Anzeige von Texten mit automatischer Weiterschaltung , Anzeigedauer variiert mit der Textlänge. Gleichzeitig kann der Spieler das Textfenster
selbst weiterschalten ( wenn er zB schneller liest )

Normalerweise bestimmt das Timerobjekt, wann der nächste Text kommt,
indem eine Variable für den Text und die Anzeigefunktion aufgerufen wird;
beim Klick auf Weiter, setzt der Spieler die bestimmende Variable sofort
hoch und ruft die Anzeigefunktion selbst auf.

Das klappt auch mit Sounds oder Anderem... Kann irgendwann ja mal auch bei Euch nützlich sein. :D
Es gibt 10 Arten von Usern :
die, die Binärcode verstehen und die, die es nicht tun....
----------------------------------------------------------
STAR TREK FYNE :
http://www.fynegames.homepage.t-online.de

Post Reply