63
Introdução ao XNA e ao Game Developer Express José Antonio “jalf” Leal de Farias Microsoft Most Valuable Professional Comunidade SharpGames [email protected] http://www.sharpgames.net

IntroduçãO Ao Xna Campus Party

Embed Size (px)

Citation preview

Page 1: IntroduçãO Ao Xna  Campus Party

Introdução ao XNA e ao Game Developer ExpressJosé Antonio “jalf” Leal de FariasMicrosoft Most Valuable ProfessionalComunidade SharpGames

[email protected]://www.sharpgames.net

Page 2: IntroduçãO Ao Xna  Campus Party

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

Page 3: IntroduçãO Ao Xna  Campus Party

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

Page 5: IntroduçãO Ao Xna  Campus Party

O que é XNA?

Page 6: IntroduçãO Ao Xna  Campus Party

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

Page 7: IntroduçãO Ao Xna  Campus Party

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

Page 8: IntroduçãO Ao Xna  Campus Party

Instalação

.NET 3.0

Visual Studio 2008 (Qualquer Versão)

XNA Framework

XNA Game Studio

Page 9: IntroduçãO Ao Xna  Campus Party

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

Page 10: IntroduçãO Ao Xna  Campus Party

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

Page 11: IntroduçãO Ao Xna  Campus Party

Extended Framework

Page 12: IntroduçãO Ao Xna  Campus Party

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

Page 13: IntroduçãO Ao Xna  Campus Party

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

Page 14: IntroduçãO Ao Xna  Campus Party

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

Page 15: IntroduçãO Ao Xna  Campus Party

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");

Page 16: IntroduçãO Ao Xna  Campus Party

Core Framework

Page 17: IntroduçãO Ao Xna  Campus Party

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

Page 18: IntroduçãO Ao Xna  Campus Party

XNA Framework Effects

Page 19: IntroduçãO Ao Xna  Campus Party

XNA Framework Effects

Page 20: IntroduçãO Ao Xna  Campus Party

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

Page 21: IntroduçãO Ao Xna  Campus Party

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

Page 22: IntroduçãO Ao Xna  Campus Party

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

Page 23: IntroduçãO Ao Xna  Campus Party

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

Page 24: IntroduçãO Ao Xna  Campus Party

Criando Jogos para o Xbox 360

Page 25: IntroduçãO Ao Xna  Campus Party

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

Page 26: IntroduçãO Ao Xna  Campus Party

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

Page 27: IntroduçãO Ao Xna  Campus Party

Criando um jogo

Page 28: IntroduçãO Ao Xna  Campus Party

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

Page 29: IntroduçãO Ao Xna  Campus Party

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

Page 30: IntroduçãO Ao Xna  Campus Party

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) { } }

Page 31: IntroduçãO Ao Xna  Campus Party

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); }}

Page 32: IntroduçãO Ao Xna  Campus Party

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");

Page 33: IntroduçãO Ao Xna  Campus Party

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();}

Page 34: IntroduçãO Ao Xna  Campus Party

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();}

Page 35: IntroduçãO Ao Xna  Campus Party

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}

Page 36: IntroduçãO Ao Xna  Campus Party

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);}

Page 37: IntroduçãO Ao Xna  Campus Party

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

Page 38: IntroduçãO Ao Xna  Campus Party

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)

Page 39: IntroduçãO Ao Xna  Campus Party

Crescimento do Serviço

Page 40: IntroduçãO Ao Xna  Campus Party

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

Page 41: IntroduçãO Ao Xna  Campus Party

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

Page 42: IntroduçãO Ao Xna  Campus Party

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.

Page 43: IntroduçãO Ao Xna  Campus Party

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

Page 44: IntroduçãO Ao Xna  Campus Party

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

Page 45: IntroduçãO Ao Xna  Campus Party

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

Page 46: IntroduçãO Ao Xna  Campus Party

Presença de Mercado

Page 47: IntroduçãO Ao Xna  Campus Party

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

Page 48: IntroduçãO Ao Xna  Campus Party

‘Aba’ da Xbox Live Arcade

Page 49: IntroduçãO Ao Xna  Campus Party

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

Page 50: IntroduçãO Ao Xna  Campus Party

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

Page 51: IntroduçãO Ao Xna  Campus Party

Que tipo de games estamos procurando?

Nós queremos jogos que …

Page 52: IntroduçãO Ao Xna  Campus Party

… sejam atraentes

“Baixar e jogar”

“Divertido para toda a família”

“Divertido para todas as idades”

Jogos casuais

Page 53: IntroduçãO Ao Xna  Campus Party

… suportem vários dispositivos

Social em sua natureza

Controladores mais atrativos

Quebrar paradigmas

Page 54: IntroduçãO Ao Xna  Campus Party

… inspirem

Saúde física e mental

Ensinem sobre o mundo realFaça você uma pessoa melhor

Ajudar os outros

Page 55: IntroduçãO Ao Xna  Campus Party

…unam as pessoasJogos sociais

MultiplayerCompetitivoCooperativo“Backseat driver”Party Games

Page 56: IntroduçãO Ao Xna  Campus Party

… Jogos que funcionem entre plataformas

Page 57: IntroduçãO Ao Xna  Campus Party

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

Page 58: IntroduçãO Ao Xna  Campus Party

Guia de ConceitoOs 6 Pilares do que queremos em jogos

Inovação

Jogabilidade

Visual

Multiplayer & Social

Plataformas

Global

Page 59: IntroduçãO Ao Xna  Campus Party

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

Page 60: IntroduçãO Ao Xna  Campus Party

VisualEste jogo merece estar no Xbox 360?

Re-Design, não apenas um porte

Exemplos: RoboBlitzSmall ArmsJetpac Refuelled

Page 61: IntroduçãO Ao Xna  Campus Party

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

Page 62: IntroduçãO Ao Xna  Campus Party

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).

Page 63: IntroduçãO Ao Xna  Campus Party

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