curso (2010) - desenvolvimento de jogos 2d com xna
TRANSCRIPT
![Page 1: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/1.jpg)
Desenvolvimento de Jogos 2D com XNA
Kleber de Oliveira Andrade
Universidade de São Paulo – USP
Escola de Engenharia de São Carlos – EESCDepartamento de Dinâmica de Sistemas e Controles
Maio/2010
![Page 2: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/2.jpg)
• Bacharel em Ciência da Computação– Escola de Engenharia de Piracicaba (EEP)
– Título: Um algoritmo evolutivo para adaptação dos NPCs em um jogo de ação.
• Mestrando em Engenharia Mecânica– Escola de Engenharia de São Carlos (USP/EESC)
– Título: Planejadores neurais para manobra de baliza de um automóvel de passeio utilizando sensor laser, ultrassônicos e visão artificial.
• Jogador a mais de 20 anos desde a época do Atari.
2010 © Kleber de Oliveira Andrade 2
![Page 3: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/3.jpg)
• Uma breve Introdução
• A Indústria de Jogos Digitais
• Visão sobre o XNA
• Conhecimentos básicos de XNA
• Revisão de Programação C#
• Criando um Jogo 2D completo
32010 © Kleber de Oliveira Andrade
![Page 4: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/4.jpg)
2010 © Kleber de Oliveira Andrade 4
![Page 5: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/5.jpg)
2010 © Kleber de Oliveira Andrade 5
1958: “Tennis for Two” jogo quefuncionava em um osciloscópio(Willy Higinbotham)
1961: “Space Wars” jogodesenvolvido no computadorPDP-1 por Steve Russel, o jogotinha 2Kb
![Page 6: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/6.jpg)
2010 © Kleber de Oliveira Andrade 6
1979: Asteroids
Donkey Kong (1984)
Wolf 3D (1992)
Década de 70 é considerada uma OdisséiaComercial, muitos jogos foram desenvolvidos.
Depois do Crash da Indústriaem 1983/84, surgiu umarevolução nos jogos
A década de 90,muitos consolesforam lançados e em1992 uma novaevolução com osjogos FPS.
![Page 7: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/7.jpg)
2010 © Kleber de Oliveira Andrade 7
God of War III
X Games SnoCross
Qualidade gráfica evidência aevolução no desenvolvimento dejogos, assim como sua InteligênciaArtificial.
Jogos que envolvem centenas deprofissionais das mais diversasáreas, e altos orçamentos.
![Page 8: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/8.jpg)
• A discussão não se restringe apenas à gráficos ou inteligência artificial.
• O que esperar então ?
– Facilidade de criação ?
– Comunidades ?
– Interface com o jogador ?
– Inovação?
– Prazer de jogar por horas e horas ?
2010 © Kleber de Oliveira Andrade 8
![Page 9: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/9.jpg)
2010 © Kleber de Oliveira Andrade 9
The Harvest 3 Racing Game City Rain
![Page 10: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/10.jpg)
2010 © Kleber de Oliveira Andrade 10
![Page 11: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/11.jpg)
• É uma das mais rentáveis do mundo
– Faturamentos de 2007 supera a indústria de música e cinema juntos.
• Parece coisa de criança, mas não é.
– 75% dos chefes de família jogam
– Média de idade de jogadores: 30 anos
– Média de idade de compradores: 37 anos
2010 © Kleber de Oliveira Andrade 11
Dados da ESA (“2008 video-game indutry facts”), http://www.theesa.com
![Page 12: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/12.jpg)
• Serious Game (Treinamento e Capacitação)
2010 © Kleber de Oliveira Andrade 12
Blossom
BattlezoneEconorte (Oniria)
![Page 13: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/13.jpg)
• Advergames (Propagandas)
2010 © Kleber de Oliveira Andrade 13
1993 - Cool Spot (7-Up)
1990 - Yo! Noid (Domino’s Pizza)
1983 - Pepsi Invaders
Rooftop Racer
![Page 14: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/14.jpg)
• Educacionais (Jogos cujo objetivo é ensinar)
2010 © Kleber de Oliveira Andrade 14
Project Beauty Alice
Big Brain Academy: Wii Degree
![Page 15: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/15.jpg)
• “God” games (Softwares Toys)
2010 © Kleber de Oliveira Andrade 15
Black & White
The Sims
![Page 16: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/16.jpg)
• Criar jogos demanda muito conhecimento técnico.
• Acesso aos Kits de desenvolvimento– Restrito– Caro– Complexo
• Desenvolver para qual plataforma?
• Faltavam comunidades!
• Quais as chances de sucesso para quem esta começando?
2010 © Kleber de Oliveira Andrade 16
![Page 17: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/17.jpg)
2010 © Kleber de Oliveira Andrade 17
![Page 18: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/18.jpg)
Xna Não é um Acrônimo
2010 © Kleber de Oliveira Andrade 18
![Page 19: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/19.jpg)
2010 © Kleber de Oliveira Andrade 19
![Page 20: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/20.jpg)
• Para desenvolver / jogar no PC
– Nenhum!
– Tudo através de ferramentas gratuitas (Visual C# Express Edition, XNA Game Studio e recursos da comunidade).
• Para desenvolver / jogar no Xbox 360.
– Licença XNA Creators Club• US$ 99,00 por ano ou
• US$ 49,00 por 4 meses
2010 © Kleber de Oliveira Andrade 20
![Page 21: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/21.jpg)
• Principal API utilizada pra desenvolvimento de jogo
• Aplicativos desenvolvidos em C++
• Desenvolvimento para Windows
• API construída sobre o DirectX
• Jogos desenvolvidos com linguagens .NET
• Desenvolvimento para plataforma Windows
• API construída utilizando como base o MDX (substituiu o MDX)
• Aplicativos desenvolvidos em C#
• Desenvolvimento para Windows, Xbox 360 e Zune
2010 © Kleber de Oliveira Andrade 21
![Page 22: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/22.jpg)
2010 © Kleber de Oliveira Andrade 22
Jogos
Extended
Framework
Core
Framework
Plataforma
Starter Kits Code Content Components
Application Model Content Pipeline
Graphics Audio Input Math Storage
Direct3D XACT XINPUT XCONTENT
XNA Provê Você cria ComunidadeLegenda:
Network
![Page 23: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/23.jpg)
2010 © Kleber de Oliveira Andrade 23
Jogos
Extended
Framework
Core
Framework
Plataforma
Starter Kits Code Content Components
Application Model Content Pipeline
Direct3D XACT XINPUT XCONTENT
Graphics Audio Input Math Storage Network
![Page 24: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/24.jpg)
Modifique os jogos e crie o seu próprio
2010 © Kleber de Oliveira Andrade 24
![Page 25: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/25.jpg)
2010 © Kleber de Oliveira Andrade 25
Jogos
Extended
Framework
Core
Framework
Plataforma
Starter Kits Code Content Components
Application Model Content Pipeline
Direct3D XACT XINPUT XCONTENT
Graphics Audio Input Math Storage Network
![Page 26: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/26.jpg)
Mantenha-se focado no jogo e não em qual plataforma está rodando
• Faz o serviço chato e trabalhoso para você
• Desenvolvimento acelerado
• Possui recursos avançados
• Extensível
• Game
2010 © Kleber de Oliveira Andrade 26
![Page 27: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/27.jpg)
• Liberdade de escolha
– Ferramentas de criação de conteúdo
– Game engines
• Menos código para a criação
– Mais tempo para a criação do jogo
• Forte integração entre código e conteúdo
– Build de código e de conteúdo unificados
2010 © Kleber de Oliveira Andrade 27
![Page 28: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/28.jpg)
2010 © Kleber de Oliveira Andrade 28
![Page 29: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/29.jpg)
2010 © Kleber de Oliveira Andrade 29
Jogos
Extended
Framework
Core
Framework
Plataforma
Starter Kits Code Content Components
Application Model Content Pipeline
Direct3D XACT XINPUT XCONTENT
Graphics Audio Input Math Storage Network
![Page 30: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/30.jpg)
• Fornece recursos de renderização de baixo nível
• Construído em cima do Direct3D 9
• APIs atualizadas que seguem as regras do .NET– Efeitos– Recursos– Lock / Unlock– Vertex streams
• Recursos fornecidos– Model, Mesh e Bones– Textures– Effects e Shaders
2010 © Kleber de Oliveira Andrade 30
![Page 31: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/31.jpg)
• Baseado no XACT (Cross-Platform Audio CreationTool)– Adiciona sons
– Ajusta propriedades
– Construir bancos de sons
• Fácil integração para desenvolvedores– Acesse-os via seus nomes lógicos
– Looping, streaming, e gerenciamento de memória
– Sem gerenciamento de buffer de baixo nível
2010 © Kleber de Oliveira Andrade 31
![Page 32: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/32.jpg)
• Torna fácil a obtenção de dados de entrada
• Dispositivos– Keyboard
– Mouse (apenas para Windows)
– Xbox 360 (Gamepad, guitarra, tambores, volantes, etc...)
• Modelo de programação imediato– Não demanda inicialização
– Não demanda gerenciamento de estados
– Basicamente tira uma fotografia dos estados de todos os botões
2010 © Kleber de Oliveira Andrade 32
![Page 33: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/33.jpg)
• Fornece um jeito fácil para ler e salvar informações do jogo
• Atua como um sistema de arquivos virtuais– Arquivos armazenados no local correto de cada plataforma
– Suporta múltiplos dispositivos de armazenamento e perfis no Xbox 360
• Baseado em Streams, o que facilita a integração com o System.IO
2010 © Kleber de Oliveira Andrade 33
![Page 34: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/34.jpg)
• Biblioteca de funções matemáticas para jogos– Vector, Matriz, Quaternion, Plane, AABB, Sphere, Ray,
Frustum, Curve
– Regra-da-mão-direita por default
– Fácil integração
– Testes de interesecções
– Facilitadores para movimentos
2010 © Kleber de Oliveira Andrade 34
![Page 35: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/35.jpg)
• Conexão entre Xbox 360 e PC
• Conexão local e via LIVE!
• Inclui suporte a LIVE! MatchMaking– Conecta você a pessoas com perfil semelhantes
• Na versão 3.1– Ranked matchmaking– Venda de jogos na Live Community!– Conexão de até 8 Zunes em rede ad-hoc
2010 © Kleber de Oliveira Andrade 35
![Page 36: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/36.jpg)
2010 © Kleber de Oliveira Andrade 36
Jogos
Extended
Framework
Core
Framework
Plataforma
Starter Kits Code Content Components
Application Model Content Pipeline
Graphics Audio Input Math Storage
Direct3D XACT XINPUT XCONTENT
![Page 37: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/37.jpg)
2010 © Kleber de Oliveira Andrade37
Skinning & Animation
3D Particles
Distortion
Shatter Effects
![Page 38: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/38.jpg)
• AbduX
– Jogo completo, feito em 4 dias, por 1 pessoa
– Explora recursos gráficos, sons, input e fontes no XNA além de reconhecimento de voz
2010 © Kleber de Oliveira Andrade 38
![Page 39: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/39.jpg)
• Dungeon Quest
– Desenvolvido em apenas 4 dias
– Equipe: 1 desenvolvedor e 1 designer
2010 © Kleber de Oliveira Andrade 39
![Page 40: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/40.jpg)
2010 © Kleber de Oliveira Andrade 40
![Page 41: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/41.jpg)
2010 © Kleber de Oliveira Andrade 41
![Page 42: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/42.jpg)
• Para desenvolver:– Windows XP SP2 ou superior
– Visual C# 2008 Expresse Edition ou versão Professional
– Runtime do DirectX
• Para rodar:– Placa de vídeo compatível com DirectX 9.0 e Shaders 2.0
– Runtime do XNA e do DirectX
– PC: Windows XP SP2 ou superior
– Xbox 360: deve haver HD
– Zune: pronto para rodar!
2010 © Kleber de Oliveira Andrade 42
![Page 43: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/43.jpg)
• É uma ferramenta de desenvolvimento (IDE) criada pelaMicrosoft.
• Sua interface é simples e intuitiva.
• Muito recomendada para usuários iniciantes emprogramação na linguagem C#.
• A versão Express não tem custo e você pode registrá-la.
– Visual C# 2008 Express Edition
2010 © Kleber de Oliveira Andrade 43
![Page 44: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/44.jpg)
• O XNA é um framework gratuito e robusto cominterface amigável desenvolvido pela Microsoft paracriar jogos tanto para PC quanto para o console XBox360.
– XNA 3.1 (lançada em 03/07/2009)
• Ao concluir o download do XNA 3.1 é hora deinstalar. Após possuir o XNA instalado em seucomputado, chega a hora de ver se tudo estáfuncionando corretamente.
2010 © Kleber de Oliveira Andrade 44
![Page 45: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/45.jpg)
• File New Project
2010 © Kleber de Oliveira Andrade 45
Solution Explorer
![Page 46: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/46.jpg)
• Após criar seu novo projeto, você já pode testá-lo.
• Para isso, aperte F5.
• Se tudo der certo, espera-se o seguinte resultado.
2010 © Kleber de Oliveira Andrade 46
![Page 47: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/47.jpg)
2010 © Kleber de Oliveira Andrade 47
Initialize() LoadContent() Update()
Draw()UnloadContent()
Game Loop
Término da aplicação
![Page 48: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/48.jpg)
2010 © Kleber de Oliveira Andrade 48
![Page 49: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/49.jpg)
• Pasta Content, botão direito do mouse... Add -> Existing Item
• Criar uma variável do tipo Texture2D Texture2D image;
• Carregar a imagem (método LoadContent)image = Content.Load<Texture2D>(“fantasma”);
• Desenhar a imagem na tela (método Draw)spriteBatch.Begin();spriteBatch.Draw(imagem, new Vector(100.0f, 100.0f), Color.White);spriteBatch.End();
2010 © Kleber de Oliveira Andrade 49
![Page 50: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/50.jpg)
• Espera-se obter o seguinte resultado ao compilar o exemplo.
2010 © Kleber de Oliveira Andrade 50
![Page 51: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/51.jpg)
• Adicione duas novas variáveis.Vector2 position = new Vector2(100.0f, 100.0f);KeyboardState keyState;
• No método Draw, troque new Vector2(100.0f, 100.0f) pela variável position que criamos.
• No método Update, adicione as seguintes linhas
keyState = Keyboard.GetState();
if (keysboardState.IsKeyDown(Keys.Up)) position.Y -= 5.0f; if (keysboardState.IsKeyDown(Keys.Down)) position.Y += 5.0f; if (keysboardState.IsKeyDown(Keys.Left)) position.X -= 5.0f;if (keysboardState.IsKeyDown(Keys.Right)) position.X += 5.0f;
2010 © Kleber de Oliveira Andrade 51
![Page 52: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/52.jpg)
• Comente as linhas do método Update que manipulam a imagem com o teclado.
• Adicione uma variável de estado para o mouseMouseState mState;
• No método Update digite.mState = Mouse.GetState();position.X = mState.X - image.Width / 2;position.Y = mState.Y - image.Height / 2;
• Para fazer a seta aparecer coloque no Initialize.IsMouseVisible = true;
2010 © Kleber de Oliveira Andrade 52
![Page 53: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/53.jpg)
• Add -> New Item
2010 © Kleber de Oliveira Andrade 53
![Page 54: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/54.jpg)
• É gerado um arquivo xml. Mude a seguinte informação dele<FontName>Arial</FontName>
• Crie uma variável do tipo SpriteFontSpriteFont sFont;
• Carregue a font que você criou no método LoadContentsFont = Content.Load<SpriteFont>(“fontArial”);
• Escreva as informações na tela dentro do método Draw, entre os comandos Begin() e End()
spriteBatch.DrawString(sFont, "X = " + position.X.ToString(), newVector2(10.0f, 10.0f), Color.White);
spriteBatch.DrawString(sFont, "Y = " + position.Y.ToString(), newVector2(10.0f, 30.0f), Color.White);
2010 © Kleber de Oliveira Andrade 54
![Page 55: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/55.jpg)
• Espera-se obter o seguinte resultado ao compilar o exemplo.
2010 © Kleber de Oliveira Andrade 55
![Page 56: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/56.jpg)
• Adicione as seguintes linhas após fazer osmovimentos do personagem.
2010 © Kleber de Oliveira Andrade 56
![Page 57: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/57.jpg)
• Adicione a música na pasta Content do seu projeto
Add -> Existent Item
• Declare uma variável do tipo Song
Song music;
• Carregar a música no LoadContent
music = Content.Load<Song>(“music”);
2010 © Kleber de Oliveira Andrade 57
![Page 58: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/58.jpg)
• Para tocar a música digite o seguinte código também no LoadContent
MediaPlayer.Play(music);
• Para fazer a música ficar em loop infinito digite:
MediaPlayer.IsRepeating = true;
2010 © Kleber de Oliveira Andrade 58
![Page 59: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/59.jpg)
• Adicione o efeito sonoro na pasta Content do seu projeto
Add -> Existent Item
• Declare uma variável do tipo SoundEffect
SoundEffect collision;
• Carregar a música no LoadContent
collision = Content.Load<SoundEffect>(“collision”);
2010 © Kleber de Oliveira Andrade 59
![Page 60: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/60.jpg)
• Declare uma váriavel de colisão como booleanabool collsion;
• No método Update, deixe collision sempre comofalso e quando acontecer uma colisão do fantasmacom a parede troque o valor para verdadeiro.
• Então verifica se collision é verdadeiro e toque osom.
if (collision) sound.Play();
2010 © Kleber de Oliveira Andrade 60
![Page 61: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/61.jpg)
2010 © Kleber de Oliveira Andrade 61
Centro C2 Centro C1
Raio r2 Raio r1
Existe colisão se:dist(c1,c2) < r1 + r2
Colisão em X Colisão em Y
Colisão completa
![Page 62: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/62.jpg)
• GameComponent– Automatiza alguma métodos sobrecarregando-os, menos a
parte de desenho
– Exemplo prático
• DrawableGameComponent– Automatiza alguma métodos sobrecarregando-os, inclusive
a parte de desenho
– Exemplo prático
• GameServices– Disponibiliza serviços de objetos para outras classes
– Exemplo prático
2010 © Kleber de Oliveira Andrade 62
![Page 63: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/63.jpg)
2010 © Kleber de Oliveira Andrade 63
![Page 64: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/64.jpg)
• A Linguagem C#:
– É uma linguagem orientada a objeto, moderna, desenhadaa fim de aumentar a produtividade do programador. C# éutilizado por milhares de programadores e analistas eprovê acesso total a tecnologia utilizando o .NetFramework, O Compact Framework e mais recentemente oXNA Framework
2010 © Kleber de Oliveira Andrade 64
![Page 65: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/65.jpg)
• namespace – é usada para declarar um escopo. Este escopo permite você organizar o código e oferece uma maneira parar criar tipos exclusivos.
652010 © Kleber de Oliveira Andrade
![Page 66: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/66.jpg)
• #region e #endregion – directiva para incluir umaregião dentro do código, facilitando a vida doprogramador, podendo este visualizar apenas ocódigo de interesse no momento.
662010 © Kleber de Oliveira Andrade
![Page 67: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/67.jpg)
• Comentários – /* ... */ e //
672010 © Kleber de Oliveira Andrade
![Page 68: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/68.jpg)
• Using – mesmo conceito do #include da linguagem C/C++ ou import da linguagem Java
682010 © Kleber de Oliveira Andrade
com using
sem using
![Page 69: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/69.jpg)
• Variáveis:
692010 © Kleber de Oliveira Andrade
Tipos C# Valores possíveis de se armazenar
bool true ou false (valores booleanos)
byte 0 a 255 (8 bits)
sbyte -128 a 127 (8 bits)
char Um caractere qualquer (16 bits)
decimal ±1.0 x 10-28 a ±7.9 x 1028 (128 bits)
double ±5.0 x 10-324 a ±1.7 x 10308 (64 bits)
float ±1.5 x 10-45 a ±3.4 x 1038 (32 bits)
int -2,147,483,648 a 2,147,483,647 (32 bits)
uint 0 a 4,294,967,295 (32 bits)
long -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 (64 bits)
ulong 0 a 18,446,744,073,709,551,615 (64 bits)
object Qualquer tipo
short -32,768 a 32,767 (16 bits)
ushort 0 a 65,535 (16 bits)
string Seqüência de caracteres (16 bits por caractere)
![Page 70: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/70.jpg)
• Operadores
2010 © Kleber de Oliveira Andrade 70
Category Operator(s) Associativity
Primary (x) x.y f(x) a[x] x++ x- - new typeof sizeof checked unchecked Left
Unary + - ! ~ ++x - -x (T)x Left
Multiplicative * / % Left
Additive + - Left
Shift << >> Left
Relational < > <= >= is Left
Equality == != Right
Logical AND & Left
Logical XOR ^ Left
Logical OR | Left
Conditional AND && Left
Conditional OR || Left
Ternary ? : Right
Assignment = *= /= %= += -= <<= >>= &= ^= |= Right
![Page 71: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/71.jpg)
• Vetores Multidimensionais (arrays):
712010 © Kleber de Oliveira Andrade
![Page 72: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/72.jpg)
• Entrada e Saída padrão:
722010 © Kleber de Oliveira Andrade
![Page 73: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/73.jpg)
• Estrutura condicional IF/ELSE:
732010 © Kleber de Oliveira Andrade
![Page 74: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/74.jpg)
• Laço de repetição FOR:
742010 © Kleber de Oliveira Andrade
![Page 75: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/75.jpg)
• Laço de repetição WHILE:
752010 © Kleber de Oliveira Andrade
![Page 76: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/76.jpg)
• Laço de repetição FOREACH:– O laço foreach é usado quando queremos percorrer todos os
elementos de um array (matriz) ou de coleções de dados, tais comouma ArrayList.
762010 © Kleber de Oliveira Andrade
![Page 77: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/77.jpg)
• Listas:
772010 © Kleber de Oliveira Andrade
![Page 78: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/78.jpg)
• Tratamento de erros:
782010 © Kleber de Oliveira Andrade
![Page 79: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/79.jpg)
• Classes
• Construtor
• Atributos e métodos
792010 © Kleber de Oliveira Andrade
![Page 80: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/80.jpg)
• Herança, Polimorfismo, Encapsulamento e Enumeradores.
802010 © Kleber de Oliveira Andrade
![Page 81: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/81.jpg)
2010 © Kleber de Oliveira Andrade 81
![Page 82: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/82.jpg)
2010 © Kleber de Oliveira Andrade 82
![Page 83: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/83.jpg)
• “XNA Tap”
– Construção de um jogo simples
– Construção de um gerenciador de telas
– O jogador deve acertar as baratas com o jornal
2010 © Kleber de Oliveira Andrade 83
![Page 84: Curso (2010) - Desenvolvimento de Jogos 2D com XNA](https://reader033.vdocuments.site/reader033/viewer/2022052505/5562ca90d8b42a49398b461c/html5/thumbnails/84.jpg)
• Sharp, John. Microsoft Visual C#: Passo a passo (Tradução: Altair Dias Caldas deMoraes). Porto Alegre : Bookman, 2007. 504 p. ISBN 978-85-60031-17-7.
• Kleber Andrade. Curso de XNA. http://kleberandrade.wordpress.com/xna –[acessado em abril de 2010].
• Sharp Games. http://www.sharpgames.net - [acessado em abril de 2010]
• XNA Developer Center, http://msdn.microsoft.com/xna/ - [acessado em março de2010]
• XNA Creators Club, http://creators.xna.com – [acessado em abril 2010]
2010 © Kleber de Oliveira Andrade 84