Desenvolvendo games multiplataforma

Click here to load reader

  • date post

    02-Dec-2014
  • Category

    Technology

  • view

    1.617
  • download

    7

Embed Size (px)

description

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

Transcript of Desenvolvendo games multiplataforma

  • 1. Desenvolvendo Games Multiplataforma
    • Andr Santee (@DecoSantee)
  • -Programador de games da Jera (@JeraSoftware)
  • -Desenvolvo ferramentas e solues para gamedev
  • Projetos:
  • -Ethanon Engine
  • -GS2D

2. 3. 4. 5. Pensando multiplataforma

  • -Por quanto tempo voc quer que seu cdigo sobreviva?
  • -"Migrar" o cdigo com pouco ou nenhum esforo? possvel?

6. Ficar preso a uma plataforma pode serfatal 7.

  • O cdigo est pronto para novas plataformas? No? Isso OK (srio!)

E sua equipe? 8. Existe linguagem flexvelassim? 9. Podemos levar C++ a qualquer lugar 10. NinJump (Backflip Studios) Pinball Ride (Massive Finger) Angry Birds (Rovio) 11.

  • Mas C++ no possui
  • garbage collection!

C++ possui bibliotecas de templates shared_ptr, weak_ptr, ... 12.

  • J eu, prefiro as linguagens dinmicas
  • e modernas!

Justo! Sem problemas... 13. Linguagens de scripting...

14. Como/Porque funciona 15. Interfaces (classes virtuais) 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 ; }; 17. Scripting scriptEngine->RegisterGlobalFunction ( "void AddEntity(const string &in)" , FUNCTION(engine::AddEntity), CALL_GENERIC ); 18. Outro modelo possvel (tambm multiplataforma) 19. 20. Mandamentos

  • I - No utilizars cdigo especfico da plataforma explicitamente dentro do cdigo do game.

II - Lembrai do primeiro mandamento, SEMPRE. 21. Problemas comuns Resolues de tela:um desafio em games baseados em sprites Mtodos de entrada: teclado, mouse, dpad, touchscreen... Codificao de strings: ANSI vs UTF-7 vs UTF-8 vs UTF-16 Suporte a RTTI e Exceptions: "To boost or not to boost?" 22. Ferramentas disponveis hoje

  • Open source: -Qt -Ogre -SDL -Lve -GS2D -Ethanon*

Proprietrias: -Unity -Unreal Engine -BatteryTech 23. www.ethanon.com.br 24. O futuro multiplataforma Jamais fique preso a uma nica plataforma 25. Perguntas?

  • Andr Santee (@DecoSantee)