quinta-feira, 29 de agosto de 2013

UNITY se focando em ferramentos 2D

Nos meus estudos, percebi que algumas coisas faltavam para o desenvolvimento 2D na Unity.
Como a ferramenta é muito poderosa, era simples criar uma alternativa.
Exemplo real: para animar meu personagem, eu criava um array de texturas e chamava uma a uma, a cada pequeno intervalo de tempo, enquanto meu personagem fazia certa ação correspondente a animação.
Mas eu não podia pegar o arquivo de sprites, com todos eles lá, e simplesmente jogar na Unity e sair usando. Era preciso recordar as imagens, criar o array, configurar a lógica da troca de imagens. Tudo isso de uma forma meio braçal, sem uma ferramenta apropriada.
Fácil ainda, mais fácil do que programando "na unha".

Agora a Unity irá lançar ferramentas focadas para o desenvolvimento 2D... estou esperando ansioso pela atualização.
Fazer um sprite ficará ainda mais fácil... tão fácil que ficou quase sem graça.

vejam com seus próprios olhos:
http://blogs.unity3d.com/2013/08/28/unity-native-2d-tools/

quarta-feira, 21 de agosto de 2013

quarta-feira, 14 de agosto de 2013

Ótima video aula

Bem simples, instrutiva, clara e de quebra ensina umas técnicas muito boas para jogos 2D.
ex: como usar o cenário com vários planos e criar uma perspectiva bem legal, o famoso 2.5D.

O material é de primeira! Vale a pena! Curtam, compartilhem, assinem!

canal wemakeagame

segunda-feira, 12 de agosto de 2013

Jogos 2D não são tão simples!

Comecei a desenvolver um jogo 2D, e descobri que eu não sabia o bastante para isso.
O tutorial da Unity é incrível para que se entenda o "todo" da ferramenta, além de ensinar várias técnicas muito práticas. Mas para ter um conhecimento simples, começar um projeto do zero, na unha, é preciso mais um pouco de estudo.

Estou vendo alguns tutoriais no youtube, todos de jogos 2D.
Minha ideia é criar uma série de scripts interessantes, e com eles montar uma biblioteca que irá facilitar o desenvolvimento do meu protótipo.
Pretendo, em duas semanas, criar meu primeiro jogo. Depois coloco aqui! Quem sabe já não sai no GooglePlay? De graça, claro!

sábado, 10 de agosto de 2013

Acabando primeira etapa dos estudos


Me surpreendi com a facilidade e a complexidade de todo o processo.

O tutorial entrega todos os gráficos prontos, a ideia é ensinar a "costurar" tudo em um game.
Com ele, aprende-se:
a criar scripts bem pensados que respeitam uma boa prática de programação e utilizam as ferramentas da própria biblioteca da Unity;
usar os facilitadores da IDE, configurando manualmente inúmeras propriedades dos objetos.
animar os personagens;
usar a luz e o som de forma interativa;
criar uma visão muito bem feita, em 3ª pessoa, com uma câmera surpreendentemente inteligente;
criar a inteligência artificial dos inimigos;
criar objetivos.

O mais trabalhoso foi pegar as animações do personagem e "costurar" todas. Para mim é um mundo novo e deu algum trabalho. Mas não é difícil de entender, só da um pouco de trabalho braçal.
Não entendi bem o movimento da câmera, irei rever isso quando for criar meu primeiro demo, já que usarei um jogo 2D e o movimento será parecido. Criar uma visão "clichê" na terceira ou na primeira pessoa é muito fácil, qualquer um faz algo rudimentar e funcional em segundos.

Quanto a modelagem 3D, vi que essa realmente não é minha praia. Irei estudar um pouco, criarei algum dummy e o animarei, apenas porque é importante para o programador conhecer todo o processo. Mas se eu quiser fazer um jogo 3D, será com assets gratuitas, pagas ou com algum sócio modelando o gráfico.

Agora é só dar uma lida em algumas coisas, rever alguns vídeos, e começar a criar o meu jogo.
Menos de 10h, e me sinto pronto para criar um protótipo de game realmente empolgante.

sexta-feira, 9 de agosto de 2013

Gráficos vivos?


Há como capturar cada "pixel" da imagem, fazer que cada um retorne seu estado e com base nestas informações criar uma lógica onde cada "átomo" responde por si.
A técnica se chama Raylcasting, é aplicado de forma mais simplista nos atuais jogos e no futuro será comum.
Com isso, nasce um gráfico "vivo", onde os materiais respondem de forma natural, não pré programada.
O problema é que esta infinitude de cálculos custa muito para o poder de processamento de uma máquina.
Não veremos jogos utilizando esta técnica de forma realmente interessante tão cedo.
Mas pensem que em alguns anos, os gráficos de fluidos (tão observados pelos amantes de gráficos) irão realmente fluir!!!


Quanto a Unity, sigo estudando. Assim que eu acabar o tutorial, postarei algo sobre! E quem sabe logo logo não aparece um demo de algum jogo meu!

Segue um print dos estudos, só para provar que não estou mentindo :)


quarta-feira, 7 de agosto de 2013

Estrutura abstrata de um jogo

Como irei desenvolver jogos com uma IDE e um Framework, o que esconde a programação mais complexa por trás do game, irei postar algumas coisas sobre como funciona está lógica "oculta".

A a lógica do funcionamento de um jogo, vista de uma perspectiva ampla, é bem simples:
Há uma entrada (inputs) de informação;
O jogo fica em um looping infinito processando seus métodos;
Quando certos requisitos são fechados, o jogo termina, para o bem ou para o mal.

As entradas são conhecidas, não preciso me alongar sobre elas. Cabe ressaltar que mesmo a Unity sendo um facilitador, e compilando em quase todas as plataformas, são necessários scripts diferentes para que o jogo funcione no controle, ou no mouse e teclado, ou na tela touch.

O looping infinito é um caso interessante para que se entenda a lógica do desenvolvinento.
Vamos pensar em um shooter x boots.
O jogo renderiza imagens a todo instante, criando os conhecidos FPS (Frames Por Segundo), também faz com que seus personagens tomem decisões a todo instante, mudando elas de acordo com certas variáveis. O jogo também fica lendo certos status para saber quando é Game Over ou quando você atingiu certo número de Frags e ganhou.
Mas para quem conhece programação, sabe que normalmente um software só age quando "provocado". Além do mais, a estrutura básica de um programa é sequencial, se o método botPensando() está rodando, o método atingiuAsFrags() fica "na fila".
Para isso, o jogo usa o que chamamos de Runnable, uma forma de trabalho que fica perguntanto, o mais rápido possivel, a todos os métodos, o que eles tem para nos responder.
método run()
{
    atualizaTela();
    botPensano();
    atingiuAsFrags();
}

Estes 3 métodos serão chamados inúmeras vezes por segundo, assim, a todo instante:
a tela será recriada atualizando a imagem; 
o bot tomará decisões;
e o jogo irá verificar se a partida acabou.

Outra questão interessante é que os métodos correm de forma "livre" (assíncrona). Um não fica esperando o outro. Pois a atualização de frames será sempre a mais rápida o possível, enquanto o movimento do bot será dentro de uma linha temporal bem definida.

No mais, este mesmo runnable tem de saber a hora de acabar. Para isso, sempre haverá uma estrutura perguntando se a partida acabou. Caso afirmativo, o looping para.

gameover = false;
método run()
{
    atualizaTela();
    botPensano();
    gameover = atingiuAsFrags();

   SE (gameover for igual a TRUE)
    {
         runableStop
     }
}

Softwares que facilitam o trabalho escondem tudo isso do usuário. A própria Unity decide como organiza seus códigos, e onde coloca os scripts criados pelo autor. Mesmo assim, bons scripts e um software organizados são importantes, tanto para manutenção quanto para que a Unity venha a fazer o seu melhor ao gerar a arquitetura dos códigos.