35
XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora Alexandre Santos Lobão [email protected]

XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora

  • Upload
    bikita

  • View
    60

  • Download
    0

Embed Size (px)

DESCRIPTION

XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora. Alexandre Santos Lobão [email protected]. Quem sou eu?. Agenda. Visão Geral do XNA Tutorial – um jogo em 1 hora Gráficos Game Components Input Detecção de Colisão Sons Uso de fontes. Proposta. - PowerPoint PPT Presentation

Citation preview

Page 1: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

XNA Game Studio

Tutorial Criando um jogo com XNA em 1 hora

Alexandre Santos Lobã[email protected]

Page 2: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

2

Quem sou eu?

www.alexandrelobao.com

2

Page 3: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

3

Agenda

Visão Geral do XNATutorial – um jogo em 1 hora

GráficosGame ComponentsInputDetecção de ColisãoSons Uso de fontes

Page 4: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

4

Proposta

Iniciativa da Microsoft para facilitar e popularizar o desenvolvimento de jogos digitais, permitindo a sua

criação através de linguagem C# e ricas APIs de desenvolvimento

Page 5: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

5

Technology

Canal de talentosUniversidade

Crescimento

Page 6: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

6

XNA Game Studio

Desenvolvimento para Xbox 360Arquitetura simples para criação de jogos2006

2007

2008

Multiplayer, Visual StudioAdotado em 700 universidades americanas4 contratos XBLA na competição Dream Build Play

Jogos da comunidade no Xbox LIVEDesenvolvimento de jogos para ZuneSuporte ao Xbox LIVE Arcade

Page 7: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

7

Framework

Componentes do XNA Game Studio

Graphics Audio Input Math StorageNetwork

Page 8: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

8

Framework

XNA FrameworkCamadas

Framework(extensões) Modelo de Aplicação Pipeline de Conteúdo

(content pipeline)

Framework(núcleo) Graphics Audio Input Math Storage Network

Plataforma Direct3D XACT XINPUT XCONTENT

Jogos Starter Kits Código Conteúdo Componentes

Legenda XNA já provê Você cria Comunidade

Page 9: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

9

Arquitetura de um programa XNA

Ao se criar um projeto, são gerados dois arquivos:Program.csGame1.cs

Page 10: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

10

Arquitetura de um programa XNA

Métodos chamados pela classe GameInitialize()

Inicializações gerais do jogo

LoadContent()Chamado sempre que é necessário carregar os recursos (conteúdos)

UnloadContent()Chamado sempre que é necessário liberar os recursos (conteúdos)

A cada game loop:Update

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

Onde se colocam as rotinas de desenho do jogo

Page 11: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

11

XNA Framework - Graphics

Fornece recursos de renderização de baixo nívelConstruído em cima do Direct3D 9Recursos oferecidos

Model, Mesh, BonesTexturasEfeitos e Shaders

BasicEffect facilita apresentar objetos 3DSpriteBatch para 2D e partículas

Page 12: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

12

Tutorial – passo 1

Carregando texturasBola, tijolos e bastão

Page 13: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

13

Desenho de objetos 2D

Na classe game1: private Texture2D textura;

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

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

No Método Draw: SpriteBatch.Begin(SpriteBlendMode.AlphaBlend); SpriteBatch.Draw(textura, Vector2.One, Color.White); SpriteBatch.End();

Page 14: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

14

“Components” de um game

Coleção Components da Classe GameInforma ao XNA quais os componentes do jogoPassos para criar um componente:

1. Criar uma classe derivada de GameComponent2. Criar um objeto desta classe3. Adicionar o objeto ao Game usando:

this.Components.Add( objeto );

O XNA automaticamente chama os métodos Update e Draw do objeto, se existirem

Page 15: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

15

“Components” de um game

Uma classe derivada de GameComponent

class clsSprite : GameComponent{ public Texture2D textura; // sprite texture public Vector2 posicao; // sprite posicao on screen public Vector2 velocidade; // velocidade in pixels

public clsSprite(Game game, Texture2D Textura, Vector2 Posicao)

: base(game) { textura = Textura; posicao = Posicao; }}

Page 16: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

16

Tutorial – passo 2

Criando um game componentMovimentando a bola

Page 17: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

17

XNA Framework - Input

Xbox 360 controller

11 botões2 triggers (alavancas)2 direcionais analógicos1 direcional digitalDois motores de vibração

GamePadState state = GamePad.GetState(PlayerIndex.One);GamePad.SetVibration(PlayerIndex.One, 1.0f, 1.0f);

Page 18: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

18

Tratamento de input do usuário

Podemos ler o estado do GamePad... public override void Update(GameTime gameTime){ ... // Muda a posição usando o thumbstick da esquerda GamePadState gamePad = GamePad.GetState(PlayerIndex.One);

Posicao.X += gamePad.ThumbSticks.Left.X; Posicao.Y -= gamePad.ThumbSticks.Left.Y;

Page 19: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

19

Tratamento de input do usuário

2. Alterar o método Update para tratar o input do usuário - Teclado

public override void Update(GameTime gameTime){

... // muda a posição usando o teclado KeyboardState keyboardState = Keyboard.GetState();

if (keyboardState.IsKeyDown(Keys.Up)) Posicao.Y -= 10; if (keyboardState.IsKeyDown(Keys.Down)) Posicao.Y += 10; if (keyboardState.IsKeyDown(Keys.Left)) Posicao.X -= 10; if (keyboardState.IsKeyDown(Keys.Right)) Posicao.X += 10;

Page 20: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

20

Tutorial – passo 3

Recebendo input do usuárioControle do bastão com o gamepad

Page 21: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

21

Detecção de colisão

public bool Colidiu(clsSprite sprite){ // Verifica se colidiu com a sprite if (this.posicao.X + this.textura.Width > sprite.posicao.X && this.posicao.X < sprite.posicao.X + sprite.textura.Width && this.posicao.Y + this.textura.Height > sprite.posicao.Y && this.posicao.Y < sprite.posicao.Y + sprite.textura.Height) return true; else return false;}

Todo jogo precisa disso!

Page 22: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

22

Tutorial – passo 4

Detecção de colisãoFazendo a bola quicar no bastão e tijolos

Page 23: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

23

Uso 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

Page 24: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

24

Uso de Audio com XACT

Para incluir um som no jogo:1. Gerar o arquivo de som XACT2. Incluir o arquivo no jogo3. Utilizar o som via Content Pipeline

Page 25: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

25

Uso de Audio com XACTUtilizando sons via Content Pipeline

Criação dos objetos// Audio objectsAudioEngine audioEngine;WaveBank waveBank;SoundBank soundBank; protected override void Initialize(){ audioEngine = new AudioEngine("MySounds.xgs"); waveBank = new WaveBank(audioEngine, "Wave Bank.xwb"); soundBank = new SoundBank(audioEngine, "Sound Bank.xsb");  base.Initialize();}

Page 26: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

26

Uso de Audio com XACTUtilizando sons 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();

Page 27: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

27

Tutorial – passo 5

Colocando som no jogoMúsica de fundo e efeitos sonoros

Page 28: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

28

Uso de Fontes no XNA1. Incluir novo item do tipo “SpriteFont”

2. Configurar parâmetros da fonte<FontName>Arial</FontName><Size>14</Size><Spacing>2</Spacing><Style>Regular</Style><CharacterRegion> <Start>&#32;</Start> <End>&#126;</End>

3. Utilizar a fonteNa classe Game1.cs

SpriteFont fonteArial;

No método Initialize()fonteArial = content.Load<SpriteFont>("FonteArial");

No método Draw()mySpriteBatch.Begin();mySpriteBatch.DrawString(fonteArial, “Hello World!", Vector2.One, Color.Yellow);mySpriteBatch.End();

Page 29: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

29

Tutorial – passo 6

Escrevendo com XNANúmero de vidas, game over

Page 30: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

Conclusões

Page 32: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

32

E diversos “Starter Kits”…

Page 33: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

33

Por onde começar?

Baixe o XNA Game Studio hoje mesmo!Baixe essa apresentação e outros recursos XNA no SharpGames!

www.sharpgames.netComunidade brasileira para desenvolvimento de jogos!Artigos, links, downloads, XNA, DirectX, Projeto Hoshimi e muito mais!

XNA Developer Centerhttp://msdn.microsoft.com/xna/

XNA Creators Clubhttp://creators.xna.com/

Page 34: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

34

Livros

Page 35: XNA Game Studio  Tutorial  Criando  um  jogo  com XNA  em  1  hora

35

ALEXANDRE LOBÃOPROFESSOR DA PÓS-GRADUAÇÃO EM JOGOS ELETRÔNICOS DO IESB

COLUNISTA DA REVISTA OFICIAL DO XBOX 360ESCRITOR E ROTEIRISTA

www.AlexandreLobao.com