cerca
Giochino del Sottomarino
modifica cronologia stampa login logout

Wiki

Tools

Categorie

Help

edit SideBar

Utenti.GiochinoSottomarino-Suoni History

Hide minor edits - Show changes to output

Changed line 8 from:
In un gioco occorrono dei suoni, e anche delle musiche di sottofondo. Per quanto riguarda i suoni, sono andato su [[Freesound -> http://www.freesound.org/]] e ho scaricato un po' di roba interessante. Le musiche invece le ho tratte dalla colonna sonora originale del videogioco [["The Hunt for Red October" -> http://www.lemon64.com/games/details.php?ID=1248]] uscito per C64 nel 1990. Gli autori sono [[Neil Crossley -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]] e [[Allister Brimble -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DAllister+Brimble]]. Ai tempi ero possessore di questo gioco, su cassetta, ma non trovo più la piacevole confezione. Ricordo che era veramente difficile. E avevo anche un altro gioco musicato da Neil Crossley, cioè [[Last Battle -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]], che altro non è che un gioco basato sulla seconda serie di Ken Shiro ma che in occidente è stato privato di ogni riferimento al rappresentante della Divina Scuola di Hokuto. Ma ai tempi non lo sapevo.
to:
In un gioco occorrono dei suoni, e anche delle musiche di sottofondo. Per quanto riguarda i suoni, sono andato su [[Freesound -> http://www.freesound.org/]] e ho scaricato un po' di roba interessante. Le musiche invece le ho tratte dalla colonna sonora originale del videogioco [["The Hunt for Red October" -> http://www.lemon64.com/games/details.php?ID=1248]] uscito per C64 nel 1990. Gli autori sono [[Neil Crossley -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]] e [[Allister Brimble -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DAllister+Brimble]]. Ai tempi ero possessore di questo gioco, su cassetta, ma non trovo più la piacevole confezione. Ricordo che era veramente difficile. E avevo anche un altro gioco musicato da Neil Crossley, cioè [[Last Battle -> http://www.lemon64.com/games/details.php?ID=1483]], che altro non è che un gioco basato sulla seconda serie di Ken Shiro ma che in occidente è stato privato di ogni riferimento al rappresentante della Divina Scuola di Hokuto. Ma ai tempi non lo sapevo.
Changed line 8 from:
In un gioco occorrono dei suoni, e anche delle musiche di sottofondo. Per quanto riguarda i suoni, sono andato su [[Freesound -> http://www.freesound.org/]] e ho scaricato un po' di roba interessante. Le musiche invece le ho tratte dalla colonna sonora originale del videogioco [["The Hunt for Red October" -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]] uscito per C64 nel 1990. Gli autori sono [[Neil Crossley -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]] e [[Allister Brimble -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DAllister+Brimble]]. Ai tempi ero possessore di questo gioco, su cassetta, ma non trovo più la piacevole confezione. Ricordo che era veramente difficile. E avevo anche un altro gioco musicato da Neil Crossley, cioè [[Last Battle -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]], che altro non è che un gioco basato sulla seconda serie di Ken Shiro ma che in occidente è stato privato di ogni riferimento al rappresentante della Divina Scuola di Hokuto. Ma ai tempi non lo sapevo.
to:
In un gioco occorrono dei suoni, e anche delle musiche di sottofondo. Per quanto riguarda i suoni, sono andato su [[Freesound -> http://www.freesound.org/]] e ho scaricato un po' di roba interessante. Le musiche invece le ho tratte dalla colonna sonora originale del videogioco [["The Hunt for Red October" -> http://www.lemon64.com/games/details.php?ID=1248]] uscito per C64 nel 1990. Gli autori sono [[Neil Crossley -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]] e [[Allister Brimble -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DAllister+Brimble]]. Ai tempi ero possessore di questo gioco, su cassetta, ma non trovo più la piacevole confezione. Ricordo che era veramente difficile. E avevo anche un altro gioco musicato da Neil Crossley, cioè [[Last Battle -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]], che altro non è che un gioco basato sulla seconda serie di Ken Shiro ma che in occidente è stato privato di ogni riferimento al rappresentante della Divina Scuola di Hokuto. Ma ai tempi non lo sapevo.
Changed line 8 from:
In un gioco occorrono dei suoni, e anche delle musiche di sottofondo. Per quanto riguarda i suoni, sono andato su [[Freesound -> http://www.freesound.org/]] e ho scaricato un po' di roba interessante. Le musiche invece le ho tratte dalla colonna sonora originale del videogioco [["The Hunt for Red October" -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/]] uscito per C64 nel 1990. Gli autori sono [[Neil Crossley -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]] e [[Allister Brimble -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DAllister+Brimble]]. Ai tempi ero possessore di questo gioco, su cassetta, ma non trovo più la piacevole confezione. Ricordo che era veramente difficile. E avevo anche un altro gioco musicato da Neil Crossley, cioè [[Last Battle -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]], che altro non è che un gioco basato sulla seconda serie di Ken Shiro ma che in occidente è stato privato di ogni riferimento al rappresentante della Divina Scuola di Hokuto. Ma ai tempi non lo sapevo.
to:
In un gioco occorrono dei suoni, e anche delle musiche di sottofondo. Per quanto riguarda i suoni, sono andato su [[Freesound -> http://www.freesound.org/]] e ho scaricato un po' di roba interessante. Le musiche invece le ho tratte dalla colonna sonora originale del videogioco [["The Hunt for Red October" -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]] uscito per C64 nel 1990. Gli autori sono [[Neil Crossley -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]] e [[Allister Brimble -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DAllister+Brimble]]. Ai tempi ero possessore di questo gioco, su cassetta, ma non trovo più la piacevole confezione. Ricordo che era veramente difficile. E avevo anche un altro gioco musicato da Neil Crossley, cioè [[Last Battle -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]], che altro non è che un gioco basato sulla seconda serie di Ken Shiro ma che in occidente è stato privato di ogni riferimento al rappresentante della Divina Scuola di Hokuto. Ma ai tempi non lo sapevo.
Changed lines 38-40 from:
Le musiche verranno immagazzinate in una [['''EnumMap''' -> http://download.oracle.com/javase/6/docs/api/java/util/EnumMap.html]]. Questa è un tipo di collezione che permette di raccogliere oggetti indicizzati mediante i membri di un''''enum'''. In Java gli '''enum''' godono di considerazione speciale. Non sono solo delle liste di interi, ma sono delle [[vere e proprie classi -> http://download.oracle.com/javase/6/docs/api/java/lang/Enum.html]].

''...continua...''
to:
Le musiche verranno immagazzinate in una [['''EnumMap''' -> http://download.oracle.com/javase/6/docs/api/java/util/EnumMap.html]]. Questa è un tipo di collezione che permette di raccogliere oggetti indicizzati mediante i membri di un''''enum'''. In Java gli '''enum''' godono di considerazione speciale. Non sono solo delle liste di interi, ma sono delle [[vere e proprie classi -> http://download.oracle.com/javase/6/docs/api/java/lang/Enum.html]]. Creiamo quindi il nostro '''enum''':

public enum Musica {
TITOLO, LIVELLO_1, LIVELLO_BOSS, CREDITS
}

ed ecco anche la '''EnumMap''':

private EnumMap<Musica, Music> musiche;

Dal momento che ci saranno 4 suoni diversi per il sonar, e 3 diversi tipi di esplosione, usiamo un''''ArrayList''' per questi suoni, mentre usiamo variabili normali per gli altri:

private ArrayList<Sound> esplosioni;
private ArrayList<Sound> sonar;
private Sound lancioMissile;
private Sound bomba;

Ecco quindi come sarà il costruttore di '''SoundManager''':

private SoundManager() throws SlickException {
musiche = new EnumMap<Musica, Music>(Musica.class);

musiche.put(Musica.TITOLO, new Music("./data/Neil Crossley & A. Brimble
- The Hunt For Red October-1.ogg"));

musiche.put(Musica.LIVELLO_1, new Music("./data/Neil Crossley & A. Brimble
- The Hunt For Red October-2.ogg"));

musiche.put(Musica.LIVELLO_BOSS, new Music("./data/Neil Crossley & A. Brimble
- The Hunt For Red October-5.ogg"));

musiche.put(Musica.CREDITS, new Music("./data/Neil Crossley & A. Brimble
- The Hunt For Red October-6.ogg"));

esplosioni = new ArrayList<Sound>();
esplosioni.add(new Sound("./data/esplosione01.ogg"));
esplosioni.add(new Sound("./data/esplosione02.ogg"));
esplosioni.add(new Sound("./data/esplosione03.ogg"));

sonar = new ArrayList<Sound>();
sonar.add(new Sound("./data/sonar01.ogg"));
sonar.add(new Sound("./data/sonar02.ogg"));
sonar.add(new Sound("./data/sonar03.ogg"));
sonar.add(new Sound("./data/sonar04.ogg"));

lancioMissile = new Sound("./data/lanciomissile.ogg");

bomba = new Sound("./data/bomba.ogg");
}

'''Slick''' internamente usa [['''OpenAL''' -> http://connect.creativelabs.com/openal/default.aspx]] per gestire l'audio in modo multipiattaforma. La differenza tra '''Music''' e '''Sound''' è che ci può essere una sola musica alla volta, e che quindi un canale verrà dedicato ad essa, mentre i suoni vengono assegnati dinamicamente al primo canale libero (di solito ne vengono creati 64).

!!!Musica
Ci servono metodi per riprodurre una particolare musica, e per eseguirne il fadeout quando finisce un livello. Per fortuna il fadeout è già fornito da Slick:

public void playMusic(Musica which) {
this.playMusic(which, 1.0f);
}

public void playMusic(Musica which, float volume) {
musiche.get(which).loop(1.0f, volume);
}

public void fadeOutMusic(Musica which, int duration) {
musiche.get(which).fade(duration, 0.0f, true);
}

!!!Gli altri suoni
I '''Missili''' e le '''Bombe''' sono normali:

public void playMissile() {
lancioMissile.play();
}

public void playBomba() {
bomba.play();
}

Invece per quanto riguarda le '''Esplosioni''' e i '''Sonar''' decidiamo di riprodurre casualmente un suono ogni volta che ci viene chiesto, così da poter variegare un po' l'esperienza utente (wow):

public void playExplosion() {
esplosioni.get((int) (Math.random() * esplosioni.size())).play();
}

public void playSonar() {
sonar.get((int) (Math.random() * sonar.size())).play();
}

!!Utilizzo del SoundManager
È facile:

SoundManager.getInstance().playExplosion();

per esempio. Come abbiamo visto sopra, la prima volta che viene chiamata la '''getInstance''' verrà istanziato il singleton di '''SoundManager'''. Le volte successive invece verrà fornita la stessa istanza. Lascio a voi la decisione su dove e come far riprodurre i suoni. I sonar vengono suonati nel momento in cui un '''Sottomarino''', oppure l''''Ottobre Rosso''' entrano nello schermo.
Changed lines 7-40 from:
to:
!!Suoni
In un gioco occorrono dei suoni, e anche delle musiche di sottofondo. Per quanto riguarda i suoni, sono andato su [[Freesound -> http://www.freesound.org/]] e ho scaricato un po' di roba interessante. Le musiche invece le ho tratte dalla colonna sonora originale del videogioco [["The Hunt for Red October" -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/]] uscito per C64 nel 1990. Gli autori sono [[Neil Crossley -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]] e [[Allister Brimble -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DAllister+Brimble]]. Ai tempi ero possessore di questo gioco, su cassetta, ma non trovo più la piacevole confezione. Ricordo che era veramente difficile. E avevo anche un altro gioco musicato da Neil Crossley, cioè [[Last Battle -> http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/games/list.php%3Fmusician%3DNeil+Crossley]], che altro non è che un gioco basato sulla seconda serie di Ken Shiro ma che in occidente è stato privato di ogni riferimento al rappresentante della Divina Scuola di Hokuto. Ma ai tempi non lo sapevo.

[[Ecco i files -> Attach:sottomarino-suoni.zip]].

!!Istanza del SoundManager
Il '''SoundManager''' sarà la classe che si occuperà di gestire il suono. Caricherà i files e avrà metodi di comodo per riprodurre esplosioni, sonar e così via.

Dal momento che ci deve essere un'istanza unica per tutto il gioco, ho stabilito che la implementeremo mediante il [[design pattern del singleton -> http://it.wikipedia.org/wiki/Singleton]].

public class SoundManager implements MusicListener {

private static SoundManager soundManager = null;

Il '''MusicListener''' è un'interfaccia di '''Slick''', che tuttavia non useremo. Beh male non fa.

'''soundManager''' è l'istanza privata e statica del nostro '''SoundManager'''. Per avere un singleton, cioè una classe che potrà esistere solo in un'unica istanza, ci serve che il costruttore sia privato, il che vuol dire che la classe non sarà istanziabile pubblicamente. Quindi, per poter ottenere effettivamente questa istanza singola di '''SoundManager''', usiamo questo metodo:

public static SoundManager getInstance() {
if (soundManager == null) {
try {
soundManager = new SoundManager();
} catch (SlickException ex) {
Logger.getLogger(SoundManager.class.getName()).log(Level.SEVERE, null, ex);
}
}

return soundManager;
}

!!!Gestione delle musiche
Le musiche verranno immagazzinate in una [['''EnumMap''' -> http://download.oracle.com/javase/6/docs/api/java/util/EnumMap.html]]. Questa è un tipo di collezione che permette di raccogliere oggetti indicizzati mediante i membri di un''''enum'''. In Java gli '''enum''' godono di considerazione speciale. Non sono solo delle liste di interi, ma sono delle [[vere e proprie classi -> http://download.oracle.com/javase/6/docs/api/java/lang/Enum.html]].

''...continua...''
Added lines 1-12:
(:title Giochino del Sottomarino:)

<<|[[Giochino Sottomarino]]|>>

%titolo%''':: Giochino del Sottomarino - Suoni ::'''



<<|[[Giochino Sottomarino]]|>>

----
[[!Guide]]