O documento discute o desenvolvimento de jogos usando a Microsoft XNA Framework. Aborda tópicos como arquitetura, componentes, áudio, entrada, matemática e armazenamento de dados. Também fornece links para recursos adicionais sobre XNA.
3. Os jogos actuais são bastante complexos
Fazer um jogo está apenas ao alcance
de grandes (€€€) equipas
Produtores de jogos dificilmente aceitam
novas ideias. Os jogos actuais são
essencialmente:
› Sequelas de outros
› Adaptações de filmes ou séries de TV
Nelson Correia
4. Abstrai o programador dos detalhes da
arquitectura
Permite o foco na lógica do jogo
Permite a qualquer pessoa com paixão
por jogos e noções básicas de
programação o desenvolvimento de um
jogo
Nelson Correia
5. Arquitectura
Content pipeline
Componentes do Jogo
› Modelo Aplicacional, Gráficos, Input, Áudio,
Math e Armazenamento de Dados
Demos
Nelson Correia
7. Starterkits Code Content
Games Components
Extended
Application Model Content Pipeline
Framework
Core
Audio Input Math Storage
Graphics
Framework
Direct3D XACT XInput XContent
Platform
Legenda: XNA Provides You Provide Community
Nelson Correia
8. O que é?
› Pipeline de processamento de conteúdos
Objectivos
› Permitir a utilização de qualquer ferramenta DCC
› Separar o motor do jogo da dependência de conteúdos
› Criar um sistema simples e unificado de produção de
conteúdos
Nelson Correia
9. Content Pipeline (design time)
Recurso no
Content Content Recurso
Importer
formato
Processor Compiler compilado
Importer
original
Formatos/Modelos
Intermédios
Legenda:
Engine Advanced XNA Game
DCC Vendors
Developers Engines Framework Developers
Nelson Correia
10. Game runtime
Content Game
Recurso
Loader
compilado Objects
Legenda:
Engine Advanced XNA Game
DCC Vendors
Developers Engines Framework Developers
Nelson Correia
11. XNA MyGame
Initialize
LoadGraphicsContent
Game Update
Loop Draw
UnloadGraphicsContent
Nelson Correia
15. Draw,
Update, … GameScreen
Game
Manager
Draw,
Update, …
Screen Collection
Loading
Main Game
Screen Highscore
Screen Game Over
Screen
Screen …
Nelson Correia
16. Criação de recursos áudio com o XACT
(Microsoft Cross-Platform Audio Creation Tool)
Nelson Correia
17. O que é?
› Ferramenta GUI para produção de conteúdos
› API responsável por interpretar ficheiros XACT e
reproduzi-los em resposta a eventos do jogo
Todos os conteúdos áudio têm que estar
neste formato
Nelson Correia
19. public class MyGame : Microsoft.Xna.Framework.Game
{
protected override void Initialize() {
audioEngine = new AudioEngine( quot;TestSounds.xgsquot; );
waveBank = new WaveBank( audioEngine, quot;TestWaveBank.xwbquot; );
soundBank = new SoundBank( audioEngine, quot;TestSoundBank.xsbquot; );
soundBank.PlayCue( “StartSoundquot; );
}
protected override void Update( GameTime gameTime )
{
audioEngine.Update();
}
// …
}
Nelson Correia
20. Digital Analog Vibration Supported on Supported on Number Allowed on
Input Device Buttons Controls Effects Windows Xbox 360 System
Xbox 360
Controller 14 4 Yes Yes Yes 4
Keyboard > 100 0 No Yes Yes 1
Mouse 5 3 No Yes No 1
Nelson Correia
21. Ver estado em cada update
Actualizar de acordo com o input em
cada momento
Possível utilização de reconhecimento
de voz em jogos para o Windows
Nelson Correia
22. Exemplo
void UpdateInputPlayerOne()
{
GamePadState currentState = GamePad.GetState(PlayerIndex.One);
// Process input only if connected and button A is pressed.
if (currentState.IsConnected && currentState.Buttons.A ==
ButtonState.Pressed)
{
vibrationAmount = MathHelper.Clamp(vibrationAmount + 0.05f, 0.0f, 1.0f);
GamePad.SetVibration(PlayerIndex.One, vibrationAmount,
vibrationAmount);
}
}
Nelson Correia
23. Uma das componentes mais poderosas
da Framework
Fornece tipos e operações para
manipulação de vectores e matrizes
Operações para:
› Verificação de intersecções entre figuras
geométricas
› Rotação e translacção da câmara
› Etc.
Nelson Correia
24. Existem duas localizações:
› Title (game) storage – Executável e ficheiros de
suporte ao jogo (meshes, shaders, textures,
etc.)
› User Storage – Espaço fornecido pelo jogador
para dados do jogo (por ex. saves)
Nelson Correia
25. Xbox 360
› Title Storage
Mesma localização do executável
Disponível através de
StorageContainer.TitleLocation
› User Storage
Disponibilizada pelo utilizador em runtime
Solicitada através de StorageDevice.
BeginShowStorageDeviceGuide()
Nelson Correia
26. Windows
› Title Storage
Mesma localização do executável
Disponível através de
StorageContainer.TitleLocation
› User Storage
%User_Documents_Folder%SavedGames
<TitleName>Player<PlayerIndex>
Acessível através de
StorageDevice.OpenContainer()
Nelson Correia
27. Xbox 360
Subscrição Xbox Live
Membro XNA Creators Club
PC com XNA Game Studio Express
Nelson Correia
29. Xna Developer Center
› http://msdn2.microsoft.com/en-us/xna/default.aspx
XNA Team Blog
› http://blogs.msdn.com/xna/
Game Studio Express
› http://forums.xna.com/
› http://creators.xna.com/
Demos
› http://www.xnapost.com/xna_games.html
Nelson Correia