Para a décima aula, a tarefa era recriar um jogo apresentado pelo professor, com base numa estrutura básica disponibilizada para o jogo.
O jogo resultante ficou bem parecido:
A dificuldade do jogo varia conforme a taxa de acerto do jogador (número de tiros certeiros sobre o número total de tiros disparados). Enquanto o jogador tiver uma taxa de acerto superior a 50%, o tempo de espera entre os coelhos vai reduzindo, e o tempo aumenta caso o jogador esteja errando muito (existe um limite superior e inferior de tempo entre coelhos). Apesar do número de coelhos acertados e errados ser computador, esses números não são utilizados para calcular a dificuldade do jogo.
O arquivo executável está disponível em: http://www.inf.ufsc.br/~mauricio/.data3d/jogo%20aula%2010.rar
sábado, 3 de dezembro de 2011
terça-feira, 25 de outubro de 2011
Aulas 6 e 7.
Na aula passada, aula #06, não foi passado nenhum exercício, ficamos livres para testar o framework e suas mais novas adições (como a skybox e a física que foi adicionada durante a aula).
Já a aula número 7 foi uma revisão geral do framework, e como tarefa deveríamos fazer alguma coisa que utilizasse várias funcionalidades da ferramenta. Escolhi transformar o exemplo de Pong 2D usado como caso de estudo durante a aula para uma versão 3D. Além da inteligência artificial dos dois jogadores, é possível controlar o jogador vermelho nos dois eixos. O resultado pode ser visto abaixo:
Já a aula número 7 foi uma revisão geral do framework, e como tarefa deveríamos fazer alguma coisa que utilizasse várias funcionalidades da ferramenta. Escolhi transformar o exemplo de Pong 2D usado como caso de estudo durante a aula para uma versão 3D. Além da inteligência artificial dos dois jogadores, é possível controlar o jogador vermelho nos dois eixos. O resultado pode ser visto abaixo:
E agora o "Sky-Pong 3D" (adicionando uma skybox):
quinta-feira, 13 de outubro de 2011
Exercício da aula 5.
Com novas adições no framework, nossa tarefa para a quinta aula era criar alguma aplicação utilizando as novas ferramentas (como Entity e Billboard). Aqui está uma screenshot da aplicação de teste que eu criei: várias vacas (de um .obj que eu encontrei) usando 2 texturas diferentes de ouro. Fiz uma fila de vacas de ouro rotacionadas =)
quarta-feira, 5 de outubro de 2011
Exercício da aula 4.
Na quarta aula foi disponibilizado um framework maior para trabalharmos com OpenGL e desenvolvermos o projeto final. Como exercício dessa aula, foi pedido que fizéssemos uma aplicação utilizando o novo framework, para nos familiarizar, identificar problemas ou novas ferramentas necessárias.
A aplicação que criei é bem simples, são apenas 4 bolas conectadas numa hierarquia com scene graph onde é possível modificar a partir de qual ponto da hierarquia se quer movimentá-las (semelhante ao exemplo de braço e antebraço), e o eixo de rotação das bolas.
O código completo e o release pode ser baixado em http://www.inf.ufsc.br/~mauricio/.data3d/Aula4.rar
A aplicação que criei é bem simples, são apenas 4 bolas conectadas numa hierarquia com scene graph onde é possível modificar a partir de qual ponto da hierarquia se quer movimentá-las (semelhante ao exemplo de braço e antebraço), e o eixo de rotação das bolas.
O código completo e o release pode ser baixado em http://www.inf.ufsc.br/~mauricio/.data3d/Aula4.rar
segunda-feira, 3 de outubro de 2011
sexta-feira, 30 de setembro de 2011
Exercício da aula 3.
Na terceira aula tivemos uma visão geral de OpenGL e fizemos algumas demonstrações básicas, além de começar a montar um framework para ser utilizado em nosso projeto.
Como exercício, apenas tínhamos que criar alguma aplicação bem simples, para ver se estávamos conseguindo entender as ideias básicas do OpenGL e a utilização das classes que já temos disponíveis. Partindo do projeto base passado pelo professor, acrescentei 2 cenas diferentes. Uma mais simples, com um sorvete sendo desenhando e com a possibilidade de adição de mais bolas de sorvete, e uma outra cena em que é possível mudar os sabores das bolas.
O código completo pode ser baixado em http://www.inf.ufsc.br/~mauricio/.data3d/Aula3.rar
Como exercício, apenas tínhamos que criar alguma aplicação bem simples, para ver se estávamos conseguindo entender as ideias básicas do OpenGL e a utilização das classes que já temos disponíveis. Partindo do projeto base passado pelo professor, acrescentei 2 cenas diferentes. Uma mais simples, com um sorvete sendo desenhando e com a possibilidade de adição de mais bolas de sorvete, e uma outra cena em que é possível mudar os sabores das bolas.
O código completo pode ser baixado em http://www.inf.ufsc.br/~mauricio/.data3d/Aula3.rar
quarta-feira, 21 de setembro de 2011
Exercício da aula 2.
O exercício da segunda aula ainda era sobre conceitos básicos de C++. Dessa vez era transformar 2 estruturas usadas em sala para que herdem de uma classe de estrutura de dados genérica e criar as funções de cópia para essas duas classes (Array e Lista Encadeada).
Coloquei o código em http://www.inf.ufsc.br/~mauricio/.data3d/Aula2.rar
Coloquei o código em http://www.inf.ufsc.br/~mauricio/.data3d/Aula2.rar
quarta-feira, 14 de setembro de 2011
Exercício da aula 1.
O exercício da primeira aula era bem simples, fazer um método resize() para uma implementação de Array disponibilizada pelo professor.
int Array::resize(unsigned novoTamanho) {
int numValDescartados = 0;
int* novoArray = new int[novoTamanho];
if (novoTamanho < _tamanho) {
numValDescartados = _tamanho - novoTamanho;
memcpy(novoArray,_dados,sizeof(int) * novoTamanho);
}
else {
memcpy(novoArray,_dados,sizeof(int) * _tamanho);
}
delete[](_dados);
_tamanho = novoTamanho;
_dados = novoArray;
return numValDescartados;
}
(5)[ 0 1 2 3 4 ]
resize(4) = 1
(4)[ 0 1 2 3 ]
resize(6) = 0
(6)[0 1 2 3 4 0 ]
0 2 4 6 8 10
int numValDescartados = 0;
int* novoArray = new int[novoTamanho];
if (novoTamanho < _tamanho) {
numValDescartados = _tamanho - novoTamanho;
memcpy(novoArray,_dados,sizeof(int) * novoTamanho);
}
else {
memcpy(novoArray,_dados,sizeof(int) * _tamanho);
}
delete[](_dados);
_tamanho = novoTamanho;
_dados = novoArray;
return numValDescartados;
}
E a saída gerada foi com essa implementação foi:
resize(4) = 1
(4)[ 0 1 2 3 ]
resize(6) = 0
(6)[0 1 2 3 4 0 ]
0 2 4 6 8 10
Game Programming 3D
Opa, voltando a postar.
O curso de Game Programming Full tinha sido interrompido no final do ano passado, pois só tinham sobrado 2 alunos (eu e mais 1) e não dava pra iniciar a parte 3D desse jeito. Então a gente esperou a próxima turma concluir a parte inicial e juntamos as turmas.
Parece que dessa vez o blog vai ter que ser mais utilizado, então vou começar a postar os exercícios aqui toda semana. Daqui a pouco já coloco o primeiro.
Até mais.
O curso de Game Programming Full tinha sido interrompido no final do ano passado, pois só tinham sobrado 2 alunos (eu e mais 1) e não dava pra iniciar a parte 3D desse jeito. Então a gente esperou a próxima turma concluir a parte inicial e juntamos as turmas.
Parece que dessa vez o blog vai ter que ser mais utilizado, então vou começar a postar os exercícios aqui toda semana. Daqui a pouco já coloco o primeiro.
Até mais.
Assinar:
Postagens (Atom)