A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora"— Transcrição da apresentação:

1 XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora
Alexandre Santos Lobão

2 Quem sou eu?

3 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

4 4/7/2017 3:43 PM 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 Universidade Canal de talentos Technology Crescimento
4/7/2017 3:43 PM Universidade Canal de talentos Technology Crescimento

6 XNA Game Studio 2006 2007 2008 Desenvolvimento para Xbox 360
4/7/2017 3:43 PM XNA Game Studio 2006 Desenvolvimento para Xbox 360 Arquitetura simples para criação de jogos 2007 Multiplayer, Visual Studio Adotado em 700 universidades americanas 4 contratos XBLA na competição Dream Build Play 2008 Jogos da comunidade no Xbox LIVE Desenvolvimento de jogos para Zune Suporte ao Xbox LIVE Arcade

7 Componentes do XNA Game Studio
4/7/2017 3:43 PM Componentes do XNA Game Studio Framework Graphics Audio Input Math Storage Network

8 Pipeline de Conteúdo (content pipeline)
4/7/2017 3:43 PM XNA Framework Camadas Jogos Starter Kits Código Conteúdo Componentes Framework 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 Legenda XNA já provê Você cria Comunidade

9 Arquitetura de um programa XNA
Ao se criar um projeto, são gerados dois arquivos: Program.cs Game1.cs

10 Arquitetura de um programa XNA
Métodos chamados pela classe Game Initialize() 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
4/7/2017 3:43 PM XNA Framework - Graphics Fornece recursos de renderização de baixo nível Construído em cima do Direct3D 9 Recursos oferecidos Model, Mesh, Bones Texturas Efeitos e Shaders BasicEffect facilita apresentar objetos 3D SpriteBatch para 2D e partículas

12 Tutorial – passo 1 Carregando texturas Bola, tijolos e bastão

13 Desenho de objetos 2D Na classe game1: No Método LoadGraphics:
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 Game Informa ao XNA quais os componentes do jogo Passos para criar um componente: Criar uma classe derivada de GameComponent Criar um objeto desta classe 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 component Movimentando a bola

17 XNA Framework - Input Xbox 360 controller 11 botões
4/7/2017 3:43 PM XNA Framework - Input Xbox 360 controller 11 botões 2 triggers (alavancas) 2 direcionais analógicos 1 direcional digital Dois 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ário
Controle do bastão com o gamepad

21 Detecção de colisão Todo jogo precisa disso!
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; }

22 Tutorial – passo 4 Detecção de colisão
Fazendo 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:
Gerar o arquivo de som XACT Incluir o arquivo no jogo Utilizar o som via Content Pipeline

25 Uso de Audio com XACT Utilizando sons via Content Pipeline
Criação dos objetos // Audio objects AudioEngine 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(); } Utilizar o som via Content Pipeline

26 Uso de Audio com XACT Utilizando 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(); Utilizar o som via Content Pipeline

27 Tutorial – passo 5 Colocando som no jogo
Música de fundo e efeitos sonoros

28 Uso de Fontes no XNA Incluir novo item do tipo “SpriteFont”
Configurar parâmetros da fonte <FontName>Arial</FontName> <Size>14</Size> <Spacing>2</Spacing> <Style>Regular</Style> <CharacterRegion> <Start> </Start> <End>~</End> Utilizar a fonte Na 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 XNA Número de vidas, game over

30 Conclusões

31 Há diversas comunidades…
4/7/2017 3:43 PM Há diversas comunidades… Dezenas (centenas?) de comunidades ativas! Dezenas (centenas?) jogos – muitos com fonte aberto!

32 E diversos “Starter Kits”…
4/7/2017 3:43 PM 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! Comunidade brasileira para desenvolvimento de jogos! Artigos, links, downloads, XNA, DirectX, Projeto Hoshimi e muito mais! XNA Developer Center XNA Creators Club

34 Livros

35 Alexandre Lobão www.AlexandreLobao.com
4/7/2017 3:43 PM Alexandre Lobão Professor da pós-graduação em Jogos Eletrônicos do IESB Colunista da Revista Oficial do Xbox 360 Escritor e roteirista


Carregar ppt "XNA Game Studio Tutorial Criando um jogo com XNA em 1 hora"

Apresentações semelhantes


Anúncios Google