Upload
campus-party-brasil
View
2.164
Download
3
Tags:
Embed Size (px)
Citation preview
Introdução ao XNA e ao Game Developer ExpressJosé Antonio “jalf” Leal de FariasMicrosoft Most Valuable ProfessionalComunidade SharpGames
[email protected]://www.sharpgames.net
Quem é esse cara?
DirectX/XNA MVP
Diretor Técnico Stairs Studiohttp://www.stairs.com.br
Criador e Administrador do Sharpgameshttp://www.sharpgames.net
Livros
Colunista XBox Magazine
AgendaIntrodução
Xbox Live
Community Games
XNA Challenge
SharpGames
XNA Game StudioStarter Kit
XNA FrameworkModelo de Aplicação; Content Pipeline
Gráficos; Audio; Input
Armazenamento
Matemática
O que é XNA?
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
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
Instalação
.NET 3.0
Visual Studio 2008 (Qualquer Versão)
XNA Framework
XNA Game Studio
Starter Kits
Modifique os jogos e crie o seu próprio
Um jogo completamente funcionalUse como um começo para seus próprios jogos
Acessado via “New Project…”
Pressione F5 e divirta-se!
Documentação e tutoriais
Disponibilidade2 jogos incluídos com XNA Game Studio Express
Novos kits saem regularmente
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ContentContent Comps
Camadas do XNA Framework
PlataformaPlataforma
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
JogosJogos
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ContentContent ComponentsComponents
Legenda XNA ForneceXNA Fornece Você ForneceVocê Fornece ComunidadeComunidade
Extended Framework
Modelo de Aplicação
Mantenha-se focado no jogo e não em qual plataforma ele está rodando
Configurado e rodando rapidamenteAs primeiras linhas de código já serão para seu jogo.
Abstração de PlataformaQual 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
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ContentContent Comps
Modelo de Aplicação
Crie componentes reusáveis que podem facilmente ser integrados ao seu jogo
GameComponent, DrawableGameComponentBase para todos os componentes XNA
O Autor escreve o Load, Update, e Draw
Pode descobrir e interagir com outros componentes
Game.ComponentsGerenciado em tempo de execução pelo jogo
Grande suporte a ‘design time’ pelo IDE
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ContentContent Comps
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ContentContent Comps
XNA Framework Content PipelinePrincípios de Design
Liberdade de escolhaFerramenta de criação de conteúdo
Game engines
Menos código para a criaçãoMais tempo para a criação do jogo
Forte integração entre código e conteúdoBuild de código e de conteúdo unificados
XNA Framework Content Pipeline
ImportadoresConteúdo de jogo adicionado ao Visual Studio
ProcessadoresConversões de tipo altamante tipadas
Extensões de código gerenciado
3D File Formats
2D File Formats
Material File Formats
Audio File Formats
.FBX.X
.DDS
.BMP .JPG .PNG
.TGA
.FX .XAP (XACT)
ContentManager xnaLoader = new ContentManager(); myAsset = xnaLoader.Load<Mesh>("MyAssetName");
Core Framework
GraphicsFornece recursos de renderização de baixo
nível
Construído sob o Direct3D 9APIs atualizadas que seguem as regras do .NET
EfeitosRecursosLock/UnlockVertex streams
Recursos fornecidosModel, Mesh, BonesTexturasEfeitos e shaders
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ContentContent Comps
XNA Framework Effects
XNA Framework Effects
Audio
É 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 desenvolvedoresAcesse-os via seus nomes lógicos
Looping, streaming, e gerenciamento de memória
Sem gerenciamento de buffer de baixo nível
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ContentContent Comps
Input
Torna fácil a obtenção de dados de entrada
Pronto para usarSem inicialização
Sem gerenciamento de estado
DispositivosJoystick do Xbox 360
Teclado
Mouse (apenas no Windows)
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ContentContent Comps
Storage
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
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ContentContent Comps
Math
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
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ContentContent Comps
Criando Jogos para o Xbox 360
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
Xbox 360 Development
Experiência de desenvolvimento
Project templates para jogos do Xbox 360
F5 faz o deploy para o console
Remote debuggingBreakpointsWatches
Debug e Trace para o PC
Sem Edit and Continue
Debug Visualizers
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ContentContent Comps
Criando um jogo
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
Construção de um jogo em XNABasedo na forma como um jogo funciona
Todo jogo tem algums comportamentos fundamentais:
1. Inicializa todos os recursos no inícioInicializa 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 jogorenderiza os game elements na tela
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) { } }
Inicialização do jogo
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
Texture2D cheeseTexture;
SpriteBatch spriteBatch;
protected override void LoadGraphicsContent(bool loadAllContent) { if (loadAllContent) { cheeseTexture = content.Load<Texture2D>("cheese"); spriteBatch = new SpriteBatch(graphics.GraphicsDevice); }}
Usando o Content PipelineO 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");
XNA Game Drawingprotected override void Draw(GameTime gameTime){ graphics.GraphicsDevice.Clear(Color.Black);
// Desenha o Background spriteBatch.Begin(); spriteBatch.Draw(backgroundTexture,new Rectangle(0, 0,
graphics.GraphicsDevice.DisplayMode.Width, graphics.GraphicsDevice.DisplayMode.Height),Color.LightGray);
spriteBatch.End();
// sprites spriteBatch.Begin(SpriteBlendMode.AlphaBlend); base.Draw(gameTime); spriteBatch.End();}
Update do Jogoprotected 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();}
Leitura do JoystickGamePadState 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}
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);}
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ítulosDiversos recursos para a retenção e re-play de jogos
Introdução a Xbox Live ArcadeUsuá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 mercadoNovos Jogos
Clássicos
Jogos Independentes
Conectado aos serviços da Live (MSN)
Crescimento do Serviço
Audiência EngajadaMais de 45,000,000 de jogos baixados
Mais de 80,000,000 de horas de jogoIsso é 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
Títulos mais jogados em 2007By Users By Average Session
LengthBy Total Minutes
1 TMNT 1989 Arcade Jewel Quest UNO
2 Worms Hardwood Spades Texas Hold ‘Em
3 UNO Catan Worms
4 Castlevania Bejeweled 2 Castlevania
5 3D Minigolf Adventures Texas Hold ‘Em Bejeweled 2
6 Paperboy Castlevania Geometry Wars
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
Azul – 2007
Laranja – 2006
Verde - 2005
Detalhes de VendasDownloads 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.
Volume de vendas sobre o tempoO gráfico mostra a média de todos os jogos do serviçoPrimeiros dois meses de vendas correspondem a 35% do volume totalVendas tem uma pequena queda após o sétimo mês
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
5 DOOM Ultimate Mortal Kombat 3
Worms
6 Castlevania Texas Hold ‘em Castlevania
7 Ultimate Mortal Kombat 3
UNO GALAGA
8 PAC-MAN Bankshot Billiards 2 Ultimate Mortal Kombat 3
9 Geometry Wars LUMINES LIVE! PAC-MAN
10 Contra TMNT 1989 DOOM
Azul – 2007
Laranja – 2006
Verde - 2005
Performance de download de conteúdo para jogos
636000 Downloads pagos107000 Temas de jogos
360000 Conteúdo de jogos (novas fases, etc.)
170000 Imagens e Fotos
Downloads gratuitos1.055.000 downloads
Resumo – Conteúdo não vai torná-lo rico, mas é uma interessante fonte de receita
Presença de Mercado
Como é um jogo da Xbox LIVE Arcade?
Completa experiência de jogoSem pedaços de jogos separadosNã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ênciaSem necessidade de manual de instruções“Baixar e jogar”
Versão de testes limitada mas divertidaDeve oferecer a opção de compra da versão completaPromoção de venda do jogo dentro do jogo é permitida
Experiências de jogo associadas a Live ArcadeRanks globaisAchievements & GamerscoreConvites entre jogos
‘Aba’ da Xbox Live Arcade
Como os jogos chegam a Arcade
DesenvolvedorDesenvolvedor
PublisherPublisherArcade Arcade
Publishing Publishing TeamTeam
Gerência do Gerência do PortfólioPortfólio
Microsoft Microsoft 3PP Team3PP Team
E os jogos da comunidade?Revisados pelo membros do Creator’s ClubCritérios como violência, sexo, sangue, etc.Critérios TécnicosFormado EXCLUSIVAMENTE pela comunidade
Que tipo de games estamos procurando?
Nós queremos jogos que …
… sejam atraentes
“Baixar e jogar”
“Divertido para toda a família”
“Divertido para todas as idades”
Jogos casuais
… suportem vários dispositivos
Social em sua natureza
Controladores mais atrativos
Quebrar paradigmas
… inspirem
Saúde física e mental
Ensinem sobre o mundo realFaça você uma pessoa melhor
Ajudar os outros
…unam as pessoasJogos sociais
MultiplayerCompetitivoCooperativo“Backseat driver”Party Games
… Jogos que funcionem entre plataformas
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
Guia de ConceitoOs 6 Pilares do que queremos em jogos
Inovação
Jogabilidade
Visual
Multiplayer & Social
Plataformas
Global
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
VisualEste jogo merece estar no Xbox 360?
Re-Design, não apenas um porte
Exemplos: RoboBlitzSmall ArmsJetpac Refuelled
MultiplayerXbox LIVE & desenhado para poucos participantes
“Join In Progress”
Migração de HostMultiplayer Local (2+ em um console)Co-Op
Experiências SociaisOffline gameplay & tracking
Apelo Global
Planeje seu jogo com o mercado global em mente
LocalizaçãoInglês, Frances, Italiano, Alemão, Espanhol, Japonês, Koreano, Chinês (tradicional), Português (pt-br opcional).
Dúvidas?
José Antonio “jalf” Leal de FariasMicrosoft Most Valuable Professional
[email protected]: @sharpgames
Get the free app for your phone at
http :// gettag . mobi
S
N
A
P
I
T