UTILIZANDO SPARTA PARADESENVOLVIMENTO DE JOGOS
ROTEIRO •   Introdução ao desenvolvimento de jogos •   Como funciona o XNA •   Problemas no desenvolvimento •   O que é o ...
DESENVOLVIMENTO DEJOGOSIntroduçã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...
GAME LOOP while (!endGame) {   input   processamento do jogo   output }
GAME LOOP   while (!endGame)            {              if (Keyboard.Jump.Pressed)              {                 Player.Y ...
XNA É a solução disponível no Windows Phone para desenvolvimento de jogos Silverlight = Apps XNA = Jogos XNA + Silverlight...
PARTICULARIDADESMemória, tombstoning, sprites, input ecâmera
TOMBSTONING Tombstoning deve ser uma preocupação do programador quando desenvolver para Windows Phone Não é uma obrigação ...
CÂMERA E INPUT Seguir o jogador ou outro objeto Facilidade em fazer transformações como zoom e scale Cortar os objetos que...
CÂMERA E INPUT aTranslatedPoint.X = (float)(Math.Cos(theRotation) * (thePoint.X - theOrigin.X) - Math.Sin(theRotation) * (...
CONTROLE DE SPRITES É preciso uma classe para se fazer animações Classe base para se adicionar em coleções Classes derivad...
MEMÓRIA Pelas normas do Windows Phone Store aplicativos em celulares com 256mb não podem ultrapassar 90mb na RAM Garbage C...
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 ...
ARQUITETURA                    SpartaGame       SpartaState SpartaState SpartaState                    SpartaObject   Spar...
ARQUITETURA      SpartaGame     Update                     Draw      SpartaState    Update                     Draw       ...
ARQUITETURA             SpartaStateMenuState   LevelSelectState   GameplayState
ARQUITETURA SpartaSprite   SpartaTexture   SpartaDrawable      SpartaObject SpartaButton   SpartaTexture   SpartaDrawable ...
TEXTURE: XNA
TEXTURE: XNA private Texture2D texture; protected override void LoadContent() {   spriteBatch = new SpriteBatch(GraphicsDe...
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                             ...
TRANSLAÇÃO: SPARTA private Texture2D texture; texture = new SpartaTexture(“image”); Add(texture); SpartaPropertyAnimation ...
FEATURES •   Controle de telas •   Transição entre telas •   Engine física integrado •   Sprites •   PropertyAnimation •  ...
PLUS •   Open Source e Free •   Arquitetura simples •   Desenvolvido pra ser extendido •   Fácil usar para prototipagem • ...
ROADMAP •   3D •   Multiplataforma (HTML5, C++/DirectX) •   Construtor de Interface •   Integrar engines de física de uma ...
DEMO TIME!
CONTATO Site do projeto http://projects.developer.nokia.com/sparta Grupo desenvolvimento de Windows Phone facebook.com/gro...
Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento de jogos
Upcoming SlideShare
Loading in …5
×

Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento de jogos

434 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
434
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento de jogos

  1. 1. UTILIZANDO SPARTA PARADESENVOLVIMENTO DE JOGOS
  2. 2. ROTEIRO • Introdução ao desenvolvimento de jogos • Como funciona o XNA • Problemas no desenvolvimento • O que é o Sparta • Vantagens em usar Sparta • Arquitetura • Demos
  3. 3. DESENVOLVIMENTO DEJOGOSIntrodução a jogos, sobre o XNA
  4. 4. 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
  5. 5. GAME LOOP while (!endGame) { input processamento do jogo output }
  6. 6. 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) }
  7. 7. XNA É a solução disponível no Windows Phone para desenvolvimento de jogos Silverlight = Apps XNA = Jogos XNA + Silverlight perde um pouco de desempenho
  8. 8. PARTICULARIDADESMemória, tombstoning, sprites, input ecâmera
  9. 9. TOMBSTONING Tombstoning deve ser uma preocupação do programador quando desenvolver para Windows Phone Não é uma obrigação do jogo ter tombstoning :(
  10. 10. 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
  11. 11. 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);
  12. 12. 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
  13. 13. 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
  14. 14. THIS IS SPARTA!O que é o Sparta, vantagens, arquitetura
  15. 15. 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
  16. 16. ARQUITETURA SpartaGame SpartaState SpartaState SpartaState SpartaObject SpartaSprite SpartaPropertyAnimation Sparta…
  17. 17. ARQUITETURA SpartaGame Update Draw SpartaState Update Draw Update SpartaSprite Draw
  18. 18. ARQUITETURA SpartaStateMenuState LevelSelectState GameplayState
  19. 19. ARQUITETURA SpartaSprite SpartaTexture SpartaDrawable SpartaObject SpartaButton SpartaTexture SpartaDrawable SpartaObject SpartaCamera2D SpartaDrawable SpartaObject
  20. 20. TEXTURE: XNA
  21. 21. 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); }
  22. 22. TEXTURE: SPARTA private SpartaTexture texture; texture = new SpartaTexture(“image”); Add(texture);
  23. 23. TRANSLAÇÃO: XNA
  24. 24. 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.White); private float velocidade; spriteBatch.End(); base.Draw(gameTime); protected override void LoadContent() } { spriteBatch = new Protected override void Update(GameTime SpriteBatch(GraphicsDevice); gameTime) texture = { Content.Load<Texture2D>(“image"); if (pos.x < posFinal.x) { pos = Vector2.Zero; pos.x += velocidade * (float)gameTime.ElapsedGameTime.TotalSeconds; } velocidade = 10f; } }
  25. 25. 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();
  26. 26. FEATURES • Controle de telas • Transição entre telas • Engine física integrado • Sprites • PropertyAnimation • Classes pra UI • Som • Câmera • Tombstoning • Modo debug
  27. 27. 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
  28. 28. ROADMAP • 3D • Multiplataforma (HTML5, C++/DirectX) • Construtor de Interface • Integrar engines de física de uma maneira flexível
  29. 29. DEMO TIME!
  30. 30. 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

×