giovedì 6 settembre 2012

JavaFX 2 Parte GameTutorial 5


Questo fa parte di una serie di cinque parte sei connesso ad un  2 JavaFX  gioco Tutorial . So che è passato molto tempo da quando ho bloggato su gioco, ma spero che tu sei ancora con me. Se volete un riassunto, si prega di leggere  parte 1 ,  parte 2 ,  parte 3 , e  parte 4  per scoprire dove avevamo lasciato. Se siete aggiornati, allora cominciamo! In questo blog ci sarà incorporare suoni nel nostro gioco.
Ci sono molti elementi che rendono i giochi incredibilmente divertenti come effetti animati, collisioni, IA, e di input. Tuttavia, uno degli ingredienti più importanti per il gioco è il suono . Quando giochi incorporano gli effetti sonori e la musica, il giocatore diventerà altamente immersi (ugh ... come non rendersi conto che state per vedere il sorgere del sole). Prima di entrare nei dettagli, mi permetta di darle un po 'di storia di base sul suono usato nei giochi per PC per il computer di casa. Se si desidera ignorare la storia e metterci al lavoro, passare alla sezione 'Manutenzione Sound Manager.' Il Servizio Sound Manager è responsabile per la salvaguardia del patrimonio sonori utilizzati durante il gioco. Se siete veramente impaziente e non si preoccupano dei dettagli di implementazione, saltate giù a 'Demo audio JavaFX.'Nota importante: Ricordati di leggere le condizioni prima di avviare la demo.
Storia
Se si vuole capire oggi, si deve cercare di ieri. ~ Pearl Buck 
Indietro nel giorno, quando ero piccolo, ho imparato che l'  Apple] [  computer era in grado di riprodurre suoni. L'Apple] [era un oratore che è stato solo in grado di produrre toni semplici (8 bit mono). Quando ho generato toni (Mary aveva un agnellino), la sua intensità. Se siete interessati in codice macchina utilizzando peek Applesoft di base e comandi di colpire di punta a comporre musica, visitare otto audio bit e Fury . Anche se 8 bit sembrava molto semplice (perché c'erano valori così pochi), non è stato.Durante la creazione di effetti sonori per i giochi, una delle cose più difficili da gestire è stato il tempo o la durata dei toni, in collaborazione con gli sprite che volano sullo schermo in un (quasi) della moda contemporanea. Negli anni '90 durante il regno di l'architettura Intel x86 (il PC), la scheda audio più popolare è stato chiamato il Sound Blaster 16  fatta da Tecnologie Creative. Nel suo primo, questa scheda audio era abbastanza incredibile durante la riproduzione di giochi, perché si trattava di una scheda a parte con un set di chip con la possibilità di riprodurre suoni midi e musica in stereo (due canali). La scheda audio è stato fornito con un lettore CD rom permettendo di pop in un CD musicale.Un'altra caratteristica della Sound Blaster è stato il suo 15-pin MIDI / Joystick multiporta che consente ai dispositivi di input di gioco da collegare. Oggi (il futuro), schede audio sono in grado di supportare il suono surround (effetti audio 3D), vari formati audio, registrazione, diversi formati musicali, midi, e miscelazione. Multitasking consente ai computer moderni per riprodurre i suoni / musica su binari paralleli (contemporaneamente).
Successivamente, sarà la creazione di un servizio di audio manager che verrà aggiunto al motore di gioco Framework ( JFXGen ).
Service Manager Suono
Il  GameWorld  classe contiene servizi come il gestore sprite e (più recentemente) un riferimento a un'istanza di un SoundManager (singleton). Il servizio di Sound Manager è responsabile della gestione di tutti gli effetti sonori del gioco. Questo servizio consente allo sviluppatore di caricare una traccia audio ( AudioClip ) utilizzando i loadSoundEffects ()  metodo. Dopo gli effetti sonori di carico ogni clip audio può essere recuperato utilizzando un ID univoco (String) mappato al suono. L'ultimo metodo è ilshutdown () metodo. Quando l'applicazione si esce, il metodo di arresto richiamerà il GameWorld 'sshutdown () metodo che, a sua volta, chiama il SoundManager arresto dell'oggetto per la pulizia di risorse. Il SoundManager istanza ha un pool di thread che viene con grazia arresto.
Nota:   Per brevità, ho progettato il SoundManager classe per riprodurre semplici clip audio, anche se non la musica, durante il gioco. Se si desidera aggiungere musica, si prega di fare riferimento al JavaDoc sulla  media MediaPlayer API.
Di seguito si riporta il SoundManager diagramma delle classi:
SoundManager Class Diagram
Figura 2: diagramma di classe del Sound Manager
Di seguito è riportato il codice sorgente per il SoundManager classe:

. 01package carlfx.gameengine;
02. 
03.importazione javafx.scene.media.AudioClip;
04. 
05.import java.net.URL;
. 06import java.util.HashMap;
07.importare java.util.Map;
. 08import java.util.concurrent.ExecutorService;
09.importazione java.util.concurrent.Executors;
10. 
11./ **
12.* Responsabile per il caricamento dei supporti audio da riprodurre con un id o una chiave.
13.* Contiene tutti i suoni per un uso successivo.
14.* </ pre>
15.<pre> * Utente: CDEA
16.* /
17.pubblico class SoundManager {
18.ExecutorService Soundpool = Executors.newFixedThreadPool ( );
19.Mappa <String, AudioClip> soundEffectsMap = nuovo HashMap <> ();
20. 
21./ **
22.* Costruttore di creare un pool di semplice filo.
23.*
24.* @ param numberOfThreads - numero di thread da utilizzare lettori multimediali nella mappa.
25.* /
26.pubblico SoundManager ( int numberOfThreads) {
27.Soundpool = Executors.newFixedThreadPool (numberOfThreads);
28.}
29. 
30./ **
31.* Inserire un suono in una mappa per poi essere riprodotti in base al id.
32.*
33.* @ param id - L'identificatore di un suono.
34.* @ param url - La posizione URL del contenuto multimediale o risorse audio. Di solito in src / main / directory delle risorse.
35.* /
36.pubblici vuoti loadSoundEffects (String id, URL url) {
37.sound AudioClip = nuovo AudioClip (url.toExternalForm ());
38.soundEffectsMap.put (id, suono);
39.}
40. 
41./ **
42.* Lookup una risorsa nome per riprodurre l'audio in base al id.
43.*
44.* @ param id identificativo per un suono da riprodurre.
45.* /
46.​​pubblico vuoto PlaySound ( finale id String) {
47.soundPlay Runnable = nuovo Runnable () {
48.@ Override
49.pubblico vuoto run () {
. 50. soundEffectsMap.get (id) play ();
51.}
52.};
53.soundPool.execute (soundPlay);
54.}
55. 
56./ **
57.* Arrestare tutte le discussioni e lettori multimediali.
58.* /
59.pubblico vuoto shutdown () {
. 60soundPool.shutdown ();
61.}
62. 
63.}

Come faccio a giocare effetti sonori in JavaFX?

In JavaFX 2, è possibile riprodurre i file audio di piccole dimensioni in modo efficiente con meno overhead utilizzando il AudioClip API. Questa API consente un suono da riprodurre ripetibile. Un esempio potrebbe essere un giocatore di tiro l'arma (premere tasto sinistro del mouse), che emette un suono laser "pew pew" A proposito di laser del gioco demo, ho usato un file audio gratuito dal sito web FreeSound.org avere la licenza Creative Commons. Dal momento che il file è stato un wav formato di file, era più grande di quello che doveva essere. Così, ho deciso di convertire il file in un formato audio mp3. Sentivo che era importante per ridurre le dimensioni del file (ingombro ridotto) per il caricamento più veloce.Quando si converte il file in un formato audio mp3, ho usato Sony Sound Forge software. Di seguito si riporta un frammento di codice per riprodurre file audio di piccole dimensioni:
vi
1.AudioClip sound = nuovo AudioClip ( "laser.mp3" );
2.Sound.play ();

Come faccio a riprodurre la musica in JavaFX?

Anche se il SoundManager (la mia implementazione) non riprodurre musica, è facile aggiungere la capacità. Il frammento di codice seguente viene illustrato come caricare un file MP3 da riprodurre utilizzando la media MediaPlayer API:

01.media media = nuovo Media ( "hymetojoy.mp3" );
02.MediaPlayer player = MediaPlayerBuilder.create ()
03.. media (media)
04.. onReady ( nuovo Runnable () {
05.@ Override
06.pubblico vuoto run () {
. 07player.play ();
08.})
09.build ().;
JavaFX Suono Demo
Requisiti :
  • Java 7 o versioni successive
  • JavaFX 2.1 o versione successiva
  • Windows XP o versioni successive (Dovrebbe essere presto disponibile per Linux / MacOS)
Un semplice tipo di gioco asteroide chiamato 'Attacco alla Terra'.
Istruzioni:
  • Cliccare col tasto destro del mouse (su Windows) per volare nave.
  • Clic del mouse sinistro (tasto sinistro del mouse su Windows) per arma da fuoco.
  • Premere il tasto '2 'per passare alla missili di grandi dimensioni. (Blu proiettili circolari)
  • Altre default premere il tasto per più piccoli missili. (Proiettili rossi circolari)
  • Premere la barra spaziatrice sceglierà un campo di forza per proteggere la nave dai nemici e asteroidi.
Fare clic sul pulsante Avvia per iniziare la demo:
Tutorial demo
Parte 5 del suono 'alla Terra'


Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.