Desenvolvendo games multiplataforma
-
Upload
andre-santee -
Category
Technology
-
view
1.623 -
download
7
description
Transcript of Desenvolvendo games multiplataforma
Desenvolvendo Games Multiplataforma
André Santee (@DecoSantee)-Programador de games da Jera (@JeraSoftware)-Desenvolvo ferramentas e soluções para gamedev
Projetos:-Ethanon Engine-GS2D
Pensando multiplataforma
-Por quanto tempo você quer que seu código sobreviva?-"Migrar" o código com pouco ou nenhum esforço? É possível?
Ficar preso a uma plataforma pode ser fatal
O código está pronto para novas plataformas? Não? Isso é OK (sério!)
E sua equipe?
Existe linguagem flexível assim?
Podemos levar C++ a qualquer lugar
NinJump (Backflip Studios)Pinball Ride (Massive Finger)
Angry Birds (Rovio)
Mas C++ não possuigarbage collection!
C++ possui bibliotecas de templates shared_ptr<>, weak_ptr<>, ...
Já eu, prefiro as linguagens dinâmicas
e modernas!
Justo!Sem problemas...
Linguagens de scripting...
Como/Porque funciona
Interfaces (classes virtuais)
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;};
Scripting
scriptEngine->RegisterGlobalFunction( "void AddEntity(const string &in)", FUNCTION(engine::AddEntity), CALL_GENERIC);
Outro modelo possível
(também multiplataforma)
Mandamentos
I - Não utilizarás código específico da plataforma explicitamente dentro do código do game.
II - Lembrai do primeiro mandamento, SEMPRE.
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:"To boost or not to boost?"
Ferramentas disponíveis hoje
Open source:-Qt-Ogre-SDL-Löve-GS2D-Ethanon*
Proprietárias:-Unity-Unreal Engine-BatteryTech
www.ethanon.com.br
O futuro é multiplataforma
Jamais fique preso a uma única plataforma
Perguntas?
André Santee (@DecoSantee)