Upload
internet
View
103
Download
0
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
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 gamesIdeal para jogos casuais Nova plataforma para desenvolvimento de jogos baseado em .NET 3.0, .NET Compact FrameworkExtensão da IDE do Visual C# 2008Grupo 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 ConteContenntt
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 ComponenComponentsts
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 ConteContenntt
Comps
Modelo de Aplicação
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.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 ConteContenntt
Comps
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ConteContenntt
Comps
XNA Framework Content PipelinePrincípios de Design
Liberdade de escolhaFerramenta de criação de conteúdoGame engines
Menos código para a criaçãoMais 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
XNA Framework Content Pipeline
ImportadoresConteúdo de jogo adicionado ao Visual Studio
ProcessadoresConversões de tipo altamante tipadasExtensões de código gerenciado
3D File Format
s
2D File Formats
Material File
Formats
Audio File Formats
.FBX.X
.DDS .BMP .JPG .P
NG .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 ConteContenntt
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 ConteContenntt
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 ConteContenntt
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 ConteContenntt
Comps
Math
Biblioteca de funções matemáticas para jogos
Vector, Matrix, Quaternion, Plane, AABB, Sphere, Ray, Frustum, CurveRegra-da-mão-direita por defaultFácil integraçãoTestes de intersecçãoFacilitadores para movimentos
PlatformPlatform
CoreCoreFrameworkFramework
ExtendedExtendedFrameworkFramework
GamesGames
XACTXACT XINPUTXINPUT XContentXContentDirect3DDirect3D
GraphicsGraphics AudioAudio InputInput MathMath StorageStorage
Application ModelApplication Model Content PipelineContent Pipeline
Starter KitsStarter Kits CodeCode ConteContenntt
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 360F5 faz o deploy para o consoleRemote debugging
Breakpoints
Watches
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 ConteContenntt
Comps
Criando um jogo
XNA 2D game“Rock Rain”
Construção de um jogo simplesO 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 funcionaTodo jogo tem algums comportamentos
fundamentais:1. Inicializa todos os recursos no início
Inicializa todas as texturas, modelos, som, etc
2. Continuamente roda o Game Loop:1. Atualiza a game engine
Lê os controladores, atualiza o estado e a posição dos game elements
2. 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 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 JogosClássicosJogos IndependentesConectado aos serviços da Live (MSN)
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 Club
Critérios como violência, sexo, sangue, etc.
Critérios Técnicos
Formado 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 real
Faç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, AtrativosSuporte a vários tipos de controladoresTemas e conteúdo inspirativosSocial, 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
Visual
Este jogo merece estar no Xbox 360?
Re-Design, não apenas um porte
Exemplos: RoboBlitzSmall ArmsJetpac Refuelled
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
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).
Guia de criação de conceitodocumentos de projetoDocumentos de projeto contém
Descrição mínima da jogabilidade
Quantidade e variedade de exemplos de arte
Screenshots é melhor, mas arte conceitual ajuda
Evidência de diferenciaçãoComo esse jogo é diferente de outros títulos semelhantes?
O que exatamente “novas formas de jogar” significa?
Suporte a PDLC não é, automaticamente, um diferencial
Dúvidas?
José Antonio “jalf” Leal de FariasMicrosoft Most Valuable Professional
Get the free app for your phone athttp://gettag.mobi
SNAP
IT