Jogos e Simulação

Objetivos

  • Learn how to program video games
    • What are the key concepts of game design
    • What is involved in the process of game development
    • What are the key components of a game engine
    • How the game engine components work together
    • How to use game engines for game development
    • What are the key techniques and algorithms inside a game engine

 

Saber

  • Modelação Básica 3D e constituição de um “pipeline de visualização 3D”
  • Técnicas e modelos de iluminação, locais e globais
  • Arquitetura hardware dos GPUs modernos e modelo de programação recorrendo a shaders.
  • Exploração da arquitetura dos GPUs para a produção de efeitos especiais avançados em tempo real
  • Técnicas específicas para o desenvolvimento de jogos e simulação.
  • Técnicas de animação por computador.
  • Arquitetura de motores de jogos e sua programação.
  • Produção e reprodução de áudio 3D

Fazer

  • Programar grande parte das diversas técnicas lecionadas.
  • Construir aplicações gráficas 3D interativas.
  • Programar e utilizar componentes de software no domínio (game engines)
  • Escolher e aplicar a técnica mais adequada à resolução de um problema.

Soft-Skills

  • Capacidade de analisar hardware gráfico e  sistemas gráficos atuais
  • Capacidade de analisar e programar motores de jogos
  • Melhor compreensão de áreas relacionadas, como a fotografia, o cinema e a física.

Caracterização geral

Código

11557

Créditos

6.0

Professor responsável

Nuno Manuel Robalo Correia, Rui Pedro da Silva Nóbrega

Horas

Semanais - 4

Totais - 52

Idioma de ensino

Português

Pré-requisitos

- Conhecimentos prévios de programação (C, C#, C++ ou Java)

- Conhecimentos básicos de Algebra Linear (vetores e matrizes)

- Noções básicas de geometria

- Curso Introdutório de Computação Gráfica

Bibliografia

  • The Art of Game Design, 

A Book of Lenses, 

Jesse Schell, 2008

  • Game Development Essentials, 

A Practical Approach to Real-Time Computer Graphics

, 3rd Edition, 2012, 
Jeannie Novak

  • Unity Game Development Cookbook, 

Essentials for Every Game, 

Paris Buttfield-Addison, Jon Manning, Tim Nugent, 2019



  • Game Engine Architecture

, 3rd Edition, 2018, 
Jason Gregory

  • Realtime Rendering

, 4th Edition, 2018, 
Tomas Akenine-Möller et al


Material adicional será disponibilizado durante as aulas e no website da UC.

Método de ensino

As aulas teóricas serão suportadas por slides, bem como por outros materiais de suporte tais como demos, e terão um carácter mais expositivo, embora com os alunos sejam encorajados a participar ativamente, sendo questionados a opinar criticamente as metodologias e técnicas apresentadas para o desenvolvimento de jogos.

As aulas práticas visam a aquisição de competências na utilizacão de motores de jogos, sendos os alunos desafiados a desenvolver 2 projetos. O primeiro, mais pequeno, visa colocar os alunos em pé de igualdade e consiste no desenvolvimento de um jogo mais simples, individualmente. O segundo projeto, realizado em grupo, permite que cada aluno possa explorar as áreas do desenvolvimento do jogo que mais lhe interessam, ao ser permitida e encorajada a divisão de tarefas.

Método de avaliação

Componentes da Avaliação

A avaliação é constituída por duas componentes: a componente laboratorial e a componente teórico-prática.

Componente Laboratorial e Frequência

A componente laboratorial é composta por:

  • um projecto individual (PI)
  • um projecto de grupo (PG)

As entregas, classificadas no intervalo de 0 a 20 valores, serão discutidas individualmente. A nota de um aluno no trabalho de grupo depende do trabalho que entregou, do seu desempenho na discussão e do desempenho dos seus colegas de grupo na discussão, caso os desempenhos sejam significativamente desequilibrados.

A nota da componente laboratorial (CompL) é obtida por:

CompL = 0.25 * PI + 0.75 * PG.

Não há frequência nesta Unidade Curricular. As discussões dos trabalhos serão efetuadas no fim do semestre.

Para obter aprovação, é necessário que CompL >= 8.0 .

Componente Teórico-Prática

A componente teórico-prática é composta por dois testes (no período de aulas) ou por um exame (na Época de Recurso). As três provas são presenciais, individuais, escritas e com consulta duma folha manuscrita (frente e verso). Não são permitidos dispositivos eletrónicos (e.g. calculadoras, telemóveis, smartwatches e portáteis).

Há pré-inscrição nos testes.

A nota da componente teórico-prática (CompTP) é a média aritmética simples das notas dos testes (T1 e T2) ou a nota do exame (Ex):

CompTP = ( T1 + T2 ) / 2   ou   CompTP = Ex.

Para obter aprovação, é necessário que CompTP >= 8.0 .

Nota Final

A nota final (F) dos alunos com frequência é:

  • F = min(CompL,CompTP),   se CompL < 8.0 || CompTP < 8.0
  • F = 0.6 CompL + 0.4 CompTP,   se CompTP >= 8.0 e CompL >=8.0 .

Todas as notas (PI, PG, T1, T2, Ex, CompL e CompTP) são arredondadas às décimas, exceto a nota final (F) que é arredondada às unidades.

Para os restantes anos lectivos, não estando a unidade curricular a funcionar com frequência nessa altura, todos os alunos que realizaram as práticas até 2019/2020, inclusive, não têm frequência, devendo assim inscrever-se num turno prático.

Conteúdo

  1. Hardware gráfico 3D e o pipeline gráfico 3D.
  2. Modelação 3D e representações de geometria.
  3. Interação da luz com os objetos, Modelos de iluminação e técnicas de seombreamento.
  4. Tópicos avançados de síntese de imagem: aplicações do uso de texturas e geração de sombras.
  5. Grafos de cena, gestão dos dados e otimizações para tempo real.
  6. Arquitetura de motores de jogos.
  7. Técnicas de animação: interpolação de quadros, morphing e modelos articulados.
  8. Deteção e resposta a colisões.
  9. Princípios físicos dos jogos 3D e métodos numéricos.
  10. Física da propagação do som, localização do som e síntese de som 3D.
  11. Programação de um motor de jogos e desenvolvimento de jogos.

Cursos

Cursos onde a unidade curricular é leccionada: