INdT Mobile Labs - Sparta
Upcoming SlideShare
Loading in...5
×
 

INdT Mobile Labs - Sparta

on

  • 646 views

Utilizando Sparta para desenvolvimento de Jogos. Autores: Thiago Valle e Heitor Carlos.

Utilizando Sparta para desenvolvimento de Jogos. Autores: Thiago Valle e Heitor Carlos.

Statistics

Views

Total Views
646
Views on SlideShare
646
Embed Views
0

Actions

Likes
0
Downloads
7
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

INdT Mobile Labs - Sparta INdT Mobile Labs - Sparta Presentation Transcript

  • # indtmobilelabs
  • UTILIZANDO SPARTA PARADESENVOLVIMENTO DEJOGOS
  • ROTEIRO • Introdução ao desenvolvimento de jogos • Como funciona o XNA • Problemas no desenvolvimento • O que é o Sparta • Vantagens em usar Sparta • Arquitetura • Demos
  • DESENVOLVIMENTODE JOGOSIntroduçã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
  • 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 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 SpartaStateMenuState 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