Comecei a pensar em como os aliens irão se movimentar.
Por parte do grupo recebi diversas ideias de como fazer os aliens se moverem. Todas as sugestões abominaram a forma clássica do space invaders original. (Matriz, todos juntos, vai p/ esquerda, desce, vai p/ direita, acelera, "vamos matar esse carinha logo, pô!!!")
Não entendeu, acessa aí: www.spaceinvaders.de
Inspirado em jogos como Star Soldier (N64) e, por sugestão de João - indigente, Ikagura (Xbox), decidi tentar reproduzir a movimentação dos inimigos desses jogos. Para se ter uma ideia, digita no youtube.
Já consegui um pequeno avanço. Meu alien vai para a esquerda e faz a curva. Pô!
segunda-feira, 31 de maio de 2010
009 - Projeto Indigente 6ª Semana - Menos um problema para resolver
Postado por
...:::Saulo Ribeiro:::...
às
6:27 PM
Enfim o tiro está sumindo.
E quando um grande problemão aparece, a solução sempre é ridícula. Era apenas um problema de assimilar o objeto alvo do script.
A função estava programada para instanciar o objeto que estivesse na cena. Mas ela tambem pode ser programada para objetos que estejam fora da cena, desde que em uma biblioteca.
E agora o tiro some. :)
E quando um grande problemão aparece, a solução sempre é ridícula. Era apenas um problema de assimilar o objeto alvo do script.
A função estava programada para instanciar o objeto que estivesse na cena. Mas ela tambem pode ser programada para objetos que estejam fora da cena, desde que em uma biblioteca.
E agora o tiro some. :)
sexta-feira, 21 de maio de 2010
008 - Space Invaders (3) - Tiro
Postado por
...:::Saulo Ribeiro:::...
às
4:22 PM
Aqui faremos a nave atirar (apenas atirar, não desenvolver o poder destrutivo).
A criação de um tiro é, na realidade, um processo chamado no Unity de Instantiate (instanciar). O jogo criará outro game object pre-determinado pelo programador. No nosso caso, o tiro.
Toda nave possui um canhão, certo?
Vá em "GameObject >> Create Other>> Cube" e crie outro cubo.
Nome: "Canhao" (sem til, mesmo).
Scale: x = 1; y = 0,2; z = 1
Esse não será o canhão que o jogador irá ver na tela. Ele será, na verdade, a "fonte geradora" dos disparos da nave.
Vamos, lá. arraste "Canhao" para dentro de "Nave". Você terá algo mais ou menos assim... (clique na imagem para visualização completa)
Para que o canhão fique invisível, vá ma tela "Inspector >> Mesh Renderer >> Materials >> Default - Diffuse"
Mude para "Shadow Material >> Transparent >> Cutout >> Bumped Diffuse"
Alfha Cutout = 0 (todo p/ direita).
Agora vamos criar o tiro própriamente dito (o objeto a ser instanciado).
Para dominar a técnica de instanciar objetos, faremos isso com cubos.
Novamente, "GameObject >> Create Other >> Cube"
Nome: "Tiro"
Scale x = 20; y = 2; z = 100
Mude a textura para "Fire Add" (da mesma maneira que deixamos o canhão transparente)
Shader: "particles >> additive"
Agora o script de tiro. "Project >> Create >> JavaScript"
Nome: "Atirar - mover tiro"
Escreva o script abaixo:
var velocidade = 10;
function Update () {
transform.Translate(0, 0, velocidade);
Destroy (gameObject, 5);
}
Este script irá:
Para que a instancia funcione, o objeto precisa ser especial, mais precisamente um Prefab. Para criar um, vá na tela "Project >> Create >> Prefab"
O ícone desse prefab esta cinza, certo? Renomeie para "Tiro".
Pegue o "Tiro" da tela "Hierarchy" e mova - o para dentro do prefab "Tiro".
Agora o ícone esta azul. Que lindo!!!
Agora o script para que o jogador possa atirar. Ele será adicionado ao canhão de "Hierarchy".
Faça o mesmo processo, só que daremos o nome de "Atirar - criar tiro" e colocaremos o script abaixo:
var newObject : Transform;
private var x = 1;
function Update () {
if (Input.GetButtonDown("Fire1")) {
Instantiate(newObject, transform.position, transform.rotation);
}
}
Agora, sempre que ctrl (default para tiro) for pressionada, a prefab "Tiro" aparecerá no jogo. Automaticamente ela irá se mover por causa do primeiro script já criado.
Adicione este script ao "Canhao".
Em "Inspector >> Atirar - criar tiro(script)" coloque New Object = Assets: Tiro
Ctrl+S para salvar. Ctrl+P para testar. Veja que apertando ctlr sairá um tiro e, depois de 5 segundos, ele desaparecerá da tela (a câmera, depedendo da velocidade do tiro, poderá não ver o tiro sumir).
A criação de um tiro é, na realidade, um processo chamado no Unity de Instantiate (instanciar). O jogo criará outro game object pre-determinado pelo programador. No nosso caso, o tiro.
Toda nave possui um canhão, certo?
Vá em "GameObject >> Create Other>> Cube" e crie outro cubo.
Nome: "Canhao" (sem til, mesmo).
Scale: x = 1; y = 0,2; z = 1
Esse não será o canhão que o jogador irá ver na tela. Ele será, na verdade, a "fonte geradora" dos disparos da nave.
Vamos, lá. arraste "Canhao" para dentro de "Nave". Você terá algo mais ou menos assim... (clique na imagem para visualização completa)
Para que o canhão fique invisível, vá ma tela "Inspector >> Mesh Renderer >> Materials >> Default - Diffuse"
Mude para "Shadow Material >> Transparent >> Cutout >> Bumped Diffuse"
Alfha Cutout = 0 (todo p/ direita).
Agora vamos criar o tiro própriamente dito (o objeto a ser instanciado).
Para dominar a técnica de instanciar objetos, faremos isso com cubos.
Novamente, "GameObject >> Create Other >> Cube"
Nome: "Tiro"
Scale x = 20; y = 2; z = 100
Mude a textura para "Fire Add" (da mesma maneira que deixamos o canhão transparente)
Shader: "particles >> additive"
Agora o script de tiro. "Project >> Create >> JavaScript"
Nome: "Atirar - mover tiro"
Escreva o script abaixo:
var velocidade = 10;
function Update () {
transform.Translate(0, 0, velocidade);
Destroy (gameObject, 5);
}
Este script irá:
- transform.Translate(0, 0, velocidade); //Mover o objeto criado;
- Destroy (gameObject, 5); //Destruir o objeto após 5 segundos. Se ele não for destrído, vai dar problema.
Para que a instancia funcione, o objeto precisa ser especial, mais precisamente um Prefab. Para criar um, vá na tela "Project >> Create >> Prefab"
O ícone desse prefab esta cinza, certo? Renomeie para "Tiro".
Pegue o "Tiro" da tela "Hierarchy" e mova - o para dentro do prefab "Tiro".
Agora o ícone esta azul. Que lindo!!!
Agora o script para que o jogador possa atirar. Ele será adicionado ao canhão de "Hierarchy".
Faça o mesmo processo, só que daremos o nome de "Atirar - criar tiro" e colocaremos o script abaixo:
var newObject : Transform;
private var x = 1;
function Update () {
if (Input.GetButtonDown("Fire1")) {
Instantiate(newObject, transform.position, transform.rotation);
}
}
Agora, sempre que ctrl (default para tiro) for pressionada, a prefab "Tiro" aparecerá no jogo. Automaticamente ela irá se mover por causa do primeiro script já criado.
Adicione este script ao "Canhao".
Em "Inspector >> Atirar - criar tiro(script)" coloque New Object = Assets: Tiro
Ctrl+S para salvar. Ctrl+P para testar. Veja que apertando ctlr sairá um tiro e, depois de 5 segundos, ele desaparecerá da tela (a câmera, depedendo da velocidade do tiro, poderá não ver o tiro sumir).
007 - Space Invaders (2) - Visão geral e nave
Postado por
...:::Saulo Ribeiro:::...
às
3:15 PM
Aqui falarei sobre como irá ser a mecânica básica da nave.
Posicione na tela "Inspector >> Transform", position, x=0, y=0, z=0.
Se quiser coloque textura no terreno, mas deixe - o plano!
Basta posicionar a câmera acima do cenário e rotaciona - la em 90 graus. Em "Inspector >> Transform", faça Rotation x = 90.
De forma primitiva, usaremos aquilo que o programa pode nos disponibilizar, ou seja, um cubo. Vá ao menu "GameObject >> Create Other >> Cube"
Na tela "Inspector >> Transform", ajuste as dimensões do cubo: scale x = 200; y = 10; z = 100
Para mover a nave, aí é que entra a parte de programação. Na tela "Project", clique em "Create >> JavaScript."
Aparecerá na mesma tela um script com o nome "NewBehaviourScript". Aperte F2 (Windows) e renomeie para "Mover nave" (coloque outro nome a gosto, desde que não tenha acentuação gráfica.).
Clique duas vezes no script. Abrirá uma nova janela no UniSciTE (programa do Unity para programar scripts):
Escreva o script abaixo:
Aperte Ctrl+S para salvar.
Volte ao unity.
Pegue o script "Mover nave" da tela "Project" e arraste - a para dentro da "Nave" na tela "Hierarchy".
Ctrl+S para salvar. Ctrl+P para testar o jogo.
A princípio a nave se moverá para alem da visão da tela, pois ainda não limitamos por onde ela ira se movimentar. Isso será feito mais adiante.
- Terreno
- Visão do jogador
- Movendo a nave pela tela
1. TERRENO
Para melhor trabalharmos, criaremos tudo em cima de um terreno provisório. Vá no menu "Terrain --> Create terrain".
Posicione na tela "Inspector >> Transform", position, x=0, y=0, z=0.
Se quiser coloque textura no terreno, mas deixe - o plano!
2. VISÃO DO JOGADOR
Geralmente o unity possui scripts para jogos em primeira pessoa, daí não existe um script que mova apenas o personagem, deixando a câmera fixa. Neste jogo, tentaremos criar uma falsa aparência de 2d com vista de cima.
Basta posicionar a câmera acima do cenário e rotaciona - la em 90 graus. Em "Inspector >> Transform", faça Rotation x = 90.
Na tela "Scene", posicione a câmera como melhor achar conveniente. Oriente - se usando a tela "Game".
3. MOVENDO A NAVE PELA TELA
Para criar o desenho da nave, pode - se usar um programa de modelagem, pois o Unity não é aconselhavel para tal intuito.
De forma primitiva, usaremos aquilo que o programa pode nos disponibilizar, ou seja, um cubo. Vá ao menu "GameObject >> Create Other >> Cube"
Aperte F2 e renomeie para "Nave"
Na tela "Inspector >> Transform", ajuste as dimensões do cubo: scale x = 200; y = 10; z = 100
Para mover a nave, aí é que entra a parte de programação. Na tela "Project", clique em "Create >> JavaScript."
Aparecerá na mesma tela um script com o nome "NewBehaviourScript". Aperte F2 (Windows) e renomeie para "Mover nave" (coloque outro nome a gosto, desde que não tenha acentuação gráfica.).
Clique duas vezes no script. Abrirá uma nova janela no UniSciTE (programa do Unity para programar scripts):
Escreva o script abaixo:
var velocidade = 30;
function Update () {
transform.Translate(Input.GetAxis("Horizontal") * velocidade, 0, 0);
}
function Update () {
transform.Translate(Input.GetAxis("Horizontal") * velocidade, 0, 0);
}
Dessa forma a nave se moverá com a velocidade que você determinar sempre que esquerda ou direita (ou A e D) forem pressionados. Por default, ela se moverá à 30 fps, podendo ser alterado fora do script na tela "Inspector".
Aperte Ctrl+S para salvar.
Volte ao unity.
Pegue o script "Mover nave" da tela "Project" e arraste - a para dentro da "Nave" na tela "Hierarchy".
Ctrl+S para salvar. Ctrl+P para testar o jogo.
A princípio a nave se moverá para alem da visão da tela, pois ainda não limitamos por onde ela ira se movimentar. Isso será feito mais adiante.
terça-feira, 18 de maio de 2010
006 - Tocando Space Invaders (1) - Introdução.
Postado por
...:::Saulo Ribeiro:::...
às
5:26 PM
Aqui vou falar sobre como estou tentando desenvolver o space invaders para o processo seletivo.
Em programação, basicamente tentarei:
Em programação, basicamente tentarei:
- Mover a nave
- Fazer a nave atirar
- Desenvolver a ai dos aliens e do boss
- Sistema de levels
- Desenho do jogo
- Menu
- HUD
- Jogabilidade
005 - Processo Indigente 5ª semana - Hora de tocar os projetos
Postado por
...:::Saulo Ribeiro:::...
às
10:35 AM
Venho tendo um pequeno problema com a programação.
Já resolvi o problema de atirar...
Mas não o de o tiro atingir determinado objeto (ou seja, sumir!)
Logo, dediquei quase o dia todo para tentar eliminar o tiro.
Fiz busca na internet mas nada encontrei.
Acredito que o problema esteja no script de mover o tiro, pois ele move tanto a matéria prima que precisa ser colocada no cenário como o tiro que vou clonar. E quando tenta - se eliminar o clone acabo por eliminar a matéria prima.
Qual seria o plano? Colocar alguma coisa que mate apenas os clones e não a matéria prima.
Os trabalhos foram regados com muitas brincadeiras. MACARRÃO INSTANTÂNEO.
Só estando lá para entender.
Já resolvi o problema de atirar...
Mas não o de o tiro atingir determinado objeto (ou seja, sumir!)
Logo, dediquei quase o dia todo para tentar eliminar o tiro.
Fiz busca na internet mas nada encontrei.
Acredito que o problema esteja no script de mover o tiro, pois ele move tanto a matéria prima que precisa ser colocada no cenário como o tiro que vou clonar. E quando tenta - se eliminar o clone acabo por eliminar a matéria prima.
Qual seria o plano? Colocar alguma coisa que mate apenas os clones e não a matéria prima.
Os trabalhos foram regados com muitas brincadeiras. MACARRÃO INSTANTÂNEO.
Só estando lá para entender.
004 - Processo Indigente 4ª semana - E o game design ficou bom?
Postado por
...:::Saulo Ribeiro:::...
às
10:29 AM
Levamos a documentação de game design para análise.
Constatou - se que o texto estava desorganizado e que o sistema de bonificação estava desigual. E recebemos dicas:
Organizar tudo em 3 tópicos: objetivos, desafios e recompensas
Os objetivos podiam ser subdivididos em primários (objetivo principal do jogo), secundário (objetivos que o jogador terá de cumprir para concretizar o objetivo principal) e terciário (objetivos relevantes mas que poderão ajudar o jogador em seu objetivo principal)
Quanto aos desafios podemos citar os tipos de desafio que o jogador terá de encarar.
E as recompensas os tipos de powerups e o que eles irão fazer no jogador.
Elder também explicou sobre os tipos de desafios - destreza, resistência... - detectar quais desses desafios seriam colocados no jogo e definir um padrão de força para jogador e aliens.
Constatou - se que o texto estava desorganizado e que o sistema de bonificação estava desigual. E recebemos dicas:
Organizar tudo em 3 tópicos: objetivos, desafios e recompensas
Os objetivos podiam ser subdivididos em primários (objetivo principal do jogo), secundário (objetivos que o jogador terá de cumprir para concretizar o objetivo principal) e terciário (objetivos relevantes mas que poderão ajudar o jogador em seu objetivo principal)
Quanto aos desafios podemos citar os tipos de desafio que o jogador terá de encarar.
E as recompensas os tipos de powerups e o que eles irão fazer no jogador.
Elder também explicou sobre os tipos de desafios - destreza, resistência... - detectar quais desses desafios seriam colocados no jogo e definir um padrão de força para jogador e aliens.
003 - Processo seletivo 3ª semana - Grupos e projeto
Postado por
...:::Saulo Ribeiro:::...
às
10:23 AM
Era para ter mais alguma coisa, mas o instituto de matemática foi fechado por causa do concurso para diplomata. Ninguém entra.
Dividiram - se os grupos. Agora vamos começar a desenvolver a documentação (game design e level design) para uma versão do clássico Space Invaders.
Traduzindo, vamos falar sobre as regras do jogo: o que o jogador tem que fazer, como vai ser o desenho do jogo, controles, personagens, etc.
Tenho no meu grupo, alem de mim (programação), Luísa (roteiro), Kleber (som), Sérgio, Danilo "Pitoko", Nicole, Rafael Villa, George e Jessele.
Dividiram - se os grupos. Agora vamos começar a desenvolver a documentação (game design e level design) para uma versão do clássico Space Invaders.
Traduzindo, vamos falar sobre as regras do jogo: o que o jogador tem que fazer, como vai ser o desenho do jogo, controles, personagens, etc.
Tenho no meu grupo, alem de mim (programação), Luísa (roteiro), Kleber (som), Sérgio, Danilo "Pitoko", Nicole, Rafael Villa, George e Jessele.
segunda-feira, 17 de maio de 2010
002 - Processo Seletivo 2ª semana - A Engine
Postado por
...:::Saulo Ribeiro:::...
às
5:33 PM
Para aqueles que não sabem o que é uma engine, é basicamente o programa que cria o jogo.
Exemplo: para fazer uma animação, flash.
E para fazer jogo?
Bem, o grupo nos mostrou o Unity3d. Ferramenta para desenvolvimento de jogos bastante simples de usar. Só precisa de um conhecimento básico das áreas de desenvolvimento.
O unity aceita linguagem de programação C#, mono e python. E mesmo eu que nunca programei na vida consigo fazer alguma coisa.
Ao final, brinquei um pouco com o unity. Só fiz um terreno simples, com um monte de chapadas (como a diamantina). Paulo até me perguntou se eu poderia fazer um jogo em uma semana.
Vale a pena tentar...
Exemplo: para fazer uma animação, flash.
E para fazer jogo?
Bem, o grupo nos mostrou o Unity3d. Ferramenta para desenvolvimento de jogos bastante simples de usar. Só precisa de um conhecimento básico das áreas de desenvolvimento.
O unity aceita linguagem de programação C#, mono e python. E mesmo eu que nunca programei na vida consigo fazer alguma coisa.
Ao final, brinquei um pouco com o unity. Só fiz um terreno simples, com um monte de chapadas (como a diamantina). Paulo até me perguntou se eu poderia fazer um jogo em uma semana.
Vale a pena tentar...
001 - Processo indigente 1ª semana - Como começar
Postado por
...:::Saulo Ribeiro:::...
às
5:27 PM
Começa o processo seletivo para ingressar no indigente. No primeiro dia houve a apresentação dos candidatos no laboratório do dcc. As pretensões, as expectativas...
O grupo também deu-nos informações sobre como seria o processo. Disse também sobre trazer projetos anteriores relacionados a área de interesse (algum trabalho, brincadeira, essas coisas). No meu caso, posso trazer a minha animação - tentativa de jogo em flash.
Também pediu para o próximo dia de avaliação que fizessemos uma pesquisa sobre a área que queríamos seguir, e outras áreas para os indecisos.
Este diário também será levado em conta para o processo
O grupo também deu-nos informações sobre como seria o processo. Disse também sobre trazer projetos anteriores relacionados a área de interesse (algum trabalho, brincadeira, essas coisas). No meu caso, posso trazer a minha animação - tentativa de jogo em flash.
Também pediu para o próximo dia de avaliação que fizessemos uma pesquisa sobre a área que queríamos seguir, e outras áreas para os indecisos.
Este diário também será levado em conta para o processo
000 - Bem vindo: tudo começa aqui!
Postado por
...:::Saulo Ribeiro:::...
às
5:19 PM
Bem vindos ao "Saulo Andrade - Indigente". Aqui contarei as minhas experiências no grupo de desenvolvimento de jogos da Universidade Federal da Bahia.
A princípio de conversa, sou mero aspirante ao grupo: estou tentando entrar. Mas mesmo o processo seletivo já me agrega conhecimento para a vida. Diversas coisas que não conhecia tenho a oportunidade de ver aqui.
Tentarei a vaga como programador. Então se você é aprendiz assim como eu e quer algumas dicas, não desgrude do "Saulo Andrade - Indigente". Se tem alguma dica, comente aqui!
A princípio de conversa, sou mero aspirante ao grupo: estou tentando entrar. Mas mesmo o processo seletivo já me agrega conhecimento para a vida. Diversas coisas que não conhecia tenho a oportunidade de ver aqui.
Tentarei a vaga como programador. Então se você é aprendiz assim como eu e quer algumas dicas, não desgrude do "Saulo Andrade - Indigente". Se tem alguma dica, comente aqui!
Assinar:
Postagens (Atom)