xna game studio tutorial criando um jogo com xna em 1 hora

Post on 23-Feb-2016

61 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora. Alexandre Santos Lobão contato@AlexandreLobao.com. 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

TRANSCRIPT

XNA Game Studio

Tutorial Criando um jogo com XNA em 1 hora

Alexandre Santos Lobãocontato@AlexandreLobao.com

2

Quem sou eu?

www.alexandrelobao.com

2

3

Agenda

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

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

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

5

Technology

Canal de talentosUniversidade

Crescimento

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

7

Framework

Componentes do XNA Game Studio

Graphics Audio Input Math StorageNetwork

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

9

Arquitetura de um programa XNA

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

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

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

12

Tutorial – passo 1

Carregando texturasBola, tijolos e bastão

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();

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

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; }}

16

Tutorial – passo 2

Criando um game componentMovimentando a bola

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);

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;

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;

20

Tutorial – passo 3

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

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!

22

Tutorial – passo 4

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

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

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

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();}

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();

27

Tutorial – passo 5

Colocando som no jogoMúsica de fundo e efeitos sonoros

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();

29

Tutorial – passo 6

Escrevendo com XNANúmero de vidas, game over

Conclusões

32

E diversos “Starter Kits”…

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/

34

Livros

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

top related