5. A Unity...
...é uma ótima engine. Mas…
...não resolve tudo sozinha.
...é extensa.
...tem bugs.
6. 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
10. Multiplayer
Online - Photon Cloud
Wi-Fi local - UNET
Código comum + camada de abstração
Muito pouco código específico
11. Online - Photon Cloud
Bom histórico
Fácil de usar com Unity
Não requer gerenciamento
Servidores em várias regiões
12. 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 (!!)
13. Wi-Fi Local - UNET
Integrado na engine
Simples de usar
Suporta descoberta automática
API similar ao Photon Realtime
Facilita abstração
14. Wi-Fi Local - UNET
Low-Level API
Descoberta automática de partidas
Lobby (create + join)
15. Código genérico
(De)serialização de mensagens
Thrift (exceto player state)
Matchmaking
Eventos de gameplay
Player state interpolation/extrapolation
16. Como lidar com lag?
Minta!
Sincronização perfeita é impossível
Faça o possível para parecer certo
Exemplo: Tackle
25. 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
26. 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 ;)
27. 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
28. 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)
29. Usem o maldito Profiler!
Bruno “Tinnus” Ferreira - Unite 2016 São Paulo
31. 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.
32. Resumo de conteúdo
● 144 personagens;
● 6 cenários;
● 16 capitães;
● 2 uniformes por capitão;
● UI baseada em ilustrações;
34. 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.
63. 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.