SlideShare uma empresa Scribd logo
1 de 32
# indtmobilelabs
UTILIZANDO SPARTA PARA
DESENVOLVIMENTO DE
JOGOS
ROTEIRO
 •   Introdução ao desenvolvimento de jogos
 •   Como funciona o XNA
 •   Problemas no desenvolvimento
 •   O que é o Sparta
 •   Vantagens em usar Sparta
 •   Arquitetura
 •   Demos
DESENVOLVIMENTO
DE JOGOS
Introdução a jogos, sobre o XNA
INTRODUÇÃO
 Jogos são sistemas de tempo real pois precisam de resposta
 rápida e precisa

 Não são 100% baseados em eventos, o jogo tem um loop que
 controla tudo
GAME LOOP
 while (!endGame)
 {
   input
   processamento do jogo
   output
 }
GAME LOOP   while (!endGame)
            {
              if (Keyboard.Jump.Pressed)
              {
                  Player.Y -= 20
              }

                if (Player.Y == Moeda.Y)
                {
                    Player.Pontos += 10
                    Moeda.Delete()
                }

                Draw(Player, Player.X, Player.Y)
                Draw(Moeda, Moeda.X, Moeda.Y)
            }
XNA
 É a solução disponível no Windows Phone para
 desenvolvimento de jogos

 Silverlight = Apps
 XNA = Jogos

 XNA + Silverlight perde um pouco de desempenho
PARTICULARIDADES
Memória, tombstoning, sprites, input e
câmera
TOMBSTONING
 Tombstoning deve ser uma preocupação do programador quando desenvolver
 para Windows Phone

 Não é uma obrigação do jogo ter tombstoning




                                                      :(
CÂMERA E INPUT
 Seguir o jogador ou outro objeto

 Facilidade em fazer transformações como zoom e scale

 Cortar os objetos que estão fora da área desenhável
CÂMERA E INPUT
 aTranslatedPoint.X = (float)(Math.Cos(theRotation) * (thePoint.X -
 theOrigin.X) - Math.Sin(theRotation) * (thePoint.Y - theOrigin.Y) +
 theOrigin.X);

 float aNumerator = (theRectangleCorner.X * theAxis.X) +
 (theRectangleCorner.Y * theAxis.Y);
         float aDenominator = (theAxis.X * theAxis.X) + (theAxis.Y *
 theAxis.Y);
         float aDivisionResult = aNumerator / aDenominator;
         Vector2 aCornerProjected = new Vector2(aDivisionResult *
 theAxis.X, aDivisionResult * theAxis.Y);

 float aScalar = (theAxis.X * aCornerProjected.X) + (theAxis.Y *
 aCornerProjected.Y);
CONTROLE DE SPRITES
 É preciso uma classe para se fazer animações

 Classe base para se adicionar em coleções

 Classes derivadas de desenho que servem para outros
 propósitos
MEMÓRIA
 Pelas normas do Windows Phone Store aplicativos em celulares
 com 256mb não podem ultrapassar 90mb na RAM

 Garbage Collector trava o jogo quando ativo

 Tomar cuidado para não instanciar nada no loop pois enche a
 memória muito rápido

 Sempre que possível reutilizar coleções ao invés de usar new e
 dispose
THIS IS SPARTA!
O que é o Sparta, vantagens, arquitetura
O QUE É O SPARTA
 Framework para desenvolvimento de jogos 2D

 Não é um engine

 Precisávamos de algo rápido para prototipagem e
 desenvolvimento

 Baseado em projetos open source como Flixel e Qt
ARQUITETURA
                      SpartaGame


       SpartaState    SpartaState   SpartaState


                     SpartaObject
   SpartaSprite   SpartaPropertyAnimation   Sparta…
ARQUITETURA
      SpartaGame     Update
                     Draw


                     Update
      SpartaState    Draw


                     Update
      SpartaSprite   Draw
ARQUITETURA
             SpartaState
MenuState   LevelSelectState   GameplayState
ARQUITETURA
 SpartaSprite   SpartaTexture   SpartaDrawable      SpartaObject




 SpartaButton   SpartaTexture   SpartaDrawable      SpartaObject




 SpartaCamera2D     SpartaDrawable   SpartaObject
TEXTURE: XNA
TEXTURE: XNA
 private Texture2D texture;

 protected override void LoadContent()
 {
   spriteBatch = new SpriteBatch(GraphicsDevice);
   texture = Content.Load<Texture2D>(“image");
 }

 protected override void Draw(GameTime gameTime)
 {
   spriteBatch.Begin();
   Vector2 pos = new Vector2(0, 0);
   spriteBatch.Draw(SpriteTexture, pos, Color.White);
   spriteBatch.End();
   base.Draw(gameTime);
 }
TEXTURE: SPARTA

 private SpartaTexture texture;

 texture = new SpartaTexture(“image”);

 Add(texture);
TRANSLAÇÃO: XNA
TRANSLAÇÃO: XNA
 private Texture2D texture;              protected override void Draw(GameTime
                                         gameTime)
                                         {
 private Vector2 pos;                      spriteBatch.Begin();
 private Vector2 posFinal;
                                         spriteBatch.Draw(SpriteTexture, pos, Color.Whit
 private float velocidade;               e);
                                            spriteBatch.End();
 protected override void LoadContent()      base.Draw(gameTime);
 {                                       }
   spriteBatch = new
 SpriteBatch(GraphicsDevice);            Protected override void Update(GameTime
                                         gameTime)
   texture =
 Content.Load<Texture2D>(“image");       {
                                            if (pos.x < posFinal.x)
                                            {
     pos = Vector2.Zero;                        pos.x += velocidade *
                                         (float)gameTime.ElapsedGameTime.TotalSecond
     velocidade = 10f;                   s;
 }                                          }
                                         }
TRANSLAÇÃO: SPARTA
 private Texture2D texture;
 texture = new SpartaTexture(“image”);
 Add(texture);

 SpartaPropertyAnimation animation = new
 SpartaPropertyAnimation(texture, "X", 0f, 100f,
    TimeSpan.FromMilliseconds(500), EasingCurve.EasingCurveType.OutCubic, null);

 Add(animation);
 animation.Begin();
FEATURES
 •   Controle de telas
 •   Transição entre telas
 •   Engine física integrado
 •   Sprites
 •   PropertyAnimation
 •   Classes pra UI
 •   Som
 •   Câmera
 •   Tombstoning
 •   Modo debug
PLUS
 •   Open Source e Free
 •   Arquitetura simples
 •   Desenvolvido pra ser extendido
 •   Fácil usar para prototipagem
 •   Desenvolvedores disponíveis
 •   Usa XNA por baixo
 •   Agora disponível em sabor morango
ROADMAP
 •   3D
 •   Multiplataforma (HTML5, C++/DirectX)
 •   Construtor de Interface
 •   Integrar engines de física de uma maneira flexível
DEMO TIME!
CONTATO
 Site do projeto
 http://projects.developer.nokia.com/sparta

 Grupo desenvolvimento de Windows Phone
 facebook.com/groups/nokiadevwp/

 Heitor
 heitor.repolho@indt.org.br

 Thiago
 thiago.valle@indt.org.br

Mais conteúdo relacionado

Mais procurados

Desenvolvendo jogos multiplataforma usando cocos2d-js
Desenvolvendo jogos multiplataforma usando cocos2d-jsDesenvolvendo jogos multiplataforma usando cocos2d-js
Desenvolvendo jogos multiplataforma usando cocos2d-jsVinicius Vecchi
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developersjuliocoopergames
 
Criando jogos digitais em java
Criando jogos digitais em javaCriando jogos digitais em java
Criando jogos digitais em javaMichel Montenegro
 
Persistência com Realm.io
Persistência com Realm.ioPersistência com Realm.io
Persistência com Realm.ioOnyo
 
Apostila do game maker 8.0 (português)
Apostila do game maker 8.0 (português)Apostila do game maker 8.0 (português)
Apostila do game maker 8.0 (português)Rafyusq Queiroz
 
Engine 2D para criação de Jogos em Java - Veja como é fácil criar um RPG 2D e...
Engine 2D para criação de Jogos em Java - Veja como é fácil criar um RPG 2D e...Engine 2D para criação de Jogos em Java - Veja como é fácil criar um RPG 2D e...
Engine 2D para criação de Jogos em Java - Veja como é fácil criar um RPG 2D e...Michel Montenegro
 
Criação de jogos game maker - férias
Criação de jogos   game maker - fériasCriação de jogos   game maker - férias
Criação de jogos game maker - fériasInstituto Inovar
 

Mais procurados (15)

Desenvolvendo jogos multiplataforma usando cocos2d-js
Desenvolvendo jogos multiplataforma usando cocos2d-jsDesenvolvendo jogos multiplataforma usando cocos2d-js
Desenvolvendo jogos multiplataforma usando cocos2d-js
 
Advanced topics for game developers
Advanced topics for game developersAdvanced topics for game developers
Advanced topics for game developers
 
Aula disparos
Aula disparosAula disparos
Aula disparos
 
Aula disparos
Aula disparosAula disparos
Aula disparos
 
Criando jogos digitais em java
Criando jogos digitais em javaCriando jogos digitais em java
Criando jogos digitais em java
 
Game programming
Game programmingGame programming
Game programming
 
CGPI - Aula 20/08/2018
CGPI - Aula 20/08/2018CGPI - Aula 20/08/2018
CGPI - Aula 20/08/2018
 
Lab3 completo
Lab3 completoLab3 completo
Lab3 completo
 
Game programming
Game programmingGame programming
Game programming
 
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island StudiosTutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
Tutorial Desenvolvendo Pong no Unity 3D - Victory Island Studios
 
Persistência com Realm.io
Persistência com Realm.ioPersistência com Realm.io
Persistência com Realm.io
 
Aula anima-modelos
Aula anima-modelosAula anima-modelos
Aula anima-modelos
 
Apostila do game maker 8.0 (português)
Apostila do game maker 8.0 (português)Apostila do game maker 8.0 (português)
Apostila do game maker 8.0 (português)
 
Engine 2D para criação de Jogos em Java - Veja como é fácil criar um RPG 2D e...
Engine 2D para criação de Jogos em Java - Veja como é fácil criar um RPG 2D e...Engine 2D para criação de Jogos em Java - Veja como é fácil criar um RPG 2D e...
Engine 2D para criação de Jogos em Java - Veja como é fácil criar um RPG 2D e...
 
Criação de jogos game maker - férias
Criação de jogos   game maker - fériasCriação de jogos   game maker - férias
Criação de jogos game maker - férias
 

Destaque

ネットスーパーでらくらくお買い物
ネットスーパーでらくらくお買い物ネットスーパーでらくらくお買い物
ネットスーパーでらくらくお買い物FLOW web planning & design
 
Welcome to International Journal of Engineering Research and Development (IJERD)
Welcome to International Journal of Engineering Research and Development (IJERD)Welcome to International Journal of Engineering Research and Development (IJERD)
Welcome to International Journal of Engineering Research and Development (IJERD)IJERD Editor
 
Menggabungkangambar2dkedalamsajianmultimedia 2 (ind)
Menggabungkangambar2dkedalamsajianmultimedia 2 (ind)Menggabungkangambar2dkedalamsajianmultimedia 2 (ind)
Menggabungkangambar2dkedalamsajianmultimedia 2 (ind)Sayugo
 
Whats new in Confluence 4.0
Whats new in Confluence 4.0Whats new in Confluence 4.0
Whats new in Confluence 4.0Teamlead
 
Bid xcel opportunity 1 (1)
Bid xcel opportunity 1 (1)Bid xcel opportunity 1 (1)
Bid xcel opportunity 1 (1)Richard Simpson
 

Destaque (8)

3.1 mendel´s work
3.1 mendel´s work3.1 mendel´s work
3.1 mendel´s work
 
ネットスーパーでらくらくお買い物
ネットスーパーでらくらくお買い物ネットスーパーでらくらくお買い物
ネットスーパーでらくらくお買い物
 
Navidad 2012
Navidad 2012Navidad 2012
Navidad 2012
 
Hanh phuc.ppt
Hanh phuc.pptHanh phuc.ppt
Hanh phuc.ppt
 
Welcome to International Journal of Engineering Research and Development (IJERD)
Welcome to International Journal of Engineering Research and Development (IJERD)Welcome to International Journal of Engineering Research and Development (IJERD)
Welcome to International Journal of Engineering Research and Development (IJERD)
 
Menggabungkangambar2dkedalamsajianmultimedia 2 (ind)
Menggabungkangambar2dkedalamsajianmultimedia 2 (ind)Menggabungkangambar2dkedalamsajianmultimedia 2 (ind)
Menggabungkangambar2dkedalamsajianmultimedia 2 (ind)
 
Whats new in Confluence 4.0
Whats new in Confluence 4.0Whats new in Confluence 4.0
Whats new in Confluence 4.0
 
Bid xcel opportunity 1 (1)
Bid xcel opportunity 1 (1)Bid xcel opportunity 1 (1)
Bid xcel opportunity 1 (1)
 

Semelhante a INdT Mobile Labs - Sparta

TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5Willian Molinari
 
Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3Odair Bonin Borges
 
IntroduçãO Ao Xna Campus Party
IntroduçãO Ao Xna  Campus PartyIntroduçãO Ao Xna  Campus Party
IntroduçãO Ao Xna Campus PartyJosé Farias
 
Erick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em FlutterErick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em FlutterDevCamp Campinas
 
Desenvolvendo games multiplataforma
Desenvolvendo games multiplataformaDesenvolvendo games multiplataforma
Desenvolvendo games multiplataformaAndré Santee
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Júlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersJúlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersiMasters
 
Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Tchelinux
 
Desenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma XnaDesenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma XnaEllison Leão
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...Tchelinux
 
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-x
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-xComputer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-x
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-xPedro Kayatt
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Flávio Ribeiro
 
Desenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanDesenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanTchelinux
 
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...Tchelinux
 

Semelhante a INdT Mobile Labs - Sparta (20)

TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
 
Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3Oficina Android - Games com AndEngine - Dia 3
Oficina Android - Games com AndEngine - Dia 3
 
IntroduçãO Ao Xna Campus Party
IntroduçãO Ao Xna  Campus PartyIntroduçãO Ao Xna  Campus Party
IntroduçãO Ao Xna Campus Party
 
Erick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em FlutterErick Zanardo - Desenvolvimento de Jogos em Flutter
Erick Zanardo - Desenvolvimento de Jogos em Flutter
 
Desenvolvendo games multiplataforma
Desenvolvendo games multiplataformaDesenvolvendo games multiplataforma
Desenvolvendo games multiplataforma
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Júlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game DevelopersJúlio Pescuite - Advanced Topics for Game Developers
Júlio Pescuite - Advanced Topics for Game Developers
 
Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.
 
Desenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma XnaDesenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma Xna
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...
Desenvolvendo Jogos com pygame - Rafael Guterres Jeffman - Tchelinux Caxias d...
 
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-x
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-xComputer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-x
Computer on the Beach 2015 - Minicurso de Jogos Multiplataforma com Cocos2d-x
 
UTools Unite Brasil
UTools Unite BrasilUTools Unite Brasil
UTools Unite Brasil
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
 
XNA Framework
XNA FrameworkXNA Framework
XNA Framework
 
Aula3 input
Aula3   inputAula3   input
Aula3 input
 
Labs Jogos Java
Labs Jogos JavaLabs Jogos Java
Labs Jogos Java
 
Desenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael JeffmanDesenvolvendo jogos com PyGame - Rafael Jeffman
Desenvolvendo jogos com PyGame - Rafael Jeffman
 
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
Desenvolvendo Jogos com PyGame - Rafael Guterres Jeffman - Tchelinux Pelotas ...
 
Minicurso pygame
Minicurso pygameMinicurso pygame
Minicurso pygame
 

INdT Mobile Labs - Sparta

  • 3. ROTEIRO • Introdução ao desenvolvimento de jogos • Como funciona o XNA • Problemas no desenvolvimento • O que é o Sparta • Vantagens em usar Sparta • Arquitetura • Demos
  • 5. INTRODUÇÃO Jogos são sistemas de tempo real pois precisam de resposta rápida e precisa Não são 100% baseados em eventos, o jogo tem um loop que controla tudo
  • 6. GAME LOOP while (!endGame) { input processamento do jogo output }
  • 7. GAME LOOP while (!endGame) { if (Keyboard.Jump.Pressed) { Player.Y -= 20 } if (Player.Y == Moeda.Y) { Player.Pontos += 10 Moeda.Delete() } Draw(Player, Player.X, Player.Y) Draw(Moeda, Moeda.X, Moeda.Y) }
  • 8. XNA É a solução disponível no Windows Phone para desenvolvimento de jogos Silverlight = Apps XNA = Jogos XNA + Silverlight perde um pouco de desempenho
  • 10. TOMBSTONING Tombstoning deve ser uma preocupação do programador quando desenvolver para Windows Phone Não é uma obrigação do jogo ter tombstoning :(
  • 11. CÂMERA E INPUT Seguir o jogador ou outro objeto Facilidade em fazer transformações como zoom e scale Cortar os objetos que estão fora da área desenhável
  • 12. CÂMERA E INPUT aTranslatedPoint.X = (float)(Math.Cos(theRotation) * (thePoint.X - theOrigin.X) - Math.Sin(theRotation) * (thePoint.Y - theOrigin.Y) + theOrigin.X); float aNumerator = (theRectangleCorner.X * theAxis.X) + (theRectangleCorner.Y * theAxis.Y); float aDenominator = (theAxis.X * theAxis.X) + (theAxis.Y * theAxis.Y); float aDivisionResult = aNumerator / aDenominator; Vector2 aCornerProjected = new Vector2(aDivisionResult * theAxis.X, aDivisionResult * theAxis.Y); float aScalar = (theAxis.X * aCornerProjected.X) + (theAxis.Y * aCornerProjected.Y);
  • 13. CONTROLE DE SPRITES É preciso uma classe para se fazer animações Classe base para se adicionar em coleções Classes derivadas de desenho que servem para outros propósitos
  • 14. MEMÓRIA Pelas normas do Windows Phone Store aplicativos em celulares com 256mb não podem ultrapassar 90mb na RAM Garbage Collector trava o jogo quando ativo Tomar cuidado para não instanciar nada no loop pois enche a memória muito rápido Sempre que possível reutilizar coleções ao invés de usar new e dispose
  • 15. THIS IS SPARTA! O que é o Sparta, vantagens, arquitetura
  • 16.
  • 17. O QUE É O SPARTA Framework para desenvolvimento de jogos 2D Não é um engine Precisávamos de algo rápido para prototipagem e desenvolvimento Baseado em projetos open source como Flixel e Qt
  • 18. ARQUITETURA SpartaGame SpartaState SpartaState SpartaState SpartaObject SpartaSprite SpartaPropertyAnimation Sparta…
  • 19. ARQUITETURA SpartaGame Update Draw Update SpartaState Draw Update SpartaSprite Draw
  • 20. ARQUITETURA SpartaState MenuState LevelSelectState GameplayState
  • 21. ARQUITETURA SpartaSprite SpartaTexture SpartaDrawable SpartaObject SpartaButton SpartaTexture SpartaDrawable SpartaObject SpartaCamera2D SpartaDrawable SpartaObject
  • 23. TEXTURE: XNA private Texture2D texture; protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); texture = Content.Load<Texture2D>(“image"); } protected override void Draw(GameTime gameTime) { spriteBatch.Begin(); Vector2 pos = new Vector2(0, 0); spriteBatch.Draw(SpriteTexture, pos, Color.White); spriteBatch.End(); base.Draw(gameTime); }
  • 24. TEXTURE: SPARTA private SpartaTexture texture; texture = new SpartaTexture(“image”); Add(texture);
  • 26. TRANSLAÇÃO: XNA private Texture2D texture; protected override void Draw(GameTime gameTime) { private Vector2 pos; spriteBatch.Begin(); private Vector2 posFinal; spriteBatch.Draw(SpriteTexture, pos, Color.Whit private float velocidade; e); spriteBatch.End(); protected override void LoadContent() base.Draw(gameTime); { } spriteBatch = new SpriteBatch(GraphicsDevice); Protected override void Update(GameTime gameTime) texture = Content.Load<Texture2D>(“image"); { if (pos.x < posFinal.x) { pos = Vector2.Zero; pos.x += velocidade * (float)gameTime.ElapsedGameTime.TotalSecond velocidade = 10f; s; } } }
  • 27. TRANSLAÇÃO: SPARTA private Texture2D texture; texture = new SpartaTexture(“image”); Add(texture); SpartaPropertyAnimation animation = new SpartaPropertyAnimation(texture, "X", 0f, 100f, TimeSpan.FromMilliseconds(500), EasingCurve.EasingCurveType.OutCubic, null); Add(animation); animation.Begin();
  • 28. FEATURES • Controle de telas • Transição entre telas • Engine física integrado • Sprites • PropertyAnimation • Classes pra UI • Som • Câmera • Tombstoning • Modo debug
  • 29. PLUS • Open Source e Free • Arquitetura simples • Desenvolvido pra ser extendido • Fácil usar para prototipagem • Desenvolvedores disponíveis • Usa XNA por baixo • Agora disponível em sabor morango
  • 30. ROADMAP • 3D • Multiplataforma (HTML5, C++/DirectX) • Construtor de Interface • Integrar engines de física de uma maneira flexível
  • 32. CONTATO Site do projeto http://projects.developer.nokia.com/sparta Grupo desenvolvimento de Windows Phone facebook.com/groups/nokiadevwp/ Heitor heitor.repolho@indt.org.br Thiago thiago.valle@indt.org.br