Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Desafios técnicos no mercado mobile

351 views

Published on

Posmortem técnico com desafios chave no projeto Copa Toon: Goleadores, produzido na Aquiris Game Studio em parceria com a Cartoon Network Games.

Published in: Software
  • Be the first to comment

Desafios técnicos no mercado mobile

  1. 1. Desafios técnicos no mercado mobile
  2. 2. Know your engine
  3. 3. A Unity... ...é uma ótima engine. Mas… ...não resolve tudo sozinha. ...é extensa. ...tem bugs.
  4. 4. Know your engine Estude a engine Entenda o que ela faz e não faz por você Conheça cada canto e comportamento que puder Conheça os bugs e aprenda a contorná-los
  5. 5. Como? Documentação Learning materials Forums UnityAnswers Google ...e usando!
  6. 6. O caso dos bugs Software tem bugs. Unity não é exceção. O que fazer ao encontrar um bug? Investigar Isolar Reportar Contornar
  7. 7. Multiplayer
  8. 8. Multiplayer Online - Photon Cloud Wi-Fi local - UNET Código comum + camada de abstração Muito pouco código específico
  9. 9. Online - Photon Cloud Bom histórico Fácil de usar com Unity Não requer gerenciamento Servidores em várias regiões
  10. 10. Online - Photon Cloud Photon Realtime Seleção automática de região Conexão e matchmaking invisíveis ao jogador (exceto Play with Friends) Matchmaking por fora (!!)
  11. 11. Wi-Fi Local - UNET Integrado na engine Simples de usar Suporta descoberta automática API similar ao Photon Realtime Facilita abstração
  12. 12. Wi-Fi Local - UNET Low-Level API Descoberta automática de partidas Lobby (create + join)
  13. 13. Código genérico (De)serialização de mensagens Thrift (exceto player state) Matchmaking Eventos de gameplay Player state interpolation/extrapolation
  14. 14. Como lidar com lag? Minta! Sincronização perfeita é impossível Faça o possível para parecer certo Exemplo: Tackle
  15. 15. Jogador A
  16. 16. Jogador A Jogador B
  17. 17. Backend
  18. 18. Features User Accounts Club Tournaments Matchmaking Casual/Ranked Play with Friends
  19. 19. Tecnologia AWS Docker Node.js DynamoDB Redis
  20. 20. AWS Stack Aplicação Node.js em cima de ECS + ELB Users + Clubs DynamoDB + Dynamic DynamoDB Matchmaking + Ranking + Play with Friends ElastiCache (Redis)
  21. 21. Usem Redis para leaderboards! Bruno “Tinnus” Ferreira - Unite 2016 São Paulo
  22. 22. Otimização Fazendo seu jogo rodar no celular da sua avó
  23. 23. Otimização de assets (na autoração) Quantidade e duração de sons Tamanho das malhas e texturas Simplificação de Shaders Texture Atlas Batching, batching, batching
  24. 24. Otimização de assets (na importação) Compressão de texturas Compressão de animações Compressão de sons Em mobile, quase sempre mono é ok ;)
  25. 25. Otimização de tamanho do build Log de build é seu amigo Veja quem está ocupando mais espaço Descubra assets “fantasmas” Duplicatas Placeholders Features incompletas/removidas
  26. 26. Otimização de código Não alocar nada no Update “new” = alocação (exceto Vector3, Quaternion etc) Reutilizar estruturas de dados API da Unity suporta esta ideia Exemplo: GetComponentsInChildren(list)
  27. 27. Usem o maldito Profiler! Bruno “Tinnus” Ferreira - Unite 2016 São Paulo
  28. 28. Mais? Palestra na Unite 2014 bit.ly/pcdasuaavo
  29. 29. Desafios técnicos no desenvolvimento de muito conteúdo ● Memória em runtime + Separação de cenas; ● Tamanho da build; ● Gera conteúdo em runtime (RTT); ● Carregamento dinâmico.
  30. 30. Resumo de conteúdo ● 144 personagens; ● 6 cenários; ● 16 capitães; ● 2 uniformes por capitão; ● UI baseada em ilustrações;
  31. 31. Assuntos ● Cenário ● FX ● Personagens ● UI
  32. 32. Cenários ● Existem 6 estádios no Goleadores, cada um com um estilo diferente atrelado ao cartoon que está referenciando; ● Ainda assim, cenários otimizados com pixel shader bem simples.
  33. 33. Matcap
  34. 34. Créditos: Jean Moreno
  35. 35. FX https://www.behance.net/gdacas
  36. 36. FX Objetivo: Estética cartoon, sprite sheet; Problema com sprite sheet: Produção, memória e resolução;
  37. 37. FX: Soluções Um canal com múltiplos frames!
  38. 38. FX: Soluções
  39. 39. FX: Soluções
  40. 40. RGB R G B
  41. 41. RGB R G B
  42. 42. RGB R G B
  43. 43. Personagens
  44. 44. Personagens: 3 Categories 3 Body shapes 16 Captains
  45. 45. Personagens: 3 Categories 3 Body shapes 16 Captains 144 meshes? 144 textures???
  46. 46. Nope UV1 UV2
  47. 47. Personagens:
  48. 48. UI - tips and tricks ● Jogos atuais possuem MUITA UI; ● Picota! ● Canais diferentes pra shapes diferentes; ● Custom Shader pra Soft Mask;
  49. 49. UI - tips and tricks
  50. 50. UI - tips and tricks
  51. 51. UI - Soft Mask ● Shader customizado de UI com um segundo input de textura grayscale multiplicando no alpha. ● Essa textura não tem repeat, recebe mapeamento em screenspace com offset alimentado por um componente.
  52. 52. Contato Bruno “Tinnus” Ferreira Programador bruno.ferreira@aquiris.com.br @BrunoTinnus Juliano Silveira Artista Técnico juliano@aquiris.com.br @3dju jobs@aquiris.com.br

×