Вы находитесь на странице: 1из 32

XNA Game Studio Express

Aula 3

Uso de Audio com XACT

Alexandre Santos Lobo


contato@AlexandreLobao.com

Ps em Desenvolvimento de Jogos Eletrnicos - IESB

Agenda: Aula 3
Reviso - Desenho de objetos 2D
Uso de Audio com XACT

Reviso: XNA Framework


Games

Extended
Framework

Core
Framework

Contedo

Application Model

Graphics

Plataforma

Legenda

Cdigo

Starter Kits

XNA Provides

Content Pipeline

Audio

Direct3D

Ns criamos

Componentes

Input

XACT

Comunidade

Math

XINPUT

Storage

XContent

Arquitetura de um programa XNA


Ao se criar um projeto, so gerados dois arquivos:
Program.cs
Game1.cs

Arquitetura de um programa XNA


Program.cs
static void Main(string[] args)
{
using (Game1 game = new Game1())
{
game.Run(); -> Executa o Game Loop
}
}

Arquitetura de um programa XNA


Mtodos chamados pela classe Game
Initialize()
Onde se inicializam os recursos no grficos

Chamados sempre que necessrio


LoadGraphicsContent(bool loadAllContent)
Onde se carregam os recursos grficos

UnloadGraphicsContent(bool unloadAllContent)
Onde se libera, os recursos grficos

Chamados a cada game loop


Update(GameTime gameTime)
Onde se coloca a lgica principal do jogo (clculos)

Draw(GameTime gameTime)
Onde se colocam as rotinas de desenho do jogo
6

Desenho de objetos 2D
Na classe game 1:
private Texture2D textura;
private SpriteBatch Renderizador2D;

No Mtodo LoadGraphicsContent:
textura = content.Load<Texture2D>("xna_thumbnail");
Renderizador2D = new SpriteBatch(graphics.GraphicsDevice);

No Mtodo UnloadGraphicsContent:
textura.Dispose();
Renderizador2D.Dispose();

No Mtodo Draw:
Renderizador2D.Begin(SpriteBlendMode.AlphaBlend);
Renderizador2D.Draw(textura, Vector2.One, Color.White);
Renderizador2D.End();
7

Components de um game
1. Criar uma classe derivada de GameComponent
class clsSprite : GameComponent
{
public clsSprite(Game game, ...) : base(game)
..
public override void Update(GameTime gameTime)
..
}

2. Adicionar o objeto lista de componentes do jogo


private clsSprite Desenho2D;
Desenho2D = new clsSprite(this, ...)
this.Components.Add(Desenho2D);

Tratamento de input do usurio


1. Uso do GamePad
GamePadState gamePad = GamePad.GetState(PlayerIndex.One);
novaPosicao.Y -= gamePad.ThumbSticks.Left.Y;

2. Uso do Teclado
KeyboardState keyboardState = Keyboard.GetState();
if (keyboardState.IsKeyDown(Keys.Up))
novaPosicao.Y -= 1;

3. Uso do Mouse
MouseState mouse = Mouse.GetState();
novaPosicao.X = mouse.X;
9

Uso de Audio com XACT


Para que o som seja utilizvel tanto no
Windows quanto no Xbox 360, necessrio
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
informao como o MP3

10

Uso 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

11

Uso de Audio com XACT


1. Gerar o arquivo de som XACT
criar novo projeto no XACT
Inserir novo Wave Bank e novo Sound Bank

12

Uso de Audio com XACT


1. Gerar o arquivo de som XACT
Clicar com boto da direita no Wave Bank
Inserir arquivos WAV ou AIF no Wave Bank

13

Uso de Audio com XACT


1. Gerar o arquivo de som XACT
Arrastar sons do Wave Bank para o Sound bank
Setar propriedades do som a ser tocado (ex: loop event do
evento Play Wave

14

Uso de Audio com XACT


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

15

Uso de Audio com XACT


3. Utilizar o som via Content Pipeline
Criao 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();
}
16

Uso de Audio com XACT


3. Utilizar o som via Content Pipeline
Gerar um efeito sonoro (som sem loop)
soundBank.PlayCue("chord");

Tocar msica de fundo (som com loop)


// Iniciar a msica
myLoopingSound = soundBank.GetCue("notify");
myLoopingSound.Play();
// Parar ou continuar a msica
if (myLoopingSound.IsPaused)
myLoopingSound.Resume();
else
myLoopingSound.Pause();
17

Mais sobre Audio: Compresso


Por default, arquivos no so comprimidos pelo XACT
mas felizmente podemos comprimi-los!

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

18

Mais sobre Audio: Compresso


Para comprimir um arquivo:
1. Criar novo Compression Preset

19

Mais sobre Audio: Compresso


2. Definir propriedades do Compression preset
criado

20

Mais sobre Audio: Compresso


3. Escolher compresso para o arquivo WAV
no WaveBank

21

Mais sobre Audio: Compresso


Exemplo de tipos de compresso
Compression

File Size

Uncompressed
MP3 with 192kbit
MP3 with 128kbit
AccPlus with 48kbit, similar to MP3 192kbit
AccPlus with 24kbit, similar to MP3 96kbit
OGG with 160kbit
XACT ADPCM 32 samples per block
XACT ADPCM 128 samples per block (default)

36 MB
4.8 MB
3.1 MB
1.2 MB
0.6 MB
3.8 MB
12.5 MB
9.9 MB

Compression
Rate
100%
13%
8.5%
3%
1.6%
11%
34%
27%

XACT ADPCM 512 samples per block


XACT XMA 100% Quality
XACT XMA 90% Quality
XACT XMA 75% Quality
XACT XMA 60% Quality (default)
XACT XMA 30% Quality
XACT XMA 10% Quality

9.3 MB
14.3 MB
8.9 MB
5.5 MB
4.7 MB
3.5 MB
2.9 MB

26%
40%
25%
15%
13%
10%
8%

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

22

Mais sobre Audio: Uso de diversos


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

23

Mais sobre Audio: Uso de Variveis


1. Adicionar nova Cue instance variable

24

Mais sobre Audio: Uso de Variveis


2. Adicionar varivel lista e informar seus
detalhes

25

Mais sobre Audio: Uso de Variveis


3. Adicionar novo RPC (Runtime Parameter
Control) Preset

26

Mais sobre Audio: Uso de Variveis


4. Informar detalhes sobre o RPC Preset
Parmetro: S pode controlar, na verso atual, Volume, Pitch
(velocidade com que o som tocado) e Reverberao (eco)

27

Mais sobre Audio: Uso de Variveis


4. Informar detalhes sobre o RPC Preset
Variable: selecionar a varivel criada anteriormente

28

Mais sobre Audio: Uso de Variveis


4. Informar detalhes sobre o RPC Preset
Ajustar grfico de como a varivel se relaciona ao parmetro (de forma
linear, na figura abaixo)

29

Mais sobre Audio: Uso de Variveis


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 padro do som
SomMotor.SetVariable(Aceleracao", 75);
30

Desafio 1: Incluindo som no jogo


Pegar exemplo da aula um (com uso de input
do usurio e deteco de coliso)
incluir msica de fundo
Incluir som ao colidir
ATENO: Som s deve tocar uma vez por coliso
(no repetir enquanto objetos estiverem colidindo /
sobrepostos...)

31

Perguntas?

32

Вам также может понравиться