introdução ao desenvolvimento de jogos com unity3d
TRANSCRIPT
Quem sou eu?Caio Vinicius Marques TeixeiraBacharelando em Sistemas de Informação
EACH-USP
Técnico em Informática
ETEC de Poá
Minhas experiências
TCCEventosGame JamsPalestras
Minhas experiências
FEA-USP / GETECGames for Change EuropeCoursera
Mas, não quero fazer jogos...
Tappy PlaneVamos aprender na prática!
Unity: Views
http://docs.unity3d.com/Manual/LearningtheInterface.html
Project ViewAcessar e gerenciar assets◦ Assets: Recursos gráficos, sons, códigos, etc.
http://docs.unity3d.com/Manual/ProjectView.html
Unity PackagesPacote de assets◦ Compactado
◦ Compartilhar recursos entre diferentes projetos
Scene ViewPermite visualizar, posicionar e gerenciar objetos no jogo.
Permite alterações com o jogo em execução!
http://docs.unity3d.com/Manual/SceneView.html
Hierarchy ViewExibe todos os objetos na cena atual
http://docs.unity3d.com/Manual/Hierarchy.html
Toolbar
http://docs.unity3d.com/Manual/Toolbar.html
Arquitetura Entity-ComponentTodo objeto na Unity é uma “Entidade”.◦ Permite desacoplamento de código
◦ Você não precisa mexer em código de baixo nível
http://gameprogrammingpatterns.com/component.html
Arquitetura Entity-Component
Componentes◦ Definem “comportamentos” de objetos.
◦ Podem ser programados (scripts).
http://gameprogrammingpatterns.com/component.html
Inspector
Inspector view◦ Permite alterar propriedades de componentes e variáveis
públicas de scripts.
◦ Alterações em tempo de execução!
http://docs.unity3d.com/Manual/Inspector.html
Game ViewJogo rodando. :)
http://docs.unity3d.com/Manual/GameView.html
RigidbodyComo simular gravidade?
CollidersAvião e obstáculos são apenas imagens na tela
Como saber que é um objeto sólido?
Colliders!
Scripts Scripts = Componentes
Como criar? Como adicionar a um objeto.
Hello World!
CallbacksMétodos executados automaticamente pela engine.
Start() – Executa quando um objeto é criado
Update () – Executa uma vez a cada frame
FixedUpdate() – Idem ao Update, deve ser usado para física e entrada.
Vector 3Como representar movimentos?
Vetores!
Rigidbody.velocityAltera a velocidade de um rigidbody com um Vector.
InputKeyCodes
Input.GetKey
Scripts no InspectorVariáveis públicas são exibidas no Inspector.
ObstáculosComo fazer a progressão da cena?
Duas abordagens:◦ Personagem e câmera se movem para frente
◦ Cenário movimenta para trás
PrefabsObjetos “pré-fabricados”.◦ Permite salvar um gameobject e seus componentes.
◦ Gerenciar múltiplos clones
Método Instantiate◦ Permite criar clones de objetos.
Destruir objetos passados?Método Destroy()
Callbacks OnBecameVisible e OnBecameInvisible
Não é a melhor solução...Garbage Collector◦ Pode rodar a qualquer instante
◦ Quedas de framerate...
Solução ideal: Object poolingReutilizar objetos◦ Objeto foi destruído?
◦ Adicionar em uma lista de inativos
◦ Precisa de um novo objeto?◦ Lista de inativos está vazia?
◦ Crie um novo
◦ Não está vazia?
◦ Reutilize
GameoverDetectar colisão!◦ Recarregar jogo.
Unity UIRecurso novo!◦ Unity 4.6 Beta.
Canvas◦ Text
◦ Button
ColisãoCallbacks OnCollisionEnter e OnCollisionExit
Objeto Collision
CenasCenas -> Níveis do jogo
Devem ser salvas e adicionadas ao build.
Application.LoadLevel
Pontuação
Como fazer?
TriggersTriggers◦ Detectar se objeto está em uma determinada “zona”.
Break
3D
3D vs. 2DSão independentes!◦ 2D é recente.
◦ Podem coexistir no mesmo projeto e cena!
Motores físicosIndependentes◦ Rigidbody vs. Rigidbody2D
◦ Collider vs. Collider2D
Standard AssetsAssets padrões da Unity◦ Unity Packages
Antes, não faça isso em casa!Vamos brincar um pouco com física e alguns standard assets.◦ Sem otimização alguma
Unity Terrain
First Person ControllerStandard Asset◦ Implementa movimentação (pulo, andar, etc)
◦ Implementa camera
Brincadeiras com físicaVamos criar uma barreira gigante de caixas e derruba-la. ◦ Otimização nula!
Explosão?Sistema de partículas◦ Shuriken
Explosão do PhysX
PublicaçãoComo gerar executáveis? :)◦ Windows, Linux, Mac
◦ Web◦ Unity Web Player
◦ WebGL (Coming Soon)
◦ Android
◦ etc...
Antes de terminar, Bonus Stage
Como estudar Unity?Unity Learn (http://unity3d.com/pt/learn)
Unity 3D Student (http://www.unity3dstudent.com/)
Unity Cookie (http://cgcookie.com/unity/category/tutorials/)
Digital Tutors (http://www.digitaltutors.com/training/unity-tutorials)
Reddit (http://www.reddit.com/r/unity3D)
Evite Cargo Cult Programming!
Aprenda conceitos gerais!Aprenda a teoria, o que acontece “por baixo”
Livros◦ Introdução ao desenvolvimento de games, Steve
Rabin, vol.2
Sites
◦ Game Developer – Como ser um programador de jogos? http://gamedeveloper.com.br/
◦ Game Programming Patterns -http://gameprogrammingpatterns.com/
Faça jogos!“A melhor forma de aprender a fazer jogos, é fazendo.”
“Você fará pelo menos 10 jogos ruins antes de fazer um realmente bom.”
EventosConferências
Exposições
Game Jams
IGDA
Etc.
Participem!
Reuniões todas as terças, às 16:00 na sala 221 do Titanic.
Dúvidas?