Tecnologias de Jogos de Vídeo
2011-2012

Abel Gomes Associate Professor
Gab. 3.26, Fase VI
Departamento de Informática
University of Beira Interior
6200-001 Covilhã
PORTUGAL
agomes@di.ubi.pt
tel: +351 275 319 891
fax: +351 275 319 899
AVISOS:
--- (13-Maio-2012)
As aulas de amanhã (segunda-feira, 14 de Maio) serão lecionadas na quarta-feira (16 de Maio) no mesmo horário, mas a sala da aula teórica será a sala 6.16.
--- (09-Maio-2012)
A escala de apresentações de hoje.
--- (07-Maio-2012)
A aplicação de base em JOGL (Java + OpenGL) para o desenvolvimento do projecto em NetBeans e das aulas práticas que restam do semestre.
--- (07-Maio-2012)
A sala 6.13 é onde decorrerá as defesas de projecto (1ª fase) no dia 9 de Maio, pelas 14:00.
--- (09-Abril-2012)
A matéria que será avaliada na 1ª frequência compreende os capítulos T01, T02, T03 e parte do T04 (só até às árvores BSP inclusive).
Objectivos
Após a conclusão da disciplina, o estudante deve ser capaz de:
- descrever a importância dos jogos no mercado de software;
- saber como construir jogos simples, possivelmente envolvendo ambientes 2D e 3D;
- analisar jogos inacabados e integrar técnicas de animação nos referidos jogos incompletos;
- demonstrar um conhecimento suficiente nas áreas da matemática, como é usual em quase todos os projectos de jogos;
- demonstrar um conhecimento suficiente nas áreas da física, como é usual em muitos projectos de jogos;
- demonstrar um conhecimento suficiente nas áreas da inteligência artificial, como é usual em vá projectos de jogos;
- demonstrar um conhecimento suficiente nas áreas de redes de computadores, como é usual em projectos de jogos que envolvem vários jogadores;
- demonstrar um conhecimento profundo dos paradigmas de programação usados em desenvolvimento de jogos;
- demonstrar um conhecimento abrangente dos conceitos principais inerentes à programação gráfica 3D em tempo real, incluindo programação de coloradores ("shaders", em inglês) e efeitos especiais.
Teóricas
- T00 : Introdução, Planeamento e Projecto
- ----- : Introduction, Planning, and Project
- T01 : Géneros de Jogos
- ----- : Game Genres
- T02 : Desenho de Jogos
- ----- : Game Design
- ----- : Understanding Fun
- T03 : Motores de Jogos
- ----- : Game Engines
- T04 : Gestão e Renderização de Cenas
- ----- : Scene Management and Rendering
- T05 : Modelação de Terrenos
- ----- : Terrain Generation and Modeling
- T06 : Detecção de Colisões
- ----- : Collision Detection
Práticas
- P01 : História dos Jogos de Vídeo
- ----- : Brief History of Games
- P02 : Construção do Jogo 2D em XNA
- ----- : 1 - Crie um jogo em XNA e execute-o imediatamente. Repare que o XNA cria o esqueleto de qualquer jogo.
- ----- : 2 - Leia agora o seguinte documento: Jogos XNA em 2D
- ----- : 3 - Carregue o seguinte programa/jogo, alterando-o depois de modo que a sprite efectue movimentos circulares: Moving cat sprite.
- ----- : 4 - Carregue o seguinte programa/jogo, alterando-o depois de modo que 1 um segmento de rode sobre si pr&ocute;prio, que se desloque dentro da window, e que ao bater nas paredes da window seja refletido (bouncing movement): Bouncing LineSegment.
- ----- : 5 - Leia o seguinte tutorial e construa o jogo de pong respectivo passo-a-passo: Jogo de Pong
- P03 : Construção do Jogo 3D em XNA
- ----- : 1 - Faça uma leitura rápida do seguinte documento: Notas sobre XNA
- ----- : 2 - Leia agora o seguinte documento: Mais notas sobre XNA
- ----- : 3 - Carregue o seguinte programa/jogo, alterando-o depois de modo que modelo se desloque ao longo do eixo Z,
usando para isso cliques na tecla Z:
Rotating space ship
Veja-se ainda os recursos disponíveis em: Going Beyond: XNA Game Studio in 3D - ----- : 4 - Altere o programa anterior por forma a fazer a nave deslocar-se numa circunferência no plano YZ.
- P04 : Motor de Jogo
- ----- : 1 - Apresentação do Motor de Jogo
- ----- : 2 - Instalação do Motor de Jogo
- ----- : 3 - Testes preliminares do Motor de Jogo
- P05 : Gestão de Cenas
- ----- : 1 - Gestão de Cenas
- P06 : Deteção de Colisões
- ----- : 1 - Deteção de Colisões fora do GameProject. Este código em Java é auto-contido e serve para testar a "narrow phase" em colisões. A "broad phase" já está implementada.
- ----- : 2 - Deteção de Colisões dentro do GameProject. Esta ficha servirá de guia para aqueles que quiserem perceber como se altera o código do motor de física do Game Project.
- P07 : Geração de Terrenos
- ----- : 1 - Geração de Terrenos fora do GameProject. Este código em Java é auto-contido e serve como base de partida para algoritmos de geração de terrenos.
- ----- : 2 - Diamond-Step Algorithm. Analise este algoritmo no link ao lado e implemente-o no código de base fornecido no ponto 1.
Bibliografia
- J. Foley, A. van Dam, S. Feiner, J. Hughes. Computer Graphics: Principles and Practice (2nd edition in C). Addison-Wesley Publ. Company, 1996.
- D. Eberly. 3D Game Engine Architecture. Morgan Kaufmann Publishers, 2005.
- D. Eberly. 3D Game Engine Design. Morgan Kaufmann Publishers, 2007.
- A. Watt and F. Policarpo. 3D Games: Real-time Rendering and Software Technology (vol.1). Addison-Wesley Publ. Company, 2000.
- A. Watt and F. Policarpo. 3D Games: Animation and Advanced Real-time Rendering (vol.2). Addison-Wesley Publ. Company, 2003.
- T. Akenine-Moller and E. Haines. Real-Time Rendering. A.K. Peters, 2002.
- R. Fernando. GPU Gems: Programming Techniques, Tips and Tricks for Real-Time Graphics Addison-Wesley Professional, 2004.
- M. Pharr and R. Fernando. GPU Gems 2: Programming Techniques for High-Performance Graphics and General-Purpose Computation. Addison-Wesley Professional, 2005.
- H. Nguyen. GPU Gems 3. Addison-Wesley Professional, 2007.
Avaliação
General Assessment:
- 1 project in games (6.5 marks for code + 2.0 marks for report + 1.5 marks for paper)
- 2 mid-term written exams (10 marks = 5 marks for first + 5 marks for second) ;
Written Examination Dates:
- 1st Mid-term Exam (1° Teste) :
28/03/201210/04/2012, Tuesday, 18:00, sala 6.26. - 2nd Mid-term Exam (2° Teste) : 30/05/2012, Wednesday, 14:00.
Important Dates for Ongoing Project:
-
Wednesday, 11th AprilFriday, 2nd May (Wednesday,14:00): Public discussion of a scientific paper. -
Wednesday, 11th AprilFriday, 2nd May (Wednesday,14:00): Project's alpha code hand-in with preliminary report. - Friday, 08th June (14:00): Full project hand-in with final report.
- Wednesday, 13th June (14:00): Assurance vivas (defesa do projecto).
Avaliação do Projecto:
- Enunciados entregues na segunda semana de aulas.
- Não serão aceites projectos fora de prazo.
- Os projectos são obrigatória e pessoalmente entregues ao regente da disciplina num ficheiro .zip.
- O projecto carece de demonstração prática e apresentação oral dos alunos perante o docente.
- Projectos que não funcionem terão nota zero.
- Os alunos que não demonstrem dominar as particularidades da concepção, desenvolvimento e teste do seu projecto terão nota zero. Por outras palavras, não serão admitidos a exame em caso de fraude.
- O projecto carece de relatório final escrito em Latex
Report Template (Exemplar de Relatório)
Projectos Game Source Code
- PJ0 : A* Path Finding Algorithm for Video Games
- ----- : Hart, P. E.; Nilsson, N. J.; Raphael, B. (1968). "A Formal Basis for the Heuristic Determination of Minimum Cost Paths".
- ----- : A* Search Algorithm
- ----- : Amit's Shortest Paths
- ----- : Ler cap. 5 e 8 deste livro.
- ----- : Pathfinding in Computer Games
- PJ1 : Collision Detection Algorithm in Video Games
- ----- : A fast procedure for computing the distance between complex objects in three-dimensional space.
- ----- : Gilbert-Johnson-Keerthi distance algorithm
- ----- : Velocity-Aligned Discrete Oriented Polytopes for Dynamic Collision Detection
- ----- : Collision Detection
- ----- : Advanced Collision Detection Techniques
- ----- : Practical Collision Detection
- PJ2 : Terrain Generation Algorithm
- ----- : The definition and rendering of terrain maps
- ----- : Virtual Terrain Project
- ----- : A Survey of Procedural Methods for Terrain Modelling
- ----- : Thoughts on Generating Terrains
- ----- : Rendering Very Large, Very Detailed Terrains
- ----- : Computer Landscape Generation and Smoothing
- ----- : Generating Random Fractal Terrain
- ----- : Perlin Noise
- PJ3 : Explosion Effect Algorithm in Games
- ----- : Particle Systems: a Technique for Modeling a Class of Fuzzy Objects
- ----- : Make a Particle Explosion Effect
- ----- : ParticleSystems.org
- ----- : Particle system
- ----- : Designing an Extensible Particle System using C++ and Templates
- ----- : Make a Particle Explosion Effect
- ----- : Particle Systems
- PJ4 : Shadow Mapping Algorithm in Games
- ----- : Practical Shadow Mapping
- ----- : Real-time Soft Shadows in a Game Engine
- ----- : Shadow mapping
- ----- : Shadow Mapping
- ----- : Shadow Mapping and GLSL programming
- ----- : Shadow Mapping and Shadow Volumes: Recent Developments in Real-Time Shadow Rendering
- ----- : Shadows and Code
- PJ5 : Fringe Search Algorithm in Path Finding for Video Games
- ----- : Fringe Search: Beating A* at Pathfinding on Game Maps.
- ----- : Hart, P. E.; Nilsson, N. J.; Raphael, B. (1968). "A Formal Basis for the Heuristic Determination of Minimum Cost Paths".
- ----- : A* Search Algorithm
- ----- : Amit's Shortest Paths
- ----- : Ler cap. 5 e 8 deste livro.
- ----- : Pathfinding in Computer Games
- PJ6 : Another Collision Detection Algorithm in Video Games
- ----- : A new narrow phase collision detection algorithm using height projection.
- ----- : A fast procedure for computing the distance between complex objects in three-dimensional space.
- ----- : Velocity-Aligned Discrete Oriented Polytopes for Dynamic Collision Detection
- ----- : Gilbert-Johnson-Keerthi distance algorithm
- ----- : Collision Detection
- ----- : Advanced Collision Detection Techniques
- ----- : Practical Collision Detection
- PJ7 : Another Terrain Generation Algorithm
- ----- : Rendering Very Large, Very Detailed Terrains
- ----- : The definition and rendering of terrain maps
- ----- : Virtual Terrain Project
- ----- : A Survey of Procedural Methods for Terrain Modelling
- ----- : Thoughts on Generating Terrains
- ----- : Computer Landscape Generation and Smoothing
- ----- : Generating Random Fractal Terrain
- ----- : Perlin Noise
- PJ8 : Another Explosion Effect Algorithm in Games
- ----- : On-the-fly Point Clouds through Histogram Pyramids
- ----- : Particle Systems: a Technique for Modeling a Class of Fuzzy Objects
- ----- : Make a Particle Explosion Effect
- ----- : ParticleSystems.org
- ----- : Particle system
- ----- : Designing an Extensible Particle System using C++ and Templates
- ----- : Make a Particle Explosion Effect
- ----- : Particle Systems
- PJ9 : Shadow Mapping Algorithm in Games
- ----- : Practical Shadow Mapping
- ----- : Real-time Soft Shadows in a Game Engine
- ----- : Shadow mapping
- ----- : Shadow Mapping
- ----- : Shadow Mapping and GLSL programming
- ----- : Shadow Mapping and Shadow Volumes: Recent Developments in Real-Time Shadow Rendering
- ----- : Shadows and Code
Web Spots (Fontes de informação na web)
- Biblioteca OpenGL.
- Programação gráfica.
- Nate Robbins - OpenGL - GLUT for Win32.
- Jogl tutorial.
- JogAmp.
- Jogl.
Instructors (Docentes)
- Abel Gomes (agomes@di.ubi.pt, gab.3.26, DI, Fase 6)
Office Hours (Horário de Atendimento):
- Thursday (Quinta-feira): 17:00-19:00
- Friday (Sexta-feira): 17:00-19:00
Evaluation Marks (Classificações)
- N/A
Last Update May 7, 2012