Marble Racer – Postagem de Desenvolvimento 1

Marble Racer – Postagem de Desenvolvimento 1

Olá pessoal. Estamos começando um Blog de Desenvolvimento e vamos falar um pouco sobre como estamos desenvolvendo os jogos, como resolvemos alguns problemas e como criamos alguns aspectos do jogo. Fique a vontade para deixar comentários, sugestões de novos tópicos e como podemos melhorar nossos jogos ou o blog.

Todos os nossos jogos estão sendo desenvolvidos em Unity. O video abaixo é o primeiro que fizemos do Marble Racer.

Skybox

Para o Marble Racer, a gente queria criar um fundo estrelado. Vou resumir aqui como fizemos. Primeiramente escolhemos uma imagem do www.freeimages.com – depois fomos para o Blender, colocamos essa imagem numa grande esfera, invertemos as normais da faces para ficarem apontando para dentro. Colocamos um cubo no centro da esfera (o cubo inicial do Blender) e depois renderizamos o Environment Map para o cubo. Isso renderiza o que o cubo está “vendo” do ponto de vista dele em cada uma das suas faces. Depois de salvar o mapa, a gente tinha uma imagem única com as 6 faces (de cada face do cubo) que só precisaria separar em 6 imagens, que seriam usadas de dentro do Unity. As imagens ficam organizadas assim:
Sides

Note que precisamos fazer uma pequena alteração na imagem bottom (baixo) e top (cima), pois elas precisaram ser rotacionadas 180 graus para ficarem corretas no Unity.
Você pode usar qualquer imagem ou cena do Blender que você quiser renderizar no mapa acima. O limite é a sua imaginação.

Nós usamos este tutorial para criar o Skybox do Blender (http://www.katsbits.com/tutorials/blender/render-skybox.php).

No Unity, já que a câmera usada não muda de angulo, o Skybox acabou ficando parado, então a gente simplesmente rotacionou o material do Skybox em 5 graus por segundo para dar a sensação de movimento.

Pista Procedural
Nós queríamos fazer uma pista aleatória, para dar maior variação de resultados.

Parâmetro da Pista
A primeira coisa que definimos foi o ângulo de decida. Achamos que 20 graus funcionava bem, porém a gravidade estava um pouco baixa. Por isso aumentamos a gravidade de 9.8 para 25 para que as bolas fossem mais rápidas e animadas.

Track pieces
Depois disso, criamos um jeito de fazer os segmentos das peças de forma que ficassem conectadas perfeitamente.
Decidimos criar os segmentos com círculo de mesmo tamanho com 90 graus na entrada e saída com ângulo de 20 graus de queda entre eles. No meio de cada circunferência colocamos um cube que serve como ponto de referência. Algo assim:

track-1

Cada peça de segmento está representado por linhas mais grossas. As linhas pontilhadas pode ser qualquer comprimento e formato desde que não bloqueiem as bolinhas.

Connecting the track pieces
Para criar a pista, basta selecionar aleatoriamente as peças e conectar o cubo final de um segmento com o cubo inicial de entrada do outro segmento, assim:

track-2

Voila. Assim temos uma pista procedural. 

Só uma nota, já que criamos os segmentos no Blender, tivemos que fazer uma pequena mudança na rotação dentro do Blender para que quando os objetos fossem importados no Unity, não tivesse rotação. Isso acontece por que os dois programas lidam com os eixos Y e Z de forma diferente.