xna game studio express - aula 03 - audio

Post on 15-Jul-2016

239 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Audio o XNA.

TRANSCRIPT

XNA Game Studio ExpressXNA Game Studio ExpressAula 3Aula 3

Uso de Audio com XACTUso de Audio com XACT

Alexandre Santos LobãoAlexandre Santos Lobãocontatocontato@@AlexandreLobaoAlexandreLobao.com.com

PPóós em Desenvolvimento s em Desenvolvimento de de Jogos EletrônicosJogos Eletrônicos -- IESB IESB

2

Agenda: Aula 3Agenda: Aula 3

Revisão Revisão -- DesenhoDesenho de de objetos objetos 2D2D

Uso de Audio com XACTUso de Audio com XACT

3

RevisãoRevisão: XNA Framework: XNA Framework

PlataformaPlataforma

CoreCore

FrameworkFramework

ExtendedExtended

FrameworkFramework

GamesGames

XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D

GraphicsGraphics AudioAudio InputInput MathMath StorageStorage

Application ModelApplication Model Content PipelineContent Pipeline

Starter KitsStarter Kits CCóódigodigo ConteConteúúdodo ComponentesComponentes

Legenda XNA ProvidesXNA Provides NNóós criamoss criamos ComunidadeComunidade

4

ArquiteturaArquitetura de umde um programaprograma XNAXNA

Ao Ao se se criar criar um um projetoprojeto, , são gerados dois arquivossão gerados dois arquivos::

Program.cs

Game1.cs

5

ArquiteturaArquitetura de umde um programaprograma XNAXNA

Program.cs

static void Main(string[] args)

{

using (Game1 game = new Game1())

{

game.Run(); -> Executa o Game Loop

}

}

6

ArquiteturaArquitetura de umde um programaprograma XNAXNA

Métodos chamados pela classe GameInitialize()

Onde se inicializam os recursos não gráficos

Chamados sempre que é necessário

LoadGraphicsContent(bool loadAllContent)

Onde se carregam os recursos gráficos

UnloadGraphicsContent(bool unloadAllContent)

Onde se libera, os recursos gráficos

Chamados a cada game loop

Update(GameTime gameTime)

Onde se coloca a lógica principal do jogo (cálculos)

Draw(GameTime gameTime)

Onde se colocam as rotinas de desenho do jogo

7

DesenhoDesenho dede objetosobjetos 2D2D

Na classe game 1:private Texture2D textura;

private SpriteBatch Renderizador2D;

No Método LoadGraphicsContent:textura = content.Load<Texture2D>("xna_thumbnail");

Renderizador2D = new SpriteBatch(graphics.GraphicsDevice);

No Método UnloadGraphicsContent:textura.Dispose();

Renderizador2D.Dispose();

No Método Draw:Renderizador2D.Begin(SpriteBlendMode.AlphaBlend);

Renderizador2D.Draw(textura, Vector2.One, Color.White);

Renderizador2D.End();

8

““ComponentsComponents”” de um gamede um game

1. Criar uma classe derivada de GameComponentclass clsSprite : GameComponent

{

public clsSprite(Game game, ...) : base(game)

..

public override void Update(GameTime gameTime)

..

}

2. Adicionar o objeto à lista de componentes do jogoprivate clsSprite Desenho2D;

Desenho2D = new clsSprite(this, ...)

this.Components.Add(Desenho2D);

9

TratamentoTratamento de input do de input do usuusuááriorio

1. Uso do GamePadGamePadState gamePad = GamePad.GetState(PlayerIndex.One);

novaPosicao.Y -= gamePad.ThumbSticks.Left.Y;

2. Uso do TecladoKeyboardState keyboardState = Keyboard.GetState();

if (keyboardState.IsKeyDown(Keys.Up))

novaPosicao.Y -= 1;

3. Uso do MouseMouseState mouse = Mouse.GetState();

novaPosicao.X = mouse.X;

10

Uso de Audio com XACTUso de Audio com XACT

Para que o som seja utilizável tanto no Windows quanto no Xbox 360, é necessário converter os sons em “Sound banks”,

Cada “Sound bank” é composto por “Wave banks”

Cada “Wave Bank” arnazena diversos arquivos (formato WAV ou AIF apenas)

Formatos mais “profissionais”, sem perda de informação como o MP3

11

Uso de Audio com XACTUso de Audio com XACT

Para incluir um som no jogo:

1. Gerar o arquivo de som XACT

2. Incluir o arquivo no jogo

3. Utilizar o som via Content Pipeline

12

Uso de Audio com XACTUso de Audio com XACT

1. Gerar o arquivo de som XACTcriar novo projeto no XACT

Inserir novo “Wave Bank” e novo “Sound Bank”

13

Uso de Audio com XACTUso de Audio com XACT

1. Gerar o arquivo de som XACTClicar com botão da direita no “Wave Bank”

Inserir arquivos WAV ou AIF no “Wave Bank”

14

Uso de Audio com XACTUso de Audio com XACT

1. Gerar o arquivo de som XACTArrastar sons do “Wave Bank” para o “Sound bank”

Setar propriedades do som a ser tocado (ex: “loop event” do evento “Play Wave”

15

Uso de Audio com XACTUso de Audio com XACT

2. Incluir o arquivo no jogoDa mesma forma como se incluem texturas

16

Uso de Audio com XACTUso de Audio com XACT3. Utilizar o som via Content Pipeline

Criação dos objetos// Audio objects

AudioEngine audioEngine;

WaveBank waveBank;

SoundBank soundBank;

protected override void Initialize()

{

audioEngine = new AudioEngine("MySounds.xgs");

// Assume the default names for the wave and sound bank.

// To change these names, change properties in XACT.

waveBank = new WaveBank(audioEngine, "Wave Bank.xwb");

soundBank = new SoundBank(audioEngine, "Sound Bank.xsb");

base.Initialize();

}

17

Uso de Audio com XACTUso de Audio com XACT

3. Utilizar o som via Content Pipeline

Gerar um efeito sonoro (som sem loop)soundBank.PlayCue("chord");

Tocar música de fundo (som com loop)// Iniciar a música

myLoopingSound = soundBank.GetCue("notify");

myLoopingSound.Play();

// Parar ou continuar a música

if (myLoopingSound.IsPaused)

myLoopingSound.Resume();

else

myLoopingSound.Pause();

18

Mais sobre Audio: Compressão

Por default, arquivos não são comprimidos pelo XACT – mas felizmente podemos comprimi-los!

Fonte:Professional XNA Game Programming: For Xbox 360 and Windows by Benjamin Nitschke

19

Mais sobre Audio: Compressão

Para comprimir um arquivo:

1. Criar novo “Compression Preset”

20

Mais sobre Audio: Compressão

2. Definir propriedades do Compression preset criado

21

Mais sobre Audio: Compressão

3. Escolher compressão para o arquivo WAV no WaveBank

22

Mais sobre Audio: Compressão

Exemplo de tipos de compressão

Compression File Size Compression

Rate

Uncompressed 36 MB 100%

MP3 with 192kbit 4.8 MB 13%

MP3 with 128kbit 3.1 MB 8.5%

AccPlus with 48kbit, similar to MP3 192kbit 1.2 MB 3%

AccPlus with 24kbit, similar to MP3 96kbit 0.6 MB 1.6%

OGG with 160kbit 3.8 MB 11%

XACT ADPCM 32 samples per block 12.5 MB 34%

XACT ADPCM 128 samples per block (default) 9.9 MB 27%

XACT ADPCM 512 samples per block 9.3 MB 26%

XACT XMA 100% Quality 14.3 MB 40%

XACT XMA 90% Quality 8.9 MB 25%

XACT XMA 75% Quality 5.5 MB 15%

XACT XMA 60% Quality (default) 4.7 MB 13%

XACT XMA 30% Quality 3.5 MB 10%

XACT XMA 10% Quality 2.9 MB 8%

Fonte:Professional XNA Game Programming: For Xbox 360 and Windows by Benjamin Nitschke

23

Mais sobre Audio: Uso de diversos samples

Basta criar diversos Sounds e arrastar mais de um para a mesma cue

24

Mais sobre Audio: Uso de Variáveis

1. Adicionar nova “Cue instance variable”

25

Mais sobre Audio: Uso de Variáveis

2. Adicionar variável à lista e informar seus detalhes

26

Mais sobre Audio: Uso de Variáveis

3. Adicionar novo RPC (Runtime ParameterControl) Preset

27

Mais sobre Audio: Uso de Variáveis

4. Informar detalhes sobre o RPC PresetParâmetro: Só pode controlar, na versão atual, Volume, Pitch (velocidade com que o som é tocado) e Reverberação (eco)

28

Mais sobre Audio: Uso de Variáveis

4. Informar detalhes sobre o RPC PresetVariable: selecionar a variável criada anteriormente

29

Mais sobre Audio: Uso de Variáveis

4. Informar detalhes sobre o RPC PresetAjustar gráfico de como a variável se relaciona ao parâmetro (de forma linear, na figura abaixo)

30

Mais sobre Audio: Uso de Variáveis

Uso no Programa:

SomMotor = soundBank.GetCue(“Motor");

SomMotor.Play();

...

// Aumentando a velocidade do som, ele parece

// mais agudo (como se o carro acelerasse)

// Velocidade 50 é a “padrão” do som

SomMotor.SetVariable(“Aceleracao", 75);

31

Desafio 1: Incluindo som no jogo

Pegar exemplo da aula um (com uso de input do usuário e detecção de colisão)

incluir música de fundo

Incluir som ao colidir

ATENÇÃO: Som só deve tocar uma vez “por colisão”(não repetir enquanto objetos estiverem colidindo / sobrepostos...)

32

Perguntas?Perguntas?

top related