Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Desafios técnicos
no mercado mobile
Know your engine
A Unity...
...é uma ótima engine. Mas…
...não resolve tudo sozinha.
...é extensa.
...tem bugs.
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
Con...
Como?
Documentação
Learning materials
Forums
UnityAnswers
Google
...e usando!
O caso dos bugs
Software tem bugs. Unity não é exceção.
O que fazer ao encontrar um bug?
Investigar
Isolar
Reportar
Contor...
Multiplayer
Multiplayer
Online - Photon Cloud
Wi-Fi local - UNET
Código comum + camada de abstração
Muito pouco código específico
Online - Photon Cloud
Bom histórico
Fácil de usar com Unity
Não requer gerenciamento
Servidores em várias regiões
Online - Photon Cloud
Photon Realtime
Seleção automática de região
Conexão e matchmaking invisíveis ao jogador
(exceto Pla...
Wi-Fi Local - UNET
Integrado na engine
Simples de usar
Suporta descoberta automática
API similar ao Photon Realtime
Facili...
Wi-Fi Local - UNET
Low-Level API
Descoberta automática de partidas
Lobby (create + join)
Código genérico
(De)serialização de mensagens
Thrift (exceto player state)
Matchmaking
Eventos de gameplay
Player state in...
Como lidar com lag?
Minta!
Sincronização perfeita é impossível
Faça o possível para parecer certo
Exemplo: Tackle
Jogador A
Jogador A Jogador B
Backend
Features
User Accounts
Club Tournaments
Matchmaking
Casual/Ranked
Play with Friends
Tecnologia
AWS
Docker
Node.js
DynamoDB
Redis
AWS Stack
Aplicação
Node.js em cima de ECS + ELB
Users + Clubs
DynamoDB + Dynamic DynamoDB
Matchmaking + Ranking + Play wi...
Usem Redis para leaderboards!
Bruno “Tinnus” Ferreira - Unite 2016 São Paulo
Otimização
Fazendo seu jogo rodar no celular da sua avó
Otimização de assets (na autoração)
Quantidade e duração de sons
Tamanho das malhas e texturas
Simplificação de Shaders
Te...
Otimização de assets (na importação)
Compressão de texturas
Compressão de animações
Compressão de sons
Em mobile, quase se...
Otimização de tamanho do build
Log de build é seu amigo
Veja quem está ocupando mais espaço
Descubra assets “fantasmas”
Du...
Otimização de código
Não alocar nada no Update
“new” = alocação (exceto Vector3, Quaternion etc)
Reutilizar estruturas de ...
Usem o maldito Profiler!
Bruno “Tinnus” Ferreira - Unite 2016 São Paulo
Mais?
Palestra na Unite 2014
bit.ly/pcdasuaavo
Desafios técnicos no
desenvolvimento de muito conteúdo
● Memória em runtime + Separação de
cenas;
● Tamanho da build;
● Ge...
Resumo de conteúdo
● 144 personagens;
● 6 cenários;
● 16 capitães;
● 2 uniformes por capitão;
● UI baseada em ilustrações;
Assuntos
● Cenário
● FX
● Personagens
● UI
Cenários
● Existem 6 estádios no Goleadores,
cada um com um estilo diferente
atrelado ao cartoon que está
referenciando;
●...
Matcap
Créditos: Jean Moreno
FX
https://www.behance.net/gdacas
FX
Objetivo: Estética cartoon, sprite sheet;
Problema com sprite sheet: Produção,
memória e resolução;
FX: Soluções
Um canal com múltiplos frames!
FX: Soluções
FX: Soluções
RGB
R G B
RGB
R G B
RGB
R G B
Personagens
Personagens:
3 Categories
3 Body shapes
16 Captains
Personagens:
3 Categories
3 Body shapes
16 Captains
144 meshes?
144 textures???
Nope
UV1 UV2
Personagens:
UI - tips and tricks
● Jogos atuais possuem MUITA UI;
● Picota!
● Canais diferentes pra shapes
diferentes;
● Custom Shader...
UI - tips and tricks
UI - tips and tricks
UI - Soft Mask
● Shader customizado de UI com um
segundo input de textura grayscale
multiplicando no alpha.
● Essa textura...
Contato
Bruno “Tinnus” Ferreira
Programador
bruno.ferreira@aquiris.com.br
@BrunoTinnus
Juliano Silveira
Artista Técnico
ju...
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Desafios técnicos no mercado mobile
Prochain SlideShare
Chargement dans…5
×

Desafios técnicos no mercado mobile

350 vues

Publié le

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

Publié dans : Logiciels
  • Soyez le premier à commenter

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

×