Palestra ministrada durante o Unite Brasil 2014 (20/10/14) sobre boas práticas de uso da Unity em Game Jams.
Video relacionado:
http://youtu.be/bOvJg43qMAw
Postagem relacionada:
http://www.brunocampagnolo.com/log/2014/10/20/unite-2014-unity-em-gamejams/
1. Usando a Unity em Game
Jams
Bruno Campagnolo de Paula
Global Game Jam
http://globalgamejam.org
http://ggjcwb.com
2. Sumário
• O que são Game Jams?
• O que não são Game Jams?
• Quais são os benefícios de participar de uma jam?
• Estudo de caso: Global Game Jam
• Unity em Game Jams – resultado de pesquisa com jammers:
• Ferramentas / recursos e dicas para uso da Unity em Game Jams;
• O que você NÃO deve usar do Unity;
• Conselhos gerais para se dar bem em uma jam.
3. Público alvo
• Iniciantes em Unity, que querem usar uma jam para
fortalecer seus conhecimentos em Unity;
• Intermediários, com pouca experiência em jams;
•Quem já participou em jams e não se deu bem…
•Quem gostaria de entender melhor Game Jams.
4. Quem sou eu?
•Bruno Campagnolo de Paula
•bruno@globalgamejam.org
•brunodepaula@gmail.com
•http://ggjcwb.com
•http://www.brunocampagnolo.com/
•@bcp / @ggjpucpr
8. Global Game Jam Curitiba 2014
• + 350 participantes;
• + de 60 jogos;
• Maior sede do Brasil e segunda maior sede do mundo;
• Coordenador Regional Brasil.
9. O QUE SÃO GAME JAMS?
Como assim 48 horas para criar um jogo?!
10. Game jams?
Encontro de desenvolvedores de jogos com o objetivo de desenvolver
jogos
25. Benefícios para indivíduos
Testar limites conhecer e superá-los, gerar portfolio, conhecer
pessoas, conhecer ideias novas, priorizar, focar, calcular horas /
minutos é mais fácil do que dias / meses, APRENDIZADO geral,
terminar um jogo (aprender a limitar), receber feedback
Conhecer novas ferramentas, saber trabalhar sobre pressão, portfolio, nunca
havia feito um game, percebeu o que gosta de fazer (ou não), aumenta chance
de contratação, amizades, conhecer bons profissionais e buscar inspiração
para melhorar cada vez mais, experiência global.
26. Benefícios para equipes
Melhorar a sintonia e respeito mútuo, experiência de um projeto
completo,
Contatos, teste de protótipos diferentes do que se está acostumado
(Amnesia Fortnight / Infinity Blade Dungeons), experimentar ideias
novas ou esquisitas, troca de experiências, vitórias em concursos,
aprender a trabalhar com pessoas de diferentes visões, experiência
global
27. Benefícios para instituições promotoras e
empresas
Visibilidade, apoio ao seu público alvo, teste de novos produtos, divulgação
de tecnologias,
Experiência global, feira de empregos, observação das pessoas trabalhando
em grupos.
37. Tamanho do evento
Maior jam do mundo
Brasil é o segundo maior em sedes (58 locais / 1500 pessoas / 300
jogos em 2014)
2009 2010 2011 2012 2013 2014
Participantes 1.600 4.000 6.500 10.000 ~15.000 23.000
Locais 53 138 169 242 319 488
Países 23 39 44 47 63 72
Jogos 370 900 1.500 2.200 3.200 4.200
39. Unity na Global Game Jam
• Patrocinador de diversas sedes da jam ao redor do mundo;
• Uma grande proporção dos jogos da ggj foi desenvolvido em Unity
(~50%!);
• Patrocinador da GGJ 2015;
# Projetos # Projetos em Unity
Mundo 4.289 2.290
Brasil 356 162
Curitiba 76 30
41. Make it Work
Make it Right
Make it Fast
Kent Beck, guru da XP
42. Make it Work
Make it Right
Make it Fast
The Game Jam Way
43. Boas práticas
1. Tenha mais de uma pessoa trabalhando em Unity;
2. Conheça os scripts e assets que já vem com o Unity;
3. Criar animações simples usando o Animation View;
4. 2D >>>>>>>> 3D;
5. Bibliotecas: PlayMaker, 2D Toolkit, NGUI;
6. Entender corotinas e Invoke;
7. Usar as ferramentas da Unity Patterns e Prime31;
8. Entender como aplicar Debug.DrawLine e Debug.DrawRay;
9. Physics.Raycast para checar distâncias e colisões;
44. 1. Tenha mais de uma pessoa que conheça o
Unity
artistas
programadores
Game
designers
45. 2. Conheça os scripts e assets que já vem
com o Unity
• Third Person
Controller, First Person
Controller, Particles,
Scripts, Pathfinder, etc;
• Os controllers dá para
configurar
completamente,
travando eixos, rotação
para jogos 2D.
46. 3. Usar o Animation View
• Similar ao Flash;
• Útil para animações simples, cutscenes, etc.
47. 4. 2D>>>>>>>>3D
• Jogos em 3D são muito mais complexos de criar em 48 horas!
48. 5. Bibliotecas: PlayMaker, 2D
Toolkit, NGUI
• Máquina de estados, GUI, etc;
• Observe que as novas versões da Unity já substituem algumas das
funções desejadas.
49. 6. Entender Invoke e Corrotinas
• Bom para criar sequencias de ações, eventos, comandos, etc.
using UnityEngine;
using System.Collections;
public class InvokeScript : MonoBehaviour
{
public GameObject target;
void Start() {
Invoke ("SpawnObject", 2);
}
void SpawnObject() {
Instantiate(target, new Vector3(0, 2, 0), Quaternion.identity);
}
}
50. 7. Conhecer recursos do
UnityPatterns e Prime31
• http://unitypatterns.com (object pool)
• https://github.com/prime31 (TouchKit)
51. 8. Debug.DrawLine e
Debug.DrawRay
• Essencial para depuração;
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void OnCollisionEnter(Collision collision) {
foreach (ContactPoint contact in collision.contacts) {
Debug.DrawLine(contact.point, contact.point+contact.normal, Color.green, 2, false);
}
}
}
52. 9. Physics.RayCast
• Checagem de distâncias e colisões;
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void Update() {
Vector3 fwd = transform.TransformDirection(Vector3.forward);
if (Physics.Raycast(transform.position, fwd, 10))
print("There is something in front of the object!");
}
}
53. Mais boas práticas citadas pelos jammers
10. Conhecer bem as classes Transform, Vector3, Quaternion, Color e Mathf;
11. Acabamento gráfico: Deferred rendering, lightmaps, camera effects;
12. Modo debug do Inspector;
13. Saiba usar múltiplas câmeras, útil, por exemplo para criação rápida de menu popup;
14. Vertex/Index buffers (classe Mesh), para criação de vértices dinâmicos;
15. Shaders e Lights são rápidas de colocar e deixam o jogo com uma cara legal;
16. Sistemas de partículas;
17. Render layers, Tags, Colliders.
18. Deixar seu ambiente configurado ANTES da jam: Cores, Atalhos, etc;
54. Más práticas:
Evitar em uma game jam
1. Depender do editor de terrenos e dos assets associados a ele, deixa o jogo com "cara de
jogo em Unity";
2. Dropbox para controle de versão;
3. Criar plugins nativos em C++ (dlls);
4. Depender da física padrão do Unity;
5. Usar algo diferente da física padrão do Unity;
6. Evitar texturas dinâmicas muito grandes, método Apply é muito lento;
7. LOD, recursos de otimização, etc.
8. Trabalhar com rede independente da ferramenta;
9. Usar a GUI padrão do Unity, se usar, pelo menos mude as fontes!
10.Mais importante que TUDO:
57. Conselhos
1. Conheça jogos desenvolvidos em Jams, para saber o que é possível fazer;
2. Conheça bem suas ferramentas;
3. Ninguém vai ligar para matemática avançada de sua engine;
4. Saiba se comunicar e mostrar seu jogo;
5. Prototipe o mais rápido possível, chegue rapidamente ao core gameplay,
20% do tempo deve estar pronto;
6. Água + Sono + Conforto são essenciais;
7. Jam é sobre jogo completo e não sobre ideia!
8. Não vai dar tempo de fazer tudo, saiba CORTAR.
9. Divirta-se e faça amigos!
58. 1. Conheça jogos
• Saiba o que é possível fazer durante uma jam!
Boas práticas:
Ferramentas / recursos e dicas para uso da Unity em Game Jams;
O que é rápido de APRENDER, APLICAR e ÚTIL para criar o seu jogo;
Deixe seu jogo BOM, sem muito esforço
Perguntei a alguns de nossos jammers quais eram suas sugestões e compilei as melhores
É interessante que mais de integrante da equipe conheça o Unity.
NÃO deixar TUDO nas costas dos programadores (ANIMAÇÃO).
Ensinar ao artista como trabalhar com animações simples (usando ANIMATION VIEW), lembra o Flash.
Ensinar ao GD a editar as fases, alterar parâmetros, sem depender
É mais difícil criar modelos, criar cenários, etc.
É mais difícil criar modelos, criar cenários, etc.
Boas práticas:
Ferramentas / recursos e dicas para uso da Unity em Game Jams;
O que é rápido de APRENDER, APLICAR e ÚTIL para criar o seu jogo;
Boas práticas:
Ferramentas / recursos e dicas para uso da Unity em Game Jams;
O que é rápido de APRENDER, APLICAR e ÚTIL para criar o seu jogo;