O documento discute os desafios e soluções para o desenvolvimento multiplataforma. O principal desafio é alcançar o maior público possível em várias plataformas. As principais soluções são utilizar frameworks como Corona, Moai e Construct 2, além de tecnologias como ActionScript 3, Javascript e HTML5 e o Unity. Na prática, projetos simples podem ter código único enquanto projetos complexos precisam de adaptações para cada plataforma.
Desafio do desenvolvimento multiplataforma, 2º SouWebPel
1.
2. O desafio (e soluções) do
desenvolvimento multiplataforma
Luiz Alessandro Nörnberg
CTO, Izyplay Game Studio
luiz.nornberg@izyplay.com.br
3. 3
Luiz Alessandro Nörnberg
• Diretor de Tecnologia no Izyplay Game Studio
• Editor do blog Abrindo o Jogo
• 10 anos como diretor de R&D na Gestum S.A.
• Total de 20 anos de desenvolvimento de jogos digitais
• Midcore gamer (sempre que dá tempo...)
“Possuo a maior parte do EXP na parte tecnológica,
mas já completei várias quests de game design.”
6. 6
Qual é mesmo o desafio?
• “Write once, run every where”
• Alcançar o maior público possível
• Alcançar o público o maior tempo possível
– Estar sempre disponível quando o público quiser
7. 7
Principalmente em
• Jogos casuais
– Cada vez mais um “serviço”, acessivel em varias
plataformas.
– Baixo valor comercial, “ganha na quantidade”
• Advergames
– Nem precisa explicar...
– Quanto mais impactados, melhor
8. 8
Porque é um desafio
• Infelizmente, é assim que é
• A segmentação ainda é reforçada pelos fabricantes
– Todos querem seus apps e games
– De preferência, SÓ na plataforma deles...
• Não existe hoje uma solução ideal crossplataforma
9. 9
Quais plataformas temos hoje?
• Desktop (Web) • iOS
• Smartphone • Android
• Tablet • Windows Phone
• Web • Blackberry Tablet OS (Playbook)
• Smart TV • Windows 7
• Windows 8
Falando em games... • Mac
...não esqueçamos os • Linuxes
consoles
11. 11
Muitas opções
• Muitos frameworks e ferramentas
• Corona, Moai, Construct 2, Phonegap, Appmobi, etc.
• A maioria não é para todas plataformas
• Os mais flexíveis adicionam muitas camadas extras
• Não raramente demandam linguagem própria ou
pouco conhecida
13. 13
E o Java?
• Ainda é uma possibilidade, em termos técnicos
• Presente em muitos locais (desktop, blu-ray, set-top
box, feature phone)
• Ausente onde é importante hoje (smartphones,
tablets, smart TVs)
• Fazem apenas 4 anos que eu sugeria Java como
multiplataforma!
14. 14
Unity
• Há tempos mantendo-se como opção multiplataforma
• Principal opção para jogos “pesados” (leia-se 3D)
• Windows, Linux, Mac
• iOS, Android, Windows Phone
• Web
• Consoles!
15. 15
Flash rises
• Flash volta à cena para mobile
• Quer dizer, o AIR, Adobe Integrated Runtime
• Mesmo o AIR possui resistência em algumas
plataformas (Windows Phone, Smart TVs)
• Atende Win 7, Mac, Linux, iOS, Android, Blackberry
• Provavelmente vai atender Win 8 e Win Phone 8
• Hoje, é a melhor tecnologia crossplataforma para
serviços leves e médios
16. 16
Javascript + HTML 5
• Única crossplataforma de fato
• Desde o desktop até a Smart TV
• Potencial muito grande (hoje, apenas isso)
– Digamos que apenas serviços leves
• Problemas:
– Falta de ferramentas / workflow
– Falta de padronização
– Variações grandes no grau de suporte (WebGL,
áudio, cache, etc)
18. 18
Apps adaptativos
• Projetos simples conseguem ter codebase única
• Projetos complexos precisam ser adaptativos
– Sim, estou falando de IFs no código
– Não são pecado, não...
• Diferenças grandes exigem código separado
19. 19
Além da implementação
• O projeto precisa prever a multiplataforma
(principalmente o game design)
• Quando possível, projeta-se pelo mínimo
denominador comum
• Caso contrário, teremos código separado
20. 20
Mesma “base” do código
• O importante é isolar a base do código, o “core”
• Ter blocos de código em separado não é realmente um
problema, se bastar compilar cada um separadamente
21. 21
Ganhei multiplataforma, perdi algo?
• Sim!
• Desempenho (dependendo do projeto)
• Máxima integração com a plataforma (look and feel)
• Recursos específicos da plataforma (sensores, etc)
• Há quem critique o desenvolvimento crossplataforma
por conta destes aspectos.
• A solução, por enquanto, é realmente portar o código.
23. 23
AIR, HTML, Unity
• Estas são as tecnologias crossplataformas “de
verdade”
• AIR e HTML servem para apps (além de games)
• Unity é a opção para foco apenas em jogos (consoles)
O cenário é muito melhor do que a 3 anos atrás, mas
certamente ainda bem pior do que daqui a 3 anos...