Your SlideShare is downloading. ×
Nelson Correia, Sapo
        ncorreia@ncorreia.name
http://weblogs.pontonetpt.com/ncorreia
iFactor; Shuggy
Os jogos actuais são bastante complexos

 Fazer um jogo está apenas ao alcance
  de grandes (€€€) equipas
 Produtores d...
Abstrai o programador dos detalhes da

    arquitectura
    Permite o foco na lógica do jogo


    Permite a qualquer pe...
Arquitectura

 Content pipeline
 Componentes do Jogo
    › Modelo Aplicacional, Gráficos, Input, Áudio,
     Math e Arm...
XNA Game Studio
     Express


  XNA Framework




                  Nelson Correia
Starterkits         Code           Content
  Games                                                         Components




...
O que é?

    › Pipeline de processamento de conteúdos


    Objectivos

    › Permitir a utilização de qualquer ferrame...
Content Pipeline (design time)


Recurso no
                                     Content          Content             Recu...
Game runtime


                                Content           Game
            Recurso
                                ...
XNA                         MyGame

               Initialize

        LoadGraphicsContent


Game           Update
Loop   ...
partial class MyGame : Microsoft.Xna.Framework.Game
{
  public MyGame() {
    graphics = new GraphicsDeviceManager(this);
...
<<interface>>    <<interface>>     <<interface>>
 IDisposable      IUpdateable    IGameComponent




                     ...
class Background : DrawableGameComponent
{
  protected override void LoadGraphicsContent(bool loadAllContent)
  {
    text...
Draw,
            Update, …   GameScreen
Game
                         Manager

                              Draw,
      ...
Criação de recursos áudio com o XACT

    (Microsoft Cross-Platform Audio Creation Tool)




                            ...
O que é?

    › Ferramenta GUI para produção de conteúdos
    › API responsável por interpretar ficheiros XACT e
     rep...
WAV Files


             XACT GUI Tool
      .wav




                 .xap
                  File

                      ...
public class MyGame : Microsoft.Xna.Framework.Game
{
  protected override void Initialize() {
     audioEngine = new Audio...
Digital        Analog        Vibration     Supported on     Supported on     Number Allowed on
Input Device   Buttons     ...
Ver estado em cada update

 Actualizar de acordo com o input em
  cada momento
 Possível utilização de reconhecimento
 ...
Exemplo
      

void UpdateInputPlayerOne()
{
  GamePadState currentState = GamePad.GetState(PlayerIndex.One);

    // Pr...
Uma das componentes mais poderosas

  da Framework
 Fornece tipos e operações para
  manipulação de vectores e matrizes
...
Existem duas localizações:

    › Title (game) storage – Executável e ficheiros de
      suporte ao jogo (meshes, shaders...
Xbox 360

    › Title Storage
       Mesma localização do executável
       Disponível através de
         StorageConta...
Windows

    › Title Storage
       Mesma localização do executável
       Disponível através de
         StorageContai...
Xbox 360

 Subscrição Xbox Live
 Membro XNA Creators Club
 PC com XNA Game Studio Express




                        ...
Racing Game
Xna Developer Center

    › http://msdn2.microsoft.com/en-us/xna/default.aspx
    XNA Team Blog

    › http://blogs.msdn...
XNA Framework
Upcoming SlideShare
Loading in...5
×

XNA Framework

1,374

Published on

Presentation about the first version of the XNA Framework, a framework for rapidly develop games in .NET to run both on Windows and Xbox360

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,374
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "XNA Framework"

  1. 1. Nelson Correia, Sapo ncorreia@ncorreia.name http://weblogs.pontonetpt.com/ncorreia
  2. 2. iFactor; Shuggy
  3. 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. 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. 5. Arquitectura   Content pipeline  Componentes do Jogo › Modelo Aplicacional, Gráficos, Input, Áudio, Math e Armazenamento de Dados Demos  Nelson Correia
  6. 6. XNA Game Studio Express XNA Framework Nelson Correia
  7. 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. 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. 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. 10. Game runtime Content Game Recurso Loader compilado Objects Legenda: Engine Advanced XNA Game DCC Vendors Developers Engines Framework Developers Nelson Correia
  11. 11. XNA MyGame Initialize LoadGraphicsContent Game Update Loop Draw UnloadGraphicsContent Nelson Correia
  12. 12. partial class MyGame : Microsoft.Xna.Framework.Game { public MyGame() { graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services); } protected override void Initialize() { ... } protected override void LoadGraphicsContent(bool loadAllContent) { ... } protected override void UnloadGraphicsContent(bool unloadAllContent) { ... } protected override void Update(GameTime gameTime) { ... } protected override void Draw(GameTime gameTime) { ... } } Nelson Correia
  13. 13. <<interface>> <<interface>> <<interface>> IDisposable IUpdateable IGameComponent IDrawable GameComponent <<interface>> Drawable GameComponent Nelson Correia
  14. 14. class Background : DrawableGameComponent { protected override void LoadGraphicsContent(bool loadAllContent) { texture = content.Load<Texture2D>(@quot;ContentTexturesstarsquot;); } protected override void Draw(GameTime gameTime) { spriteBatch.Begin(); spriteBatch.Draw(texture, GetTitleSafeArea(100), Color.White); spriteBatch.End(); } // … } Nelson Correia
  15. 15. Draw, Update, … GameScreen Game Manager Draw, Update, … Screen Collection Loading Main Game Screen Highscore Screen Game Over Screen Screen … Nelson Correia
  16. 16. Criação de recursos áudio com o XACT  (Microsoft Cross-Platform Audio Creation Tool) Nelson Correia
  17. 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
  18. 18. WAV Files XACT GUI Tool .wav .xap File XNA Content Files .xgs .xwb Content .xsb Pipeline Nelson Correia
  19. 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. 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. 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. 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. 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. 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. 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. 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. 27. Xbox 360   Subscrição Xbox Live  Membro XNA Creators Club  PC com XNA Game Studio Express Nelson Correia
  28. 28. Racing Game
  29. 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

×