SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
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



      SpartaState    Update
                     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.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;                   }
 }
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

Desenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDKDesenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDKBruno Cicanci
 
Ubiquitous Language - Portugues
Ubiquitous Language - PortuguesUbiquitous Language - Portugues
Ubiquitous Language - PortuguesAlline Oliveira
 
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
 
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
 
Persistência com Realm.io
Persistência com Realm.ioPersistência com Realm.io
Persistência com Realm.ioOnyo
 
Algoritmos de jogos
Algoritmos de jogosAlgoritmos de jogos
Algoritmos de jogosiaudesc
 
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
 
Introdução ao Desenvolvimemto de Jogos com Unity
Introdução ao Desenvolvimemto de Jogos com UnityIntrodução ao Desenvolvimemto de Jogos com Unity
Introdução ao Desenvolvimemto de Jogos com UnityWandreson Souza
 

Mais procurados (20)

Aula disparos
Aula disparosAula disparos
Aula disparos
 
Aula disparos
Aula disparosAula disparos
Aula disparos
 
Desenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDKDesenvolvimento de Jogos com Corona SDK
Desenvolvimento de Jogos com Corona SDK
 
Ubiquitous Language - Portugues
Ubiquitous Language - PortuguesUbiquitous Language - Portugues
Ubiquitous Language - Portugues
 
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
 
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
 
Game programming
Game programmingGame programming
Game programming
 
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)
 
Persistência com Realm.io
Persistência com Realm.ioPersistência com Realm.io
Persistência com Realm.io
 
Lab3 completo
Lab3 completoLab3 completo
Lab3 completo
 
Aula3 input
Aula3   inputAula3   input
Aula3 input
 
Algoritmos de jogos
Algoritmos de jogosAlgoritmos de jogos
Algoritmos de jogos
 
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
 
Game programming
Game programmingGame programming
Game programming
 
Programação para Atari 2600
Programação para Atari 2600Programação para Atari 2600
Programação para Atari 2600
 
Introdução ao Desenvolvimemto de Jogos com Unity
Introdução ao Desenvolvimemto de Jogos com UnityIntrodução ao Desenvolvimemto de Jogos com Unity
Introdução ao Desenvolvimemto de Jogos com Unity
 
Guia xna
Guia xnaGuia xna
Guia xna
 
CGPI - Aula 20/08/2018
CGPI - Aula 20/08/2018CGPI - Aula 20/08/2018
CGPI - Aula 20/08/2018
 
Scratch cap-1
Scratch cap-1Scratch cap-1
Scratch cap-1
 

Destaque

Sérgio cavalcante xna game programming no microsoft windows phone
Sérgio cavalcante   xna game programming no microsoft windows phoneSérgio cavalcante   xna game programming no microsoft windows phone
Sérgio cavalcante xna game programming no microsoft windows phoneINdT
 
Marlon luz distribua sua app para o mundo e ganhe $$
Marlon luz   distribua sua app para o mundo e ganhe $$Marlon luz   distribua sua app para o mundo e ganhe $$
Marlon luz distribua sua app para o mundo e ganhe $$INdT
 
Wesley silva design para s40
Wesley silva   design para s40Wesley silva   design para s40
Wesley silva design para s40INdT
 
Marlon Luz - Desenvolvendo games para Nokia Ssha
Marlon Luz - Desenvolvendo games para Nokia SshaMarlon Luz - Desenvolvendo games para Nokia Ssha
Marlon Luz - Desenvolvendo games para Nokia SshaINdT
 
Milton Onodera - Prototipação para Windows Phone usando o Expression Blend
Milton Onodera - Prototipação para Windows Phone usando o Expression BlendMilton Onodera - Prototipação para Windows Phone usando o Expression Blend
Milton Onodera - Prototipação para Windows Phone usando o Expression BlendINdT
 
Universal Apps: Criando apps para Windows Phone e Windows com um único código
Universal Apps: Criando apps para Windows Phone e Windows com um único códigoUniversal Apps: Criando apps para Windows Phone e Windows com um único código
Universal Apps: Criando apps para Windows Phone e Windows com um único códigoLeandro Borges
 
Awdren Fontão - Oportunidades com mobile phones utilizando Java-J2 ME
Awdren Fontão - Oportunidades com mobile phones utilizando Java-J2 MEAwdren Fontão - Oportunidades com mobile phones utilizando Java-J2 ME
Awdren Fontão - Oportunidades com mobile phones utilizando Java-J2 MEINdT
 
El dorado-academy-mumbai
El dorado-academy-mumbaiEl dorado-academy-mumbai
El dorado-academy-mumbai MIST Magic
 
Andréia Vieira - O que é mobile testing
Andréia Vieira - O que é mobile testingAndréia Vieira - O que é mobile testing
Andréia Vieira - O que é mobile testingINdT
 
Jackson Feijó - Babel fish, guias e apis
Jackson Feijó - Babel fish, guias e apisJackson Feijó - Babel fish, guias e apis
Jackson Feijó - Babel fish, guias e apisINdT
 
Email Marketing Suggestions And Facts
Email Marketing Suggestions And FactsEmail Marketing Suggestions And Facts
Email Marketing Suggestions And Factschrisgetresponse
 
Thiago Bessa - Desenvolvendo aplicativos para Windows Phone com Silverlight
Thiago Bessa - Desenvolvendo aplicativos para Windows Phone com SilverlightThiago Bessa - Desenvolvendo aplicativos para Windows Phone com Silverlight
Thiago Bessa - Desenvolvendo aplicativos para Windows Phone com SilverlightINdT
 
Raymundo ferreira desenvolvendo apps com html e java script no windows phon...
Raymundo ferreira   desenvolvendo apps com html e java script no windows phon...Raymundo ferreira   desenvolvendo apps com html e java script no windows phon...
Raymundo ferreira desenvolvendo apps com html e java script no windows phon...INdT
 
Raymundo Ferreira - Desenvolvimento de aplicativos S40 com Web apps
Raymundo Ferreira - Desenvolvimento de aplicativos S40 com Web appsRaymundo Ferreira - Desenvolvimento de aplicativos S40 com Web apps
Raymundo Ferreira - Desenvolvimento de aplicativos S40 com Web appsINdT
 
Sergio cavalcante apps de consumo de ap is de internet para windows phone
Sergio cavalcante   apps de consumo de ap is de internet para windows phoneSergio cavalcante   apps de consumo de ap is de internet para windows phone
Sergio cavalcante apps de consumo de ap is de internet para windows phoneINdT
 
Pitch for mandible
Pitch for mandiblePitch for mandible
Pitch for mandibleRyan Redman
 

Destaque (20)

Sérgio cavalcante xna game programming no microsoft windows phone
Sérgio cavalcante   xna game programming no microsoft windows phoneSérgio cavalcante   xna game programming no microsoft windows phone
Sérgio cavalcante xna game programming no microsoft windows phone
 
Marlon luz distribua sua app para o mundo e ganhe $$
Marlon luz   distribua sua app para o mundo e ganhe $$Marlon luz   distribua sua app para o mundo e ganhe $$
Marlon luz distribua sua app para o mundo e ganhe $$
 
Wesley silva design para s40
Wesley silva   design para s40Wesley silva   design para s40
Wesley silva design para s40
 
Marlon Luz - Desenvolvendo games para Nokia Ssha
Marlon Luz - Desenvolvendo games para Nokia SshaMarlon Luz - Desenvolvendo games para Nokia Ssha
Marlon Luz - Desenvolvendo games para Nokia Ssha
 
Milton Onodera - Prototipação para Windows Phone usando o Expression Blend
Milton Onodera - Prototipação para Windows Phone usando o Expression BlendMilton Onodera - Prototipação para Windows Phone usando o Expression Blend
Milton Onodera - Prototipação para Windows Phone usando o Expression Blend
 
Universal Apps: Criando apps para Windows Phone e Windows com um único código
Universal Apps: Criando apps para Windows Phone e Windows com um único códigoUniversal Apps: Criando apps para Windows Phone e Windows com um único código
Universal Apps: Criando apps para Windows Phone e Windows com um único código
 
Awdren Fontão - Oportunidades com mobile phones utilizando Java-J2 ME
Awdren Fontão - Oportunidades com mobile phones utilizando Java-J2 MEAwdren Fontão - Oportunidades com mobile phones utilizando Java-J2 ME
Awdren Fontão - Oportunidades com mobile phones utilizando Java-J2 ME
 
Question 7
Question 7Question 7
Question 7
 
El dorado-academy-mumbai
El dorado-academy-mumbaiEl dorado-academy-mumbai
El dorado-academy-mumbai
 
Challenge power point
Challenge power pointChallenge power point
Challenge power point
 
Andréia Vieira - O que é mobile testing
Andréia Vieira - O que é mobile testingAndréia Vieira - O que é mobile testing
Andréia Vieira - O que é mobile testing
 
Homonyms hidaya
Homonyms hidayaHomonyms hidaya
Homonyms hidaya
 
Distribution
DistributionDistribution
Distribution
 
Jackson Feijó - Babel fish, guias e apis
Jackson Feijó - Babel fish, guias e apisJackson Feijó - Babel fish, guias e apis
Jackson Feijó - Babel fish, guias e apis
 
Email Marketing Suggestions And Facts
Email Marketing Suggestions And FactsEmail Marketing Suggestions And Facts
Email Marketing Suggestions And Facts
 
Thiago Bessa - Desenvolvendo aplicativos para Windows Phone com Silverlight
Thiago Bessa - Desenvolvendo aplicativos para Windows Phone com SilverlightThiago Bessa - Desenvolvendo aplicativos para Windows Phone com Silverlight
Thiago Bessa - Desenvolvendo aplicativos para Windows Phone com Silverlight
 
Raymundo ferreira desenvolvendo apps com html e java script no windows phon...
Raymundo ferreira   desenvolvendo apps com html e java script no windows phon...Raymundo ferreira   desenvolvendo apps com html e java script no windows phon...
Raymundo ferreira desenvolvendo apps com html e java script no windows phon...
 
Raymundo Ferreira - Desenvolvimento de aplicativos S40 com Web apps
Raymundo Ferreira - Desenvolvimento de aplicativos S40 com Web appsRaymundo Ferreira - Desenvolvimento de aplicativos S40 com Web apps
Raymundo Ferreira - Desenvolvimento de aplicativos S40 com Web apps
 
Sergio cavalcante apps de consumo de ap is de internet para windows phone
Sergio cavalcante   apps de consumo de ap is de internet para windows phoneSergio cavalcante   apps de consumo de ap is de internet para windows phone
Sergio cavalcante apps de consumo de ap is de internet para windows phone
 
Pitch for mandible
Pitch for mandiblePitch for mandible
Pitch for mandible
 

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

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
 
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
 
IntroduçãO Ao Xna Campus Party
IntroduçãO Ao Xna  Campus PartyIntroduçãO Ao Xna  Campus Party
IntroduçãO Ao Xna Campus PartyJosé Farias
 
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 games multiplataforma
Desenvolvendo games multiplataformaDesenvolvendo games multiplataforma
Desenvolvendo games multiplataformaAndré Santee
 
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 Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Tchelinux
 
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
 
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
 
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
 
Passo a passo com o vaca5
Passo a passo com o vaca5Passo a passo com o vaca5
Passo a passo com o vaca5Hamilton Lima
 
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
 
Arduino genius com display lcd 16x2 usando i2 c
Arduino  genius com display lcd 16x2 usando i2 cArduino  genius com display lcd 16x2 usando i2 c
Arduino genius com display lcd 16x2 usando i2 cThiago Pereira
 
Desenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip SantosDesenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip Santosjonathanblacknight
 
Desenvolvimento de jogos e ogre 3D - Unisantos
Desenvolvimento de jogos e ogre 3D - UnisantosDesenvolvimento de jogos e ogre 3D - Unisantos
Desenvolvimento de jogos e ogre 3D - Unisantosjonathanblacknight
 

Semelhante a Thiago Valle e Heitor Repolho - Utilizando sparta para para desenvolvimento de jogos (20)

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
 
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
 
IntroduçãO Ao Xna Campus Party
IntroduçãO Ao Xna  Campus PartyIntroduçãO Ao Xna  Campus Party
IntroduçãO Ao Xna Campus Party
 
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 games multiplataforma
Desenvolvendo games multiplataformaDesenvolvendo games multiplataforma
Desenvolvendo games multiplataforma
 
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 Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.
 
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 ...
 
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
 
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...
 
Aula anima-modelos
Aula anima-modelosAula anima-modelos
Aula anima-modelos
 
Labs Jogos Java
Labs Jogos JavaLabs Jogos Java
Labs Jogos Java
 
Minicurso pygame
Minicurso pygameMinicurso pygame
Minicurso pygame
 
Passo a passo com o vaca5
Passo a passo com o vaca5Passo a passo com o vaca5
Passo a passo com o vaca5
 
Desenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma XnaDesenvolvimento De Jogos Na Plataforma Xna
Desenvolvimento De Jogos Na Plataforma Xna
 
Arduino genius com display lcd 16x2 usando i2 c
Arduino  genius com display lcd 16x2 usando i2 cArduino  genius com display lcd 16x2 usando i2 c
Arduino genius com display lcd 16x2 usando i2 c
 
Desenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip SantosDesenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip Santos
 
Desenvolvimento de jogos e ogre 3D - Unisantos
Desenvolvimento de jogos e ogre 3D - UnisantosDesenvolvimento de jogos e ogre 3D - Unisantos
Desenvolvimento de jogos e ogre 3D - Unisantos
 
XNA Framework
XNA FrameworkXNA Framework
XNA Framework
 

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

  • 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
  • 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. GAME LOOP while (!endGame) { input processamento do jogo output }
  • 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. XNA É a solução disponível no Windows Phone para desenvolvimento de jogos Silverlight = Apps XNA = Jogos XNA + Silverlight perde um pouco de desempenho
  • 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. 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. 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. 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. 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. THIS IS SPARTA! O que é o Sparta, vantagens, arquitetura
  • 15.
  • 16. 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
  • 17. ARQUITETURA SpartaGame SpartaState SpartaState SpartaState SpartaObject SpartaSprite SpartaPropertyAnimation Sparta…
  • 18. ARQUITETURA SpartaGame Update Draw SpartaState Update Draw Update SpartaSprite Draw
  • 19. ARQUITETURA SpartaState MenuState LevelSelectState GameplayState
  • 20. ARQUITETURA SpartaSprite SpartaTexture SpartaDrawable SpartaObject SpartaButton SpartaTexture SpartaDrawable SpartaObject SpartaCamera2D SpartaDrawable SpartaObject
  • 22. 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); }
  • 23. TEXTURE: SPARTA private SpartaTexture texture; texture = new SpartaTexture(“image”); Add(texture);
  • 25. 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; } }
  • 26. 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();
  • 27. FEATURES • Controle de telas • Transição entre telas • Engine física integrado • Sprites • PropertyAnimation • Classes pra UI • Som • Câmera • Tombstoning • Modo debug
  • 28. 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
  • 29. ROADMAP • 3D • Multiplataforma (HTML5, C++/DirectX) • Construtor de Interface • Integrar engines de física de uma maneira flexível
  • 31. 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