sábado, 30 de abril de 2016

Entenda o Unity 3D e inicie os trabalhos com jogos

Fala galera! Eu sei, eu sei, estou sumido e bla bla...Mas como sempre dizem que quem é vivo aparece, demorei mais voltei :p. Vim com um assunto que achei bastante oportuno e sei que muitas pessoas tem interesse em começar, que é trabalhar com desenvolvimento de jogos.

Muitos de vocês podem não saber, mas antes de existirem essas engines de hoje e de criarem o termo "gamefication" sempre trabalhei com aplicações voltadas para jogos com foco educacional (antes do novo termo se chamavam "aplicação lúdica da informatica na educação").

Cheguei a desenvolver vários jogos com este foco (ainda hoje o faço) e o melhor, consegui ganhar dinheiro com isso :). Ganhei um prêmio na Infobrasil de melhor software educacional, assim como já tive clientes voltados para jogos. Neste contexto, venho lhes informar que não é impossível e sim podemos ganhar dinheiro. Vamos lá, vou falar um pouco de Unity 3D.


Unity é um software que foi criado para simplificar o desenvolvimento de jogos eletrônicos. Também conhecido como Unity 3D essa ferramenta possui a versão Pro e a gratúita, ambas disponíveis no site da Unity Technologies. Até o momento, a versão gratúita disponível para download é a 4.3.4. No início o Unity dava suporte apenas para jogos 3D, porém a partir dessa nova versão há o suporte para jogos 2D.
Esse game engine foi elaborado para a plataforma Windows e Mac OS X  e inclui suporte para publicação para iOS, Android, Windows Store, Windows Phone, BlackBerry, desktop e Web. 
O Unity suporta três linguagens de programação nativa:
  • C # (pronuncia-se C-sharp), uma linguagem padrão da indústria, semelhante ao Java ou C++;
  • UnityScript, uma linguagem projetada especificamente para uso com o Unity e modelado após JavaScript;
  • Boo, uma linguagem. NET com sintaxe semelhante ao Python.


Na Unity, você pode pensar em Scenes como levels individuais. Construindo seu jogo com muitos cenas, você poderá distribuir o tempo de loading e testar seu jogo individualmente.

- Hierarchy: É onde fica os objetos, cenários, luzes etc na Scene. Vocês podem notar que só exite uma câmera na Scene e seu nome "Main Camera" está na Hierarchy.

- Inspector: Onde fica todas as informações do elemento na Hierarchy, como posição, escalonamento, rotação etc... Caso a "Main Camera" tivesse sido selecionada iria aparecer todas as informações da câmera.

- Project: É onde fica todas as pastas do projeto, elas não estão na Scene, mas é com elas que adicionamos elementos na mesma, ou seja, se você tiver uma casa em uma das pastas do seu projeto, basta clicar e arrastar até a Scene que irá adiciona-la.

http://www.tresd1.com.br/tutoriais/tutoriais-variados/outros-softs-3d/tutorial-basico-unity3d

Material

Materiais servem para definir a aparência de um modelo após renderizados. Materiais são cores ou texturas, que em conjunto com um script de renderização, determina a aparência de um objeto quando visualizado na tela.

Rigidbody

Permite que seus GameObjects possam agir sob o controle do motor de física. Isso abre a porta de entrada para as colisões realistas, variados tipos de articulações, e outros comportamentos muito legal. Qualquer GameObject deve conter um Rigidbody a ser influenciada pela gravidade, que agem sob forças adicionados via script, ou interação com outros objetos através do motor de física.

Rigidbody deve ser explicitamente adicionado ao seu GameObject antes que eles serão afetados pelo motor de física. Pode-se adicionar um Rigidbody ao seu objeto selecionado a partir de Componentes-> Física-> Rigidbody na barra de menus. Agora, o objeto é a física e pronto, pode-se colocar gravidade e pode receber forças através de script, mas poderá ser preciso adicionar uma Collider para poder colocar comportamento como desejado e de acordo com o jogo. 

http://docs.unity3d.com/Documentation/Components/class-Rigidbody.html

GameObject  

A Unity3D é baseada em um modelo mais moderno para a arquitetura de objetos de jogo baseado em composição [Bilas 2002, Stoy 2006, Passos et al. 2008]. Nesse modelo, um objeto de jogo é especificado através da composição de várias funcionalidades, que são agregadas (ou removidas). Cada funcionalidade é implementada por um componente (classe que herda de um componente básico). Esse container genérico ainda é denominado Game Object e funciona como um repositório de funcionalidades, ou mais especificamente, componentes. Os componentes são então responsáveis por implementar os diversos comportamentos que um Game Object pode ter. Um componente pode ser desde um script, uma geometria de colisão, ou até uma textura de GUI. Ou seja, Game Objects podem representar qualquer coisa no cenário, sendo caracterizados como uma simples câmera ou um personagem apenas pelos diferentes componentes que agrega. “Game Object é uma panela vazia e os componentes são os ingredientes que irão criar sua receita de jogabilidade”. Uma observação importante sobre os Game Objects é que todos eles já possuem pelo menos o componente Transform, responsável pelo seu posicionamento, orientação e escala no sistema referencial da cena. Além disso, esse componente é responsável pela definição da hierarquia de transformações, permitindo o efeito de transformação relativa de acordo com a estrutura de ascendência/descendência de cada Game Object.

Hinge
 Joint 

Permite 
a 
conexão 
de 
dois 
objetos 
através 
da 
simulação 
de 
uma 
dobradiça. 
Ideal

para 
a
 simulação
 de
 portas, 
pêndulos 
e 
outros 
objetos 
que 
necessitem
 deste 
tipo 
de 
conexão. Colocar o exemplo de código que faz a união da cabeça com a cauda do snake.

Detetar colisões entre objetos é uma prática fundamental para (quase) todo jogo eletrônico.
Além de detetar as colisões, é importante saber o que fazer, depois que elas ocorrem.
As game engines, sempre possuem recursos para a deteção de colisões, e esse é um tópico muito importante de ser observado, antes de escolher qual game engine utilizar para seu projeto.
Em linhas gerais, os pontos básicos a serem observados são:
- como se configura a deteção de colisão;
- quais geometrias de colisão (esferas, cubos, planos …) são disponibilizados pela engine;
- Se a game engine, permite deteção de colisão com geometria 3D (mesh).

Quando as colisões são detetadas, em geral, eventos são disparados pelo sistema. E esses eventos, podem ser capturados por objetos de jogo; que iniciam funções, para gerar a dinâmica do jogo.
http://paulobarbeiro.com.br/blog/?tag=tutorial-2

O Console mostra mensagens de erros, warnings e textos de debug. Você enviar suas próprias mensagens para o console utilizando Debug.Log() ou Debug.Error() em seus código.
Se você der um clique duplo na barra de status ou escolhendo Barra de Ferramentas->Window->Console, aparecerá o Console.

Câmera (Visão do Jogo) 

A visão de jogo é renderizada através da câmera dentro do jogo. Ela representa como seu jogo ficará quando for publicado. Câmeras em jogos servem para representar o comportamento dos olhos em um sistema em três dimensões. Através dela são determinados quais objetos devem aparecer na tela e como eles devem ser mostrados.

Exemplos de Jogos prontos...play store do unity :




Meu jogo no Unity :p:


Se gostaram, deixem seu joinha e se for de interesse, solicitem novos post sobre que posso começar a ensinar a vocês os primeiros passos e assim ganhar meu percentual :p Abraço galera!

Videos que ensinam no desenvolvimento do jogo.

Admin: Bruno

Olá Galera! muito grato por estarem acessando nosso blog. Espero que seja possível transmitir de forma compreensível um pouco de meus conhecimentos em programação, para esta comunidade de desenvolvedores que cresce cada vez mais! Espero que Gostem! Abraço! E meu enorme obrigado à Renato Simões, Átila Soares,Wanderson Quinto, Emerson e a toda galera que sempre ajudou meu sincero obrigado....
Especialmente a Natalia Failache e Rita de Cassia que sempre apoiaram este sonho....

De seu amigo Bruno Rafael.