Blog de Programação para games Full
Pessoal, postarei aqui os exercícios de cada semana.
AULA 1 - INTRODUÇÃO
Para a próxima vocês devem trazer a idéia inicial para o jogo que será desenvolvido individualmente por cada aluno. Várias recomendações foram passadas em aula porém o mais importante é tentar escolher uma proposta compatível com os seus tempos livres.
Para orientá-los, a lista a seguir representa aproximadamente em ordem crescente o modelo de um jogo perante a sua dificuldade de ser desenvolvido.
- Tetris - fácil, pode ser feito em matriz e não requer muita física.
- Pac-Man - razoável, requer alguma IA e dá liberdades ao jogador.
- Pong - razoável, requer alguma física.
- Mario - complicado, engloba vários elementos desafiadores como física, animação, IA e dá uma enorme liberdade ao jogador.
AULA 2 - ALLEGRO BÁSICO
Como falado em aula, o execício da semana consiste em alterar o código passado para tornar possível o "pulo duplo" do personagem com o objetivo de fixar a lógica de programação básica. Os critérios são os seguintes:
- O segundo pulo somente deve ser possível enquanto o primeiro estiver em execução (duh).
- Após a inicialização do segundo pulo, o personagem somente poderá pular novamente ao atingir o chão.
- O código deve obedecer convenções de gravidade e impulso (nada de "pulo forçado").
AULA 3 - PHOTOSHOP - ANIMAÇÃO
Usando o código de pulo passado em aula vocês devem organizar uma animação especial para tal, recortem e preparem ao menos uma seqüência de 2 imagens, uma para ser disposta no momento de queda e ascensão do personagem, e outra para quando o personagem estiver próximo ao cume da sua parábola de pulo.
Além disso, vocês devem utilizar o conhecimento em photoshop passado para preparar ao menos as seqüências de animação necessárias para o movimento do personagem principal (caso tenha...) dos seus respectivos projetos.
AULA 4 - MATRIZ - SOM
Com o conhecimento adquirido sobre a relação matriz/programação para jogos, os que sentirem que seus projetos usarão esta estratégia devem organizar tal para suportá-la. Lembrando que est método no início talvez possa parecer que veio para complicar, mas a longo prazo pode ser de crítica ajuda.
Além disso, usando as funções de som passadas, vocês devem escolher ao menos um som para implementar em seus projetos neste momento (qualquer coisa, de música a simples efeito).
lembrem de trazer o que foi feito do projeto na próxima aula, mesmo que seja pouco.
AULA 5 - SCROLLING - "CÂMERA"
A aula passada visa o algoritmo de scrolling, sistema que acabará sendo crítico para boa parte dos projetos individuais. Portanto, o exercício é justamente aplicar a técnica no projeto da maneira que tal exigir, caso se aplique.
AULA 6 - COLISÃO
O exercício consiste primordialmente na tomada de decisão, em meio a qualquer projeto o sistema de física escolhido pode se mostrar crucial para o sucesso da empreitada, portanto, com o conhecimento adquirido decidam o sistema de colisão de seus projetos tendo em vista as seguintes diretrizes abordadas em aula:
bounding box - leve porém limitado em alguns casos.
Bounding box múltiplos - diminui a limitação sem severamente comprometer a performance. (recomendado apenas caso necessário)
PixelPerfect - sacrifica performance para uma colisão perfeita.
PixelPerfect/BoundingBox - sacrifica menos performance sem abrir muita mão da física.
Matriz - Boa colisão e performance, mas somente aplicável a alguns tipos de jogos .
Usando a Fòrmula/Biblioteca passada em aula, implemente o sistema de colisão escolhido. Além disso, observem o projeto Física-SideScrolling passado, tentem adicionar outra plataforma no ar em que o personagem possa pisar.
AULA 7 - TIMER
O uso de timers é indispensável em qualquer tipo de jogo até mesmo os baseados em turnos, sendo assim implementem o VSync nos projetos.
Além disso,
Criem um efeito de poeira para quando o personagem cair no chão retornando de uma sequência de pulo, para isso:
- Encontrem ou façam uma simples imagem para representar poeira
- No momento em que o personagem tocar o chão desenhem 4 ou mais desta imagem aos pés do personagem, lentamente se afastando uma das outras.
- Após 5 segundos, elimine de alguma forma as imagens de poeira(cuidado, acessar depois um posição nula = crash do jogo)
AULA 8 - ORIENTAÇÃO AO OBJETO
O Projeto final somente será aceito se estiver devidamente orientado ao objeto, isso não significa somente criar classes que se referenciem, mas também seguir boas práticas de programação que acompanham a técnica.
Quanto mais tempo se esperar para orientar o código, mais será trabalhosa a conversão. Sendo assim, orientem os sues projetos ao objeto e postem a modelagem básica de como será o planejamento do seu game.
Uma modelagem em Paint já é aceitável, para os que quiserem uma ferramenta mais especializada é recomendado o Enterprise Architect.
AULA 9 - PONTEIROS
Convertam as classes já criadas para ponteiros, usando o operador new para instanciar e o operador -> para acessar os atributos e métodos das classes. passe o ponteiro da instância da classe para outras que eventualmente necessitariam, evitando assim de se passar um valor por parâmetro em todos os frames.
Além disso, crie duas classes simples, faça com que uma se comunique com a outra através de um ponteiro passado no construtor, para isso:
- Classe A: crie um atributo inteiro var
- Classe B: acesse o atributo var de A e o some em 1, a cada frame
- Main: rode a máquina de frames nele acesse somente um método dentro de A e B sem parâmetros
- Main: imprima o valor de var em A, por frame
AULA 10 - HERANÇA - MOUSE
Escolha uma classe em seus projetos (recomendada: classe do protagonista), faça esta classe herdar outra classe com pelo menos os valores posx e posy.
- Faça a classe filho ser desenhada usando posx e posy do pai.
- Aplique a classe pai em todas as classes que necessitarem de uma posição no espaço.
AULA 11 - ARQUIVOS - PIXELS
AULA 12 - A* PATHFINDING
Aprimorem o algoritmo de pathfinding passado em aula das seguintes formas:
- Encontrem a falha na lógica onde a equação "se perde" ao atingir um ponto sem opções de movimento e a consertem (fazer poder voltar pelo caminho de onde veio momentaneamente).
- Utilizem o clique do mouse para fazer a posição do "alvo" ser dinâmica, a cada clique o se transporta para a posição do clique e a equação pathfinding se reinicia.
AULA 13 - OPENGL
Aprimorando as suas habilidades de "se achar" em um ambiente virtual crú, usem o modelo de sorvete criado em aula(casca e 3 bolas) para adicionar flocos de chocolate quadrados na bola mais externa (postar foto).
AULA 14 - TEMPLATE - NAMESPACES
Criem um simples programa allegro com uma imagem qualquer se movendo através de teclas, utilize pelo menos as variáveis posx, posy e imagem. Feito isso crie um namespace com exatamente as mesmas variáveis mais velocidade e aplique no programa.
Faça as duas imagens se moverem ao teclado sem conflitos (a imagem do namespace deve ser mover segundo sua variável velocidade).
AULA 15 - THREADS
Utilizem o projeto individual de vocês para tentar recriar a separação entre lógica e renderização atribuindo uma Thread para cada uma das rotinas, lembrando que não é necessário que o projeto final utilize esta técnica, este é apenas um exercício.
Cuidado para não tornar uma thread dependente da outra, ou problemas poderão ocorrer. Praticamente uma thread deve estar preparada para receber todos os valores como null se assim for o caso sem ocorrer crash.
AULA 16 - CANAL ALPHA
Lembrando das diferenças em performance sobre se usar o canal alpha ou não e também das características técnicas de cada um, criem um pequeno projeto com um cenário estático e um personagem controlado pelo jogador, reflitam sobre qual deles deveria usar alpha ou não e poste o código de como fora feito a implementação dos dois.
OBS: um deve usar alpha e o outro não.
AULA 17 - MÁQUINA DE ESTADOS
Usado a técnica de Máquina de estados, aprimorem o código passado a vocês para tornar o inimigo capaz de perseguir o personagem em todas as direções, isso alterando entre os estados idll, seek e atack.
Lembre que a máquina não pode receber ordens diretas, somente deve ser invocada por uma classe manager e então tomar todas as suas decisões independentemente de sua invocadora.
AULA 18 - TORQUE 1
Usando a ferramente Torque2D, tentem criar um sistema onde uma bola cai verticalmente e o jogador possui um objeto que é capaz de captá-las, devem ser várias bolas caindo ao mesmo tempo e quando uma chegar ao final ou for captada deve ser imediatamente reinstânciada em sua origem e reiniciar o seu ciclo.
AULA 19 - TORQUE 2
Usando o sistema já montado tente estabelecer um sistema de disparo no objeto controlado pelo jogador, este também deve ser capaz de capturar as bolas que caem, atribua também um limite de munição disponível para o jogador.
AULA 20 - PROJETOS
Pessoal, postem um pequeno vídeo do seus projetos em funcionamento, tentem mostrar todos os sistemas implementados e se possível gravem com voz. Para isso o programa Camtasia está disponível na pasta ferramentas do curso.