indt mobile labs - sparta

Download INdT Mobile Labs - Sparta

Post on 04-Aug-2015

350 views

Category:

Technology

2 download

Embed Size (px)

TRANSCRIPT

1. # indtmobilelabs 2. UTILIZANDO SPARTA PARADESENVOLVIMENTO DEJOGOS 3. ROTEIRO Introduo ao desenvolvimento de jogos Como funciona o XNA Problemas no desenvolvimento O que o Sparta Vantagens em usar Sparta Arquitetura Demos 4. DESENVOLVIMENTODE JOGOSIntroduo a jogos, sobre o XNA 5. INTRODUO Jogos so sistemas de tempo real pois precisam de resposta rpida e precisa No so 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 += 10Moeda.Delete()}Draw(Player, Player.X, Player.Y)Draw(Moeda, Moeda.X, Moeda.Y)} 8. XNA a soluo disponvel no Windows Phone para desenvolvimento de jogos Silverlight = Apps XNA = Jogos XNA + Silverlight perde um pouco de desempenho 9. PARTICULARIDADESMemria, tombstoning, sprites, input ecmera 10. TOMBSTONING Tombstoning deve ser uma preocupao do programador quando desenvolver para Windows Phone No uma obrigao do jogo ter tombstoning:( 11. CMERA E INPUT Seguir o jogador ou outro objeto Facilidade em fazer transformaes como zoom e scale Cortar os objetos que esto fora da rea desenhvel 12. CMERA 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 animaes Classe base para se adicionar em colees Classes derivadas de desenho que servem para outros propsitos 14. MEMRIA Pelas normas do Windows Phone Store aplicativos em celulares com 256mb no podem ultrapassar 90mb na RAM Garbage Collector trava o jogo quando ativo Tomar cuidado para no instanciar nada no loop pois enche a memria muito rpido Sempre que possvel reutilizar colees ao invs de usar new e dispose 15. THIS IS SPARTA!O que o Sparta, vantagens, arquitetura 16. O QUE O SPARTA Framework para desenvolvimento de jogos 2D No um engine Precisvamos de algo rpido para prototipagem e desenvolvimento Baseado em projetos open source como Flixel e Qt 17. ARQUITETURASpartaGame SpartaStateSpartaState SpartaState SpartaObject SpartaSprite SpartaPropertyAnimation Sparta 18. ARQUITETURASpartaGame Update Draw UpdateSpartaStateDraw UpdateSpartaSprite Draw 19. ARQUITETURA SpartaStateMenuState LevelSelectState GameplayState 20. ARQUITETURA SpartaSprite SpartaTexture SpartaDrawableSpartaObject SpartaButton SpartaTexture SpartaDrawableSpartaObject SpartaCamera2D SpartaDrawable SpartaObject 21. TEXTURE: XNA 22. TEXTURE: XNA private Texture2D texture; protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); texture = Content.Load(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); 24. TRANSLAO: XNA 25. TRANSLAO: 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(image"); {if (pos.x < posFinal.x){ pos = Vector2.Zero;pos.x += velocidade * (float)gameTime.ElapsedGameTime.TotalSecond velocidade = 10f; s; }} } 26. TRANSLAO: 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 Transio entre telas Engine fsica integrado Sprites PropertyAnimation Classes pra UI Som Cmera Tombstoning Modo debug 28. PLUS Open Source e Free Arquitetura simples Desenvolvido pra ser extendido Fcil usar para prototipagem Desenvolvedores disponveis Usa XNA por baixo Agora disponvel em sabor morango 29. ROADMAP 3D Multiplataforma (HTML5, C++/DirectX) Construtor de Interface Integrar engines de fsica de uma maneira flexvel 30. DEMO TIME! 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