Desenvolvendo games multiplataforma

1,470 views

Published on

Palestra ministrada no The Developers Conference (TDC) em São Paulo no dia 10/07/2011 sobre desenvolvimento de games multiplataforma.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,470
On SlideShare
0
From Embeds
0
Number of Embeds
317
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Desenvolvendo games multiplataforma

  1. 1. Desenvolvendo Games Multiplataforma <ul><li>André Santee (@DecoSantee) </li></ul><ul><li>-Programador de games da Jera (@JeraSoftware) </li></ul><ul><li>-Desenvolvo ferramentas e soluções para gamedev </li></ul><ul><li>Projetos: </li></ul><ul><li>-Ethanon Engine </li></ul><ul><li>-GS2D </li></ul>
  2. 5. Pensando multiplataforma <ul><li>-Por quanto tempo você quer que seu código sobreviva? </li></ul><ul><li>-&quot;Migrar&quot; o código com pouco ou nenhum esforço? É possível? </li></ul>
  3. 6. Ficar preso a uma plataforma pode ser fatal
  4. 7. <ul><li>O código está pronto para novas plataformas? Não? Isso é OK (sério!) </li></ul>E sua equipe?
  5. 8. Existe linguagem flexível assim?
  6. 9. Podemos levar C++ a qualquer lugar
  7. 10. NinJump (Backflip Studios) Pinball Ride (Massive Finger) Angry Birds (Rovio)
  8. 11. <ul><li>Mas C++ não possui </li></ul><ul><li>garbage collection! </li></ul>C++ possui bibliotecas de templates shared_ptr<>, weak_ptr<>, ...
  9. 12. <ul><li>Já eu, prefiro as linguagens dinâmicas </li></ul><ul><li>e modernas! </li></ul>Justo! Sem problemas...
  10. 13. Linguagens de scripting... <ul><li>  </li></ul>
  11. 14. Como/Porque funciona
  12. 15. Interfaces (classes virtuais)
  13. 16. class   Texture { public :      virtual   bool   SetTexture ( const   unsigned   int   passIdx   =   0 )   =   0 ;      virtual   math :: Vector2   GetBitmapSize ()   const   =   0 ; protected :      virtual   bool   LoadTexture (          VideoWeakPtr   video ,          const   string &   fileName ,   GS_COLOR   mask ,          const   unsigned   int   width   =   0 ,   const   unsigned   int   height   =   0 ,          const   unsigned   int   nMipMaps   =   0      )   =   0 ; }; class   GLES2Texture   :   public   Texture { public :      GLES2Texture ( VideoWeakPtr   video ,   const   str_type :: string &   fileName );      ~ GLES2Texture ();      bool   SetTexture ( const   unsigned   int   passIdx   =   0 );      math :: Vector2   GetBitmapSize ()   const ; protected :      bool   LoadTexture (          VideoWeakPtr   video ,          const   string &   fileName ,          GS_COLOR   mask ,          const   unsigned   int   width   =   0 ,   const   unsigned   int   height   =   0 ,          const   unsigned   int   nMipMaps   =   0 );      GLuint   m_textureID ; };
  14. 17. Scripting scriptEngine->RegisterGlobalFunction (    &quot;void AddEntity(const string &in)&quot; ,   FUNCTION(engine::AddEntity),   CALL_GENERIC );
  15. 18. Outro modelo possível (também multiplataforma)
  16. 20. Mandamentos <ul><li>I - Não utilizarás código específico da plataforma explicitamente dentro do código do game. </li></ul>II - Lembrai do primeiro mandamento, SEMPRE.
  17. 21. Problemas comuns Resoluções de tela: um desafio em games baseados em sprites Métodos de entrada:  teclado, mouse, dpad, touchscreen... Codificação de strings:  ANSI vs UTF-7 vs UTF-8 vs UTF-16  Suporte a RTTI e Exceptions: &quot;To boost or not to boost?&quot;          
  18. 22. Ferramentas disponíveis hoje <ul><li>Open source: -Qt -Ogre -SDL -Löve -GS2D -Ethanon* </li></ul>Proprietárias: -Unity -Unreal Engine -BatteryTech
  19. 23. www.ethanon.com.br
  20. 24. O futuro é multiplataforma Jamais fique preso a uma única plataforma
  21. 25. Perguntas? <ul><li>André Santee (@DecoSantee) </li></ul>

×