• 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ân
Trang 1Desenvolvimento de Jogos 2D
com XNA
Kleber de Oliveira Andrade pdjkleber@gmail.com
Universidade de São Paulo – USP
Escola de Engenharia de São Carlos – EESC
Trang 2• 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.
Trang 3• 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#
Trang 51958: “Tennis for Two” jogo que funcionava em um osciloscópio (Willy Higinbotham)
1961: “Space Wars” jogo
desenvolvido no computador
PDP-1 por Steve Russel, o jogo
tinha 2Kb
Trang 7God of War III
Qualidade gráfica evidência a evolução no desenvolvimento de jogos, assim como sua Inteligência Artificial.
Jogos que envolvem centenas de
profissionais das mais diversas
áreas, e altos orçamentos.
Trang 8• A discussão não se restringe apenas à gráficos ou
Trang 11• É 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
Trang 12• Serious Game (Treinamento e Capacitação)
Trang 13• Advergames (Propagandas)
1993 - Cool Spot (7-Up) 1983 - Pepsi Invaders
Trang 14• Educacionais (Jogos cujo objetivo é ensinar)
Trang 15• “God” games (Softwares Toys)
Black & White
Trang 16• Criar jogos demanda muito conhecimento técnico.
• Acesso aos Kits de desenvolvimento
Trang 18Xna Não é um Acrônimo
Trang 20• 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
Trang 21• 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
Trang 22Application Model Content Pipeline
Legenda:
Network
Trang 23Application Model Content Pipeline
Trang 24Modifique os jogos e crie o seu próprio
Trang 25Application Model Content Pipeline
Trang 26Mantenha-se focado no jogo e não em qual plataforma
Trang 27• 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
Trang 29Application Model Content Pipeline
Graphics Audio Input Math Storage Network
Trang 30• Fornece recursos de renderização de baixo nível
• Construído em cima do Direct3D 9
• APIs atualizadas que seguem as regras do NET
Trang 31• Baseado no XACT (Cross-Platform Audio Creation
Tool)
– 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
Trang 32• 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
Trang 33• 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
Trang 34• Biblioteca de funções matemáticas para jogos
– Vector, Matriz, Quaternion, Plane, AABB, Sphere, Ray,
Trang 35• 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
Trang 36Application Model Content Pipeline
Trang 37Skinning & Animation Distortion
Trang 38• 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
Trang 39• Dungeon Quest
– Desenvolvido em apenas 4 dias
– Equipe: 1 desenvolvedor e 1 designer
Trang 42– 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!
Trang 43• É uma ferramenta de desenvolvimento (IDE) criada pela Microsoft.
• Sua interface é simples e intuitiva.
• Muito recomendada para usuários iniciantes em programação na linguagem C#.
• A versão Express não tem custo e você pode registrá-la.
– Visual C# 2008 Express Edition
Trang 44• O XNA é um framework gratuito e robusto cominterface amigável desenvolvido pela Microsoft paracriar jogos tanto para PC quanto para o console XBox360.
Trang 45• File New Project
Solution Explorer
Trang 46• Após criar seu novo projeto, você já pode testá-lo.
• Para isso, aperte F5
• Se tudo der certo, espera-se o seguinte resultado
Trang 47Initialize() LoadContent() Update()
Draw() UnloadContent()
Game Loop
Término da aplicação
Trang 49• Pasta Content, botão direito do mouse Add -> Existing Item
• Criar uma variável do tipo Texture2D
Trang 50• Espera-se obter o seguinte resultado ao compilar o exemplo.
Trang 51• 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;
Trang 52• Comente as linhas do método Update que manipulam a
imagem com o teclado.
• Adicione uma variável de estado para o mouse
MouseState 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;
Trang 53• Add -> New Item
Trang 54• É gerado um arquivo xml Mude a seguinte informação dele
• Escreva as informações na tela dentro do método Draw, entre
os comandos Begin() e End()
spriteBatch.DrawString(sFont, "X = " + position.X.ToString(), new Vector2(10.0f, 10.0f), Color.White);
spriteBatch.DrawString(sFont, "Y = " + position.Y.ToString(), new Vector2(10.0f, 30.0f), Color.White);
Trang 55• Espera-se obter o seguinte resultado ao compilar o exemplo.
Trang 56• Adicione as seguintes linhas após fazer osmovimentos do personagem.
Trang 57• 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”);
Trang 58• 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;
Trang 59• 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
Trang 60• Declare uma váriavel de colisão como booleana
bool 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 o
som.
if (collision) sound.Play();
Trang 64• A Linguagem C#:
– É uma linguagem orientada a objeto, moderna, desenhada
a fim de aumentar a produtividade do programador C# é utilizado por milhares de programadores e analistas e provê acesso total a tecnologia utilizando o Net
Framework, O Compact Framework e mais recentemente o XNA Framework
Trang 65• namespace – é usada para declarar um escopo Este
escopo permite você organizar o código e oferece
uma maneira parar criar tipos exclusivos
Trang 66• #region e #endregion – directiva para incluir uma
região dentro do código, facilitando a vida doprogramador, podendo este visualizar apenas ocódigo de interesse no momento
Trang 67• Comentários – /* */ e //
Trang 68• Using – mesmo conceito do #include da linguagem C/C++ ou import da linguagem Java
com using
Trang 69• Variáveis:
Tipos C# Valores possíveis de se armazenar
Trang 70• Operadores
Primary (x) x.y f(x) a[x] x++ x- - new typeof sizeof checked unchecked Left
Trang 71• Vetores Multidimensionais (arrays):
Trang 72• Entrada e Saída padrão:
Trang 73• Estrutura condicional IF/ELSE:
Trang 74• Laço de repetição FOR:
Trang 75• Laço de repetição WHILE:
Trang 76• 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 como uma ArrayList.
Trang 77• Listas:
Trang 78• Tratamento de erros:
Trang 79• Classes
• Construtor
• Atributos e métodos
Trang 80• Herança, Polimorfismo, Encapsulamento e
Enumeradores
Trang 83– O jogador deve acertar as
baratas com o jornal
Trang 84• Sharp, John Microsoft Visual C#: Passo a passo (Tradução: Altair Dias Caldas de
Moraes) 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 de 2010]
• XNA Creators Club, http://creators.xna.com – [acessado em abril 2010]
Trang 85Obrigado !
Kleber de Oliveira Andrade pdjkleber@gmail.com
http://kleberandrade.wordpress.com