1. Introdução ao XNA e ao
Game Developer Express
José Antonio “jalf” Leal de Farias
Microsoft Most Valuable Professional
Comunidade SharpGames
jalf@sharpgames.net
http://www.sharpgames.net
2. Quem é esse cara?
DirectX/XNA MVP
Diretor Técnico Stairs Studio
http://www.stairs.com.br
Criador e Administrador do Sharpgames
http://www.sharpgames.net
Livros
Colunista XBox Magazine
3. Agenda
Introdução
Xbox Live
Community Games
XNA Challenge
SharpGames
XNA Game Studio
Starter Kit
XNA Framework
Modelo de Aplicação; Content Pipeline
Gráficos; Audio; Input
Armazenamento
Matemática
6. XNA Game Studio Express
Desenhado com acadêmicos, hobistas e
pequenos desenvolvedores de games
Ideal para jogos casuais
Nova plataforma para desenvolvimento de jogos
baseado em .NET 3.0, .NET Compact Framework
Extensão da IDE do Visual C# 2008
Grupo de bibliotecas multi-plataforma
optimizada para jogos
7. XNA Framework
O XNA Framework é uma plataforma de
desenvolvimento de jogos baseada em
.NET que pode ser usada para criar jogos
para Windows e Xbox 360
Suporta as plataformas de jogos da
Microsoft
Foco no jogo, não na plataforma
APIs consistentes e de fácil utilização
8. Instalação
.NET 3.0
Visual Studio 2008 (Qualquer Versão)
XNA Framework
XNA Game Studio
9. Games
Starter Kits Code Content Comps
Starter Kits
Extended
Framework Application Model Content Pipeline
Core
Framework Graphics Audio Input Math Storage
Platform Direct3D XACT XINPUT XContent
Modifique os jogos e crie o seu próprio
Um jogo completamente funcional
Use como um começo para seus próprios jogos
Acessado via “New Project…”
Pressione F5 e divirta-se!
Documentação e tutoriais
Disponibilidade
2 jogos incluídos com XNA Game Studio Express
Novos kits saem regularmente
10. Camadas do XNA Framework
Jogos Starter Kits Code Content Components
Extended
Framework Application Model Content Pipeline
Core
Graphics Audio Input Math Storage
Framework
Plataforma Direct3D XACT XINPUT XContent
Legenda XNA Fornece Você Fornece Comunidade
12. Games
Starter Kits Code Content Comps
Modelo de Aplicação
Extended
Framework Application Model Content Pipeline
Core
Framework Graphics Audio Input Math Storage
Platform Direct3D XACT XINPUT XContent
Mantenha-se focado no jogo e não em qual plataforma ele
está rodando
Configurado e rodando rapidamente
As primeiras linhas de código já serão para seu jogo.
Abstração de Plataforma
Qual a melhor maneira de criar um game loop?
Como eu crio e gerencio minha janela?
Como eu sigo as melhores práticas para a plataforma?
Game
É o tipo principal de seu jogo
Eventos de Load, Update e Draw
13. Games
Starter Kits Code Content Comps
Modelo de Aplicação
Extended
Framework Application Model Content Pipeline
Core
Framework Graphics Audio Input Math Storage
Platform Direct3D XACT XINPUT XContent
Crie componentes reusáveis que podem
facilmente ser integrados ao seu jogo
GameComponent, DrawableGameComponent
Base para todos os componentes XNA
O Autor escreve o Load, Update, e Draw
Pode descobrir e interagir com outros componentes
Game.Components
Gerenciado em tempo de execução pelo jogo
Grande suporte a ‘design time’ pelo IDE
14. Games
Starter Kits Code Content Comps
XNA Framework Content Pipeline Extended
Framework
Core
Application Model Content Pipeline
Princípios de Design
Framework Graphics Audio Input Math Storage
Platform Direct3D XACT XINPUT XContent
Liberdade de escolha
Ferramenta 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
15. XNA Framework Content Pipeline
Importadores
Conteúdo de jogo adicionado ao Visual Studio
3D File 2D File Material File Audio File
Formats Formats Formats Formats
.FBX .DDS .FX .XAP (XACT)
.X .BMP
.JPG .PNG
Processadores .TGA
Conversões de tipo altamante tipadas
Extensões de código gerenciado
ContentManager xnaLoader = new
ContentManager();
myAsset =
17. Games
Starter Kits Code Content Comps
Graphics
Extended
Framework Application Model Content Pipeline
Core
Framework Graphics Audio Input Math Storage
Platform Direct3D XACT XINPUT XContent
Fornece recursos de renderização de baixo
nível
Construído sob o Direct3D 9
APIs atualizadas que seguem as regras do .NET
Efeitos
Recursos
Lock/Unlock
Vertex streams
Recursos fornecidos
Model, Mesh, Bones
Texturas
Efeitos e shaders
20. Games
Starter Kits Code Content Comps
Audio
Extended
Framework Application Model Content Pipeline
Core
Framework Graphics Audio Input Math Storage
Platform Direct3D XACT XINPUT XContent
É muito fácil tocar seus sons
Construa seus pacotes de som usando a
ferramenta XACT
Adicionar sons
Ajustar 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
21. Games
Starter Kits Code Content Comps
Input
Extended
Framework Application Model Content Pipeline
Core
Framework Graphics Audio Input Math Storage
Platform Direct3D XACT XINPUT XContent
Torna fácil a obtenção de dados de entrada
Pronto para usar
Sem inicialização
Sem gerenciamento de estado
Dispositivos
Joystick do Xbox 360
Teclado
Mouse (apenas no Windows)
22. Games
Starter Kits Code Content Comps
Storage
Extended
Framework Application Model Content Pipeline
Core
Framework Graphics Audio Input Math Storage
Platform Direct3D XACT XINPUT XContent
Fornece um jeito fácil para ler e salvar
informações do jogo
StorageContainer atua como um sistema de
arquivos virtual
Arquivos armazenados no local correto de cada
plataforma
Suporta mútiplos dispositivos de armazenamento e
perfis no Xbox 360
Baseado em Streams, o que facilita a integração
com o System.IO
23. Games
Starter Kits Code Content Comps
Math
Extended
Framework Application Model Content Pipeline
Core
Framework Graphics Audio Input Math Storage
Platform Direct3D XACT XINPUT XContent
Biblioteca de funções matemáticas para
jogos
Vector, Matrix, Quaternion, Plane, AABB,
Sphere, Ray, Frustum, Curve
Regra-da-mão-direita por default
Fácil integração
Testes de intersecção
Facilitadores para movimentos
25. Pré-requisitos e Instalação
Assinatura da Xbox live
XNA Creator’s Club (US$99 por um ano)
Instale o XNA Game launcher a partir da
Xbox marketplace
Compre o XNA Creaters Club a partir Xbox
marketplace
Para obter seu código de conexão, rode o
XNA Game launcer de: GamesDemos and
More no Xbox 360
26. Games
Starter Kits Code Content Comps
Xbox 360 Development
Extended
Framework Application Model Content Pipeline
Core
Framework Graphics Audio Input Math Storage
Platform Direct3D XACT XINPUT XContent
Experiência de desenvolvimento
Project templates para jogos do Xbox 360
F5 faz o deploy para o console
Remote debugging
Breakpoints
Watches
Debug e Trace para o PC
Sem
Edit and Continue
Debug Visualizers
28. XNA 2D game
“Rock Rain”
Construção de um jogo
simples
O jogador deve guiar a
nave evitando os
asteróides
É um jogo 2D simples,
baseado em sprites
29. Construção de um jogo em XNA
Basedo na forma como um jogo funciona
Todo jogo tem algums comportamentos
fundamentais:
1. Inicializa todos os recursos no início
Inicializa todas as texturas, modelos, som, etc
1. Continuamente roda o Game Loop:
1. Atualiza a game engine
Lê os controladores, atualiza o estado e a posição dos
game elements
1. Desenha o ambiente do jogo
renderiza os game elements na tela
30. Esqueleto de um jogo XNA
partial class Game1 : Microsoft.Xna.Framework.Game
{
public Game1() {
graphics = new GraphicsDeviceManager(this);
content = new ContentManager(Services);
}
protected override void LoadGraphicsContent(bool loadAllContent) {
}
protected override void Update(GameTime gameTime) {
}
protected override void Draw(GameTime gameTime) {
}
}
31. Inicialização do jogo
Texture2D cheeseTexture;
SpriteBatch spriteBatch;
protected override void LoadGraphicsContent(bool loadAllContent) {
if (loadAllContent)
{
cheeseTexture = content.Load<Texture2D>("cheese");
spriteBatch = new SpriteBatch(graphics.GraphicsDevice);
}
}
LoadGraphicsContent é chamada quando seu jogo inicializa
Ele cria a textura do queijo e carrega uma imagem nele
Também cria um SpriteBatch para gerenciar o processo de
renderização
32. Usando o Content Pipeline
O content pipeline
gerencia os recursos
Cada recurso recebe
um nome
O método Load do
ContentManager
fornece acesso ao
recurso
Note o uso de
generics
cheeseTexture =
content.Load<Texture2D>(“rockrain");
34. Update do Jogo
protected override void Update()
{
foreach (GameComponent gc in Components)
{
if (gc is Meteor)
{
hasColision = ((Meteor)gc).CheckCollision(shipRectangle);
if (hasColision)
{
audioComponent.PlayCue("explosion");
Start();
break;
}
}
}
UpdateComponents();
}
35. Leitura do Joystick
GamePadState padState = GamePad.GetState(PlayerIndex.One);
if (padState.IsConnected)
{
if (padState.DPad.Left == ButtonState.Pressed)
{
breadX--;
}
if (padState.DPad.Right == ButtonState.Pressed)
{
breadX++;
}
/// repetir para o eixo Y do pão
}
36. Leitura analógica do Joystick
int padXSpeed = 10;
int padYSpeed = 10;
GamePadState padState = GamePad.GetState(PlayerIndex.One);
if (padState.IsConnected)
{
breadX += (int) (padState.ThumbSticks.Left.X * padXSpeed);
breadY -= (int) (padState.ThumbSticks.Left.Y * padYSpeed);
}
37. Xbox LIVE Arcade??
Xbox Live é o lugar para usuários que
querem testar e comprar conteúdo no Xbox
360
Xbox Live Arcade contém conteúdo de
jogos
Alta Visibilidade em qualquer console (Aba ‘Games’)
Integração com o Marketplace (Download, compra, licenças)
Disponível para assinantes Silver & Gold
Banner de promoção de novos títulos
Diversos recursos para a retenção e re-play de jogos
38. Introdução a Xbox Live Arcade
Usuários & receita continuam a crescer
+80 jogos disponíveis atualmente
Um ou mais títulos chegam por semana
Melhor serviço de download de jogos em um console no mercado
Novos Jogos
Clássicos
Jogos Independentes
Conectado aos serviços da Live (MSN)
40. Audiência Engajada
Mais de 45,000,000 de jogos baixados
Mais de 80,000,000 de horas de jogo
Isso é mais de 9,100 homens-ano
Mais de 170,000,000 de partidas
Mais de 45,000,000 de Achievements obtidos
Mais de 550,000,000 em Gamerscore
41. Títulos mais jogados em 2007
By Users By Average Session By Total Minutes
Length
1 TMNT 1989 Arcade Jewel Quest UNO
2 Worms Hardwood Spades Texas Hold ‘Em
3 UNO Catan Worms
4 Castlevania Bejeweled 2 Castlevania Azul – 2007
5 3D Minigolf Adventures Texas Hold ‘Em Bejeweled 2 Laranja – 2006
6 Paperboy Castlevania Geometry Wars Verde - 2005
7 Alien Hominid Zuma Zuma
8 Geometry Wars Soltrio Solitaire Aegis Wing
9 Texas Hold ‘em Worms Catan
10 Heavy Weapon Luxor 2 3D Minigolf
Adventures
42. Detalhes de Vendas
Downloads e taxas de conversão
Títulos originais conseguem cerca de 350k downloads no primeiro mês
Grandes hits conseguem us$125K em vendas na primeira semana
Games continuam com vendas significantes ao longo de sua vida.
43. Volume de vendas sobre o
tempo
O gráfico mostra a média de todos os jogos do serviço
Primeiros dois meses de vendas correspondem a 35% do volume total
Vendas tem uma pequena queda após o sétimo mês
44. Melhores Título (Jul 06 – Jun 07)
By Sales Volume By Revenue By Conversion Rate
1 Street Fighter II HF Street Fighter II HF TMNT 1989
2 UNO Worms UNO
3 TMNT 1989 DOOM Texas Hold ‘em
4 Worms Castlevania Street Fighter II HF Azul – 2007
5 DOOM Ultimate Mortal Worms Laranja – 2006
Kombat 3
6 Castlevania Texas Hold ‘em Castlevania Verde - 2005
7 Ultimate Mortal UNO GALAGA
Kombat 3
8 PAC-MAN Bankshot Billiards 2 Ultimate Mortal
Kombat 3
9 Geometry Wars LUMINES LIVE! PAC-MAN
10 Contra TMNT 1989 DOOM
45. Performance de download de
conteúdo para jogos
636000 Downloads pagos
107000 Temas de jogos
360000 Conteúdo de jogos (novas fases, etc.)
170000 Imagens e Fotos
Downloads gratuitos
1.055.000 downloads
Resumo – Conteúdo não vai torná-lo rico,
mas é uma interessante fonte de receita
47. Como é um jogo da Xbox LIVE Arcade?
Completa experiência de jogo
Sem pedaços de jogos separados
Não deve ter dependências
Pequeno em Tamanho
<150 MB (a maioria tem <50 MB)
Jogável sem mídia física ou qualquer outra dependência
Sem necessidade de manual de instruções
“Baixar e jogar”
Versão de testes limitada mas divertida
Deve oferecer a opção de compra da versão completa
Promoção de venda do jogo dentro do jogo é permitida
Experiências de jogo associadas a Live Arcade
Ranks globais
Achievements & Gamerscore
Convites entre jogos
49. Como os jogos chegam a Arcade
Desenvolvedor
Publisher
Arcade
Publishing
Microsoft Team
3PP Team
Gerência do
Portfólio
50. E os jogos da comunidade?
Revisados pelo membros do
Creator’s Club
Critérios como violência,
sexo, sangue, etc.
Critérios Técnicos
Formado EXCLUSIVAMENTE
pela comunidade
51. Que tipo de games estamos
procurando?
Nós queremos jogos que …
52. … sejam atraentes
“Baixar e jogar”
“Divertido para toda a família”
“Divertido para todas as idades”
Jogos casuais
53. … suportem vários dispositivos
Social em sua natureza
Controladores mais
atrativos
Quebrar paradigmas
54. … inspirem
Saúde física e mental
Ensinem sobre o mundo real
Faça você uma pessoa melhor
Ajudar os outros
55. …unam as pessoas
Jogos sociais
Multiplayer
Competitivo
Cooperativo
“Backseat driver”
Party Games
57. O que isso tudo significa para você?
Primeiro, negócio é negócio: Se você tem um
grande jogo, nos queremos vê-lo
Compreendendo o valor de seu serviço para o
cliente vai lhe ajudar a criar um melhor jogo
para ele
Novas áreas de interesse:
Simples, Atrativos
Suporte a vários tipos de controladores
Temas e conteúdo inspirativos
Social, Social, Social
58. Guia de Conceito
Os 6 Pilares do que queremos em jogos
Inovação
Jogabilidade
Visual
Multiplayer & Social
Plataformas
Global
59. Jogabilidade
Tem de caber em 150 MB!
Idéias únicas
“Baixar e jogar”
Permitir pequenas seções de jogo
‘Planejado para a família INTEIRA
Opções para crianças
Dificuldade progressiva
60. Visual
Este jogo merece estar no Xbox 360?
Re-Design, não apenas um porte
Exemplos:
RoboBlitz
Small Arms
Jetpac Refuelled
61. Multiplayer
Xbox LIVE & desenhado para poucos participantes
“Join In Progress”
Migração de Host
Multiplayer Local (2+ em um console)
Co-Op
Experiências Sociais
Offline gameplay & tracking
62. Apelo Global
Planeje seu jogo com o mercado global em mente
Localização
Inglês, Frances, Italiano, Alemão, Espanhol, Japonês,
Koreano, Chinês (tradicional), Português (pt-br opcional).
63. Dúvidas?
José Antonio “jalf” Leal de Farias
Microsoft Most Valuable Professional
jalf@sharpgames.net
www.sharpgames.net
Twitter: @sharpgames