Buscar

UNIVESP - 2022 - Projeto e Programação de Jogos - Revisao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

EES102 | Projeto e Programação de Jogos - Revisão 
Olá pessoal! Este documento traz uma revisão do conteúdo visto na disciplina de Projeto e 
Programação de Jogos. A intenção é trazer os pontos mais importantes vistos até agora como 
forma de consolidar o aprendizado. Também serve para prepará-los para a realização da prova 
da disciplina. 
Introdução 
Os jogos digitais são cada vez mais presentes no dia a dia das pessoas. Seja para lazer, 
educação ou para realizar treinamentos técnicos diversos, o que faz com que a indústria de jogos 
esteja em plena expansão. 
A construção de jogos é uma tarefa bastante complexa e que envolve geralmente uma grande 
equipe de pessoas. Há várias fases e atividades que devem ser realizadas para concluir um 
projeto de jogos com sucesso. O processo começa pela idealização do tipo de jogo que se 
pretende criar: tema, objetivos, regras, personagens, cenários etc. Essas ideias são discutidas e 
elaboradas para que tenhamos uma organização do jogo. Durante o desenvolvimento do jogo, 
há várias questões técnicas importantes para que o jogo possa ser efetivamente jogado: é 
necessário lidar com a aparência do jogo, com o modo como os objetos do jogo interagem, e 
com a forma como eles devem se comportar durante colisões. Por fim, é fundamental entender 
as questões relacionadas aos processos e atividades que ocorrem durante o projeto de um jogo. 
Todos esses temas foram abordados nas semanas anteriores e serão retomados neste 
documento de revisão. 
 
Semana 1: Conceitos de jogo e regras 
Design de games: uma abordagem prática (Ler capítulo 1, p. 3-16) | Paul Schuytema 
 
O que é um jogo? 
Vamos começar falando sobre o que é um jogo. Um jogo pode ser visto como um universo 
particular que tem um cenário, personagens, objetos e suas próprias regras. Essas regras 
incluem os objetivos do jogo. O jogador deve então conhecer as regras, personagens e objetos 
para atuar no jogo com o objetivo de vencer os desafios propostos. A interação do jogador ocorre 
através de dispositivos de entrada e saída, entre os mais comuns estão, respectivamente, o 
joystick e a tela. Portanto, o jogo é um processo que leva a um resultado. 
Esse processo inclui não só o início e o resultado final do jogo, mas também o contexto do jogo, 
a diversão e a emoção do jogador, ou seja, tudo o que fazemos do início ao fim de um jogo, e é 
o que chamamos de gameplay. Portanto, o sucesso de um jogo não depende somente de regras 
e cenários bem definidos, mas de uma experiência lúdica que caia no gosto do jogador e que 
torne o jogo divertido. Os quatro ingredientes de uma experiência de diversão são: 
receptividade, expectativas, gostos subjetivos e o “ingrediente X”. Primeiro, o jogador 
precisa estar disposto a experimentar o jogo. Depois, o jogo deve atender ou superar as 
expectativas do jogador. Gosto não se discute, certo? Então o jogo também pode agradar ou 
desagradar alguns jogadores dependendo do estilo do jogo, ou a forma como ocorre a interação 
com o jogador, cenário, personagens, tudo isso pode ter uma influência sobre a relação entre 
jogo e jogador, que pode ou não gostar daquele jogo. Por fim, o chamado “ingrediente X” é a 
química que pode transformar a experiência do jogo em divertida e alegre, ou não. Esse 
ingrediente também tem muito de subjetividade e vai variar de acordo com o jogador. No caso 
positivo, é aquela sensação de euforia ou prazer imenso que o jogo pode causar e que leva o 
jogador a se identificar com o jogo. 
 
Design de games 
Atualmente, o processo de desenvolvimento de um jogo é uma tarefa complexa, feita por uma 
equipe de profissionais responsáveis pelas diversas atividades que vão resultar no produto final: 
o jogo. Existem três etapas principais de desenvolvimento de um jogo: pré-produção, 
produção e pós-produção. 
Na pré-produção ocorre a criação do conceito do jogo. É no processo de criação que surgem 
as discussões, brainstormings e pesquisa sobre jogos concorrentes. Este é o momento de criar 
regras, pensar personagens e cenários e definir um roteiro que seja divertido. Durante a pré-
produção, as atividades de programação incluem o desenvolvimento de scripts para o jogo a ser 
desenvolvido, a implementação de novos recursos para o jogo, que devem ser pesquisados e 
estudados quanto à sua viabilidade antes da fase de produção. 
Ainda durante a pré-produção é que começam a ser elaborados os documentos de design, 
incluindo esboços dos conceitos do jogo e documentos técnicos mais detalhados para a equipe 
de desenvolvimento, contendo, por exemplo, as tecnologias a serem usadas no 
desenvolvimento. Esses documentos servem para nortear o trabalho de toda a equipe, e vão 
sendo atualizados e refinados com o avanço do projeto. Os designers são os responsáveis por 
conduzir a maior parte das atividades durante a pré-produção, incluindo a administração da 
documentação, a pesquisa de jogos concorrentes, a elaboração do roteiro, das regras, do cenário 
e dos conceitos do jogo. 
Durante a produção, o jogo é de fato construído. Enquanto os artistas fazem a criação dos 
personagens, objetos e cenários, os programadores estão criando o código-fonte do jogo. Os 
designers, além de gerenciar as atividades de arte e programação, desenvolvem o roteiro do 
gameplay. São criados protótipos para testar o jogo e as melhorias são então discutidas e 
implementadas. Os documentos de design sao aperfeiçoados para refletir o estado atual o jogo. 
Também é durante a produção que são criadas as estratégias de marketing do jogo. 
A etapa de pós-produção começa quando o jogo é lançado. É aí que começam a ser feitas as 
atualizações do jogo: melhorias, correções, produção de pacotes de expansão, entre outras 
necessidades que visam melhorar e dar suporte ao jogo lançado. 
 
Semana 2: Organização de um jogo digital 
Introdução ao desenvolvimento de games v. 2 (Ler pág. 233-238) | Steve Rabin 
Introdução ao desenvolvimento de games v. 2 (Ler pág. 242-252) | Steve Rabin 
 
Arquitetura do jogo 
A maioria dos jogos desenvolvidos atualmente possui estruturas complexas, que são divididas 
em duas partes: código específico do jogo e código do motor do jogo. O código específico é 
aquele que contém as partes que contém o domínio do jogo: comportamento dos personagens 
e objetos, regras do jogo etc. Já o código do motor do jogo tem a parte que controla as questões 
gerais e comuns a maioria dos jogos: a comunicação com os dispositivos de entrada e saída, 
renderização, detecção de colisão etc. O código do motor é genérico e, portanto, reutilizável em 
vários jogos. 
Entre as possíveis arquiteturas de um jogo, temos as seguintes: 
• Ad-Hoc: construídas de maneira não planejada e sem nenhuma estrutura aparente. São 
mais indicadas quando um jogo é pequeno, sendo difícil de modificar e até mesmo 
entender. 
• Modular: o jogo é planejadamente dividido em módulos, cada um com suas 
especificidades. Os módulos comunicam-se através de interfaces predefinidas, em que 
cada modulo e responsavel por uma parte do jogo. Esse tipo de arquitetura facilita o reúso 
do código, mas podem causar dependências entre os módulos que podem gerar um alto 
acoplamento. 
• Grafos acíclicos dirigidos: é uma estrutura modular na qual as dependências entre 
móulos são gerenciadas pelo grafo. Cada módulo é um nó do grafo e assim suas 
dependências são estruturadas de acordo com o nível de dependência dos módulos, 
evitando ciclos de dependência entre os módulos. Cada módulo só pode interagir com 
outros módulos de níveis inferiores. 
• Camadas: uma variação dos grafos acíclicos dirigidos em que os módulos com nívels 
equivalentes de dependência são agrupados em camadas. Um módulo só pode interagir 
somente com aqueles na camada imediatamente inferior. 
 
Loop principal do jogo 
Os jogos são executados a partir do chamado loop principal, uma estrutura de laço que contém 
as tarefas principais do jogo. É essa estruturaem laço que faz com que o jogo passe a sensação 
de movimento ou animação. Para garantir essa sensação de animação, as tarefas devem se 
executas dentro de um frame. Tarefas mais demoradas devem ser divididas para ocorrer em 
etapas de cada frame, sem prejudicar as demais tarefas. Assim, é necessário que as etapas dos 
jogos atuem de forma sincronizada para que o jogo não tenha atrasos e nem adiantamentos que 
prejudiquem a movimentação dentro do jogo. Há jogos que permitem variar a duração de um 
frame (jogos de PC) e outros cuja duração do frame é fixa (consoles). A seguir, estão descritas 
as principais tarefas que ocorrem durante o loop principal. 
Um jogo precisa reagir aos comandos feitos pelo jogador. Isso é feito a partir da captura dos 
sinais dos dispositivos de entrada do jogo, tais como: joystick, mouse, teclado, câmera etc. 
A simulação é uma tarefa que engloba várias subtarefas dentro da dinâmica de um jogo. Entre 
essas subtarefas estão a movimentação do jogo e a execução de código de comportamento das 
entidades. As tarefas da simulação costumam ser mais dispendiosas devido à necessidade de 
realizar cálculos para atualização de posição e a execução das regras do jogo. 
A colisão é uma tarefa diretamente relacionada com a movimentação ocorrida na simulação. A 
colisão determina mudanças no posicionamento de entidades e costuma ser dividida em duas 
fases: deteção da colisão e resposta de colisão. 
Após executar a simulação e a colisão, são feitas as atualizações dos objetos, que muitas 
vezes precisam ser reposicionados ou ter sua aparência alterada, por exemplo, quando um carro 
colide com o muro, ele deve aparecer amassado. 
É durante a renderização que todas as mudanças ocorridas nas tarefas anteriores serão 
exibidas em tela. Muitas vezes são aplicadas técnicas para renderizar somente aquilo que foi 
alterado, com o objetivo de melhorar o desempenho de renderização do jogo. 
Além dessas tarefas, podem haver outras relacionadas à especifidades do jogo, incluindo 
execução de áudio, recebimento e envio de pacotes de rede, entre outros. 
 
Entidades de jogo 
Uma entidade é qualquer objeto em um jogo com o qual podemos interagir, desde um 
personagem até uma nuvem que se move no cenário. Isso inclui objetos que não têm 
representação física no cenário, como a câmera com a visão do jogador. Geralmente, objetos 
sem ação não são considerados entidades. Por exemplo, uma pedra que simplesmente decora 
um cenário não é uma entidade. No entanto, se essa mesma pedra poder ser movida por alguma 
ação no jogo, ela passa a ser considerada uma entidade. 
As entidades costumam ser armazenadas em listas. Para renderizar as entidades, a lista é 
percorrida de forma linear. No entanto, os jogos usam estruturas de dados distintas para 
armazenar as entidades de acordo com cada necessidade, de forma a agilizar o acesso às 
entidades. É muito comum também o uso de estruturas de árvore para agrupar entidades de 
acordo com alguma hierarquia. 
A atualização das entidades pode seguir estratégias distintas. Pode-se, por exemplo, atualizar 
todas as entidades sequencialmente ou então somente as que estão a uma certa distância do 
personagem do jogador. Para isso, pode-se usar uma fila de prioridade, na qual entidades 
próximas do jogador são atualizadas primeiro. 
 
Semana 3: Renderização e estrutura de cena 
Introdução ao desenvolvimento de games v. 2 (Ler pág. 407-423) | Steve Rabin 
 
Renderização 
A renderização é o momento em que as atualizações feitas durante o loop principal do programa 
são exibidas para o jogador. A renderização de jogos costuma ser concluída antes de ser exibida 
para o jogador a para evitar que a construção do quadro tenha um efeito pertubador. Para isso, 
costuma-se usar duas áreas de memória, conhecidas como frame buffer e back buffer. O frame 
buffer exibe o frame para o jogador, enquanto que o back buffer é usado para construir o frame 
seguinte, que então é trocado de lugar com o frame buffer. Há ainda o depth buffer, uma área 
usada para cenários em 3D para priorizar a renderização dos objetos que estão próximos antes 
dos objetos mais distantes (mais profundos). O quarto tipo de buffer é o stencil buffer, que é 
usado para garantir que somente uma determinada área da cena seja renderizada. 
A forma geométrica mais comum para renderizar objetos é o triângulo, por ser a forma mais 
simples para descrever uma superfície no espaço. Os triângulos podem compartilhar vértices 
com outros triângulos, o que facilita a texturização de superfícies compostas por vários triângulos. 
Outra questão importante é a renderização de objetos no espaço do mundo do jogo. É 
necessário transformar cada vértice do espaço do objeto em espaço do mundo para que a 
posição do objeto possa ser caracterizada. Isso costuma ser feito através de uma matriz que 
descreve esse mapeamento entre objeto e mundo. Além dos objetos, um jogo também precisa 
de uma câmera, que vai delimitar a área da cena visível. Essa área é conhecida como frustum, 
e possui seis planos no espaço: quatro planos são as bordas da câmera e os outros dois planos 
são o plano proximal e o plano distal, paralelos à tela e que indicam, respectivamente, o recorte 
mais próximo e o mais distante da tela. 
Um objeto de renderização representa uma descrição renderizável de uma entidade do jogo. 
Geralmente trata-se de uma estrutura de esqueleto com uma animação simples e uma ou mais 
malhas que compartilham o mesmo esqueleto ou a mesma posição no espaço. Quando temos 
vários objetos iguais em cena, esses objetos são representados por instâncias de 
renderização, que compartilham o objeto de renderização, com as definições de como o objeto 
é renderizado, mas cada uma com sua informação de posição no espaço, estado da animação 
e iluminação. 
A malha é um conjunto de triângulos que representa uma superfície. Uma malha é considerada 
uma unidade de renderização. Um objeto de renderização pode ter múltiplas malhas. Quanto 
mais complexa a forma do objeto, mais malhas serão necessárias para representá-lo e, portanto, 
mais tempo é necessário para renderizar o objeto. 
Cada objeto de renderização possui um esqueleto, que descreve como seus ossos estão 
conectados. Cada instância do objeto tem informações sobre a posição atual dos ossos, o que 
possibilita definir a posição de cada instância em relação ao espaço. 
 
Particionamento do volume de renderização 
Para obter uma renderização eficiente é necessário renderizar somente uma parte das instâncias 
de objetos: preferencialmente aqueles que estão ou que estarão visíveis em cena. O processo 
de não desenhar instâncias é conhecido como culling. Por exemplo, objetos que estão fora da 
area de frustum podem ser ignorados durante a renderizaçao. 
Além de evitar a renderização da instância de objetos, muitas vezes também é necessário 
agrupar essas instâncias em sistemas baseados em gráficos para evitar que seja necessário 
verificar se cada instância precisa ou não ser renderizada. De forma geral, o espaço do jogo é 
dividido em nós, ou nodos, de uma estrutura de gráfico, e as instâncias ficam associadas a esses 
nós. Assim, as instâncias que estão em nós fora de um limite de visibilidade da câmera não 
precisam ser verificadas, o que ajuda a tornar a renderização mais eficiente. Alguns dos gráficos 
mais usado atualmente são os portais, BSP, quadtrees, octrees e PVS. 
No sistema de portais, cada nó é definido pela geometria que o contém. Os nós estão 
associados por algum polígono convexo (e.g. retângulo), que representa um portal. Cada portal 
visível em cena têm suas instâncias renderizadas, mesmo que as geometrias por trás desses 
portais ainda não estejam visíveis em cena. Por exemplo, se a câmera estiver em uma sala, e 
esta sala tiver portas para dois quartos, considerando que as portas são portais, as instâncias de 
objetos na sala e nos quartos serão renderizadas. 
O particionamentode espaço binário (BSP) é uma estrutura de árvore que representa todo o 
espaço do jogo. Cada nó representa uma seção do espaço e cada nó pode ter dois nós filhos. 
Cada nó filho representa uma parte do nó pai. Um nó sem filhos (folha) é aquele que possui 
instâncias de objetos. Assim é possível determinar quais instâncias devem ser renderizadas 
percorrendo a estrutura de árvore binária. 
Quadtrees e octrees são estruturas similares, respectivamente, para representações 
bidimensionais e tridimensionais. As quadtrees são estruturas de árvores em que cada nó ou 
tem quatro filhos ou é um nó folha. De maneira similar também a BSP, os nós filhos dividem o 
espaço do nó pai em quatro partes de mesmo tamanho, subdividindo o espaço de forma 
homogênea. Os nós folha contém instâncias de objetos. Assim, a partir da área em cena, é 
possível localizar quais instâncias devem ser renderizadas a cada instante. A mesma lógica 
também se aplica às octrees, porém dividindo cada espaço em oito partes. 
O conjunto potencialmente visível (PVS) também é baseado em nós, e pode ser representado 
com qualquer uma das estruturas anteriormente vistas. Cada nó no PVS tem uma lista de 
ligações para os outros nós que podem ser visíveis a partir daquele nó. Todos os nós da lista 
serão renderizados. 
 
Semana 4: Interação e comportamento 
Introdução ao desenvolvimento de games v. 2 (Ler pág. 499-514) | Steve Rabin 
 
Inteligência artificial para jogos 
O uso de inteligência artificial (IA) para definir o comportamento de personagens ou oponentes 
em jogos é cada vez mais frequente. Em jogos, o objetivo da IA é criar oponentes divertidos e 
desafiadores. A intenção não é que eles superem os jogadores, mas sim que tragam algum grau 
de dificuldade para os jogadores. A IA não deve ter um comportamento único, previsível, de 
forma que o jogador não possa derrotar o oponente sempre o mesmo jeito. A IA também não 
deve perder de forma vergonhosa para que o jogador não sinta que é fácil demais superar os 
oponentes. 
Outras características esperadas da IA em jogos são a possibilidade de configurar o nível de 
dificuldade da IA e a capacidade de reação em tempo real para jogos com essa característica. 
 
Agentes de jogos 
Um agente de jogo é um personagem não jogador dotado de IA, que pode ser um aliado, um 
inimigo ou mesmo uma entidade neutra. Um agente realiza três etapas, perceber-pensar-agir, 
realizadas em ciclos contínuos. Alguns agentes são dotados da capacidade de aprender ou 
recordar, principalmente em jogos mais recentes. 
Quanto à percepção, um agente deve ter informações sobre o estado do jogo para tomar 
decisões. Como o agente é um ente artificial, ele poderia ter acesso a informações perfeitas 
sobre o estado do jogo, o que traria uma vantagem indevida em relação ao jogador. Assim, é 
necessário limitar as informações que o agente pode perceber. Em geral, usa-se limitaçoes 
humanas para os agentes de forma a equilibrar seu desempenho com o do jogador humano. 
Por exemplo, pode-se limitar a visão do agente aos objetos do jogo que estão dentro de um 
determinado campo de visão. O mesmo pode-se aplicar aos sentidos de audição, comunicação 
e tempo de reação. 
Quanto ao pensamento, é comum codificar regras seguindo estruturas condicionais como if-else 
para determinar como o agente deve “pensar” dependendo das condições apresentadas. Esse 
tipo de estratégia é muitas vezes chamada de conhecimento especializado. Outra forma é o uso 
de algoritmos de busca para encontrar soluções para um determinado problema. Além disso, é 
possível usar técnicas de aprendizado de máquina para resolver problemas para os agentes. 
A ação é o momento em que a inteligência do agente torna-se perceptível para o jogador. É 
preciso planejar e executar as ações do agente para que a IA seja efetiva no jogo. Entre os 
recursos possíveis estão o uso de efeitos sonoros, comuunicação com o jogador, pegar itens etc. 
 
Máquina de estados finitos 
Máquinas de estados finitos são bastante utilizadas em IA para jogos. Entre as vantagens estão 
a facilidade de compreensão e a possibilidade de serem aplicadas a problemas diversos. Entre 
as desvantagens estão a forma ad-hoc de construí-las e dificuldade de mantê-las organizadas 
conforme o código cresce. 
Na máquina de estados finitos, define-se os possíveis estados de um problema ou domínio e 
uma série de valores que determinam qual estado será válido dependendo dos valores 
presentes. Os estados podem representar ações que um agente pode tomar dependendo dos 
valores apresentados. Por exemplo, dependendo do tamanho do inimigo que se aproximar do 
agente, ele pode atacar ou fugir. 
O formato das máquinas de estados finitos facilitam a compreesnão da regras que a definem, 
através do uso de nós e arestas ligando esses nós, em que cada nó representa um estado e as 
arestas direcionadas estão associadas a valores que indicam para qual estado se deve ir. As 
máquinas de estados finitos podem ser representadas por estruturas de comandos condicionais 
e laços. 
 
Semana 5: Detecção de colisão 
Introdução ao desenvolvimento de games v. 2 (Ler pág. 355-370) | Steve Rabin 
 
Em um jogo, a simulação física é toda feita através de recursos de programação. Como os 
objetos são intangíveis, deve-se usar estratégias e técnicas para identificar, por exemplo quando 
dois objetos ocupam o mesmo espaço dentro de um jogo. A verificação desse tipo de situação é 
conhecida como detecção de colisões. Além disso, quando uma colisão é detectada, é preciso 
saber o que fazer com os objetos envolvidos, o que é feito pela resolução de colisão. A 
detecção e a resolução de colisões são responsáveis por fazer com que objetos de um jogo 
tenham um comportamento sólido, adicionando os limites físicos que regem a forma como os 
objetos vão interagir em um jogo. 
Detecção de colisões 
Para determinar se dois objetos colidem, é necessário levar algumas situações em consideração. 
A velocidade na qual os objetos se movem e formas complexas de objetos podem dificultar a 
detecção. Por exemplo, imagine uma bala que se move a uma velocidade muito rápida: é preciso 
garantir que a bala que atravessa um determinado objeto muito fino seja detectada de forma que 
a bala não passe despercebida pelo objeto perfurado. 
Outra questão relacionada à detecção é a verificação de objetos que colidem. A princípio, todos 
os objetos devem ser testados contra todos para verificar a possibilidade de colisão, o que pode 
se tornar computacionalmente caro. Esses fatores levaram ao desenvolvimento de técnicas para 
lidar com detecção de colisões de formas menos custosas. 
O teste de sobreposição é a técnica mais usada para detecção. A cada passo da simulação, 
esse teste verifica os pares de objetos existentes para identificar aqueles que se sobrepõe, ou 
seja, ocupam o mesmo espaço. Ao detectar uma colisão, observa-se o momento em que a 
colisão ocorreu e o vetor normal de colisão. É necessário mover a simulação para trás para 
identificar o momento exato da colisão. 
No exemplo da bala que atravessa um objeto fino, para que o teste de sobreposição funcione 
para todos os casos, é preciso que o objeto mais rápido em um jogo tenha velocidade menor que 
o tempo de atravessar o objeto mais fino em cena, o que pode trazer limitações de tempo 
indesejáveis para o jogo. 
O teste de interseção prevê colisões antes que elas de fato ocorram. Podemos dizer que o teste 
de sobreposição é reativo, enquanto o teste de interseção é preventivo. O teste de interseção 
testa a geometria dos objetos que estão na direção de viagem de um dado objeto. Esse teste faz 
com que as geometrias verificadas sejam extrudadas, ou seja, alongadas na direção da viagem. 
Essas geometrias são então testadas quanto à possibilidade de colisão. Essa técnica funciona 
muito bem para jogos que não fazem uso de rede. Já jogos em rede podem resultar em colisões 
não detectadas devido aproblemas de latência. 
 
Complexidade de detecção 
Para lidar com a complexidade dos testes de detecção, principalmente quando há geometrias 
complexas envolvidas, costuma-se fazer uso de geometrias simplificadas envolvendo os objetos 
complexos. Uma forma de lidar com a detecção de colisões é a soma de Minkowski, que 
sobrepõe os volumes de dois objetos sendo testados para verificar se há possibilidade de eles 
colidirem. 
Outra técnica usada são os volumes delimitadores, que podem ser uma esfera ou caixa que 
envolvem um objeto de geometria complexa para simplificar a detecção. Existem dois tipos de 
volumes delimitadores mais comuns: a caixa delimitadora alinhada ao eixo, que acompanha 
o eixo das coordenadas da cena do jogo, e a caixa delimitadora orientada, que é mais 
compacta ao redor do objeto e acompanha o eixo do objeto. 
 
Resolução de colisão 
A resolução de colisão é realizada em três etapas. Durante o prólogo, verifica-se se a colisão 
deve ou não ser ignorada. Caso não seja ignorada, podem ser diparados eventos de colisão, 
como efeitos sonoros e notificações aos objetos envolvidos. Na etapa de colisão, os objetos 
envolvidos são colocados no ponto de impacto e suas velocidades são recalculadas. No epílogo, 
ocorre a inserção de efeitos pós-colisão, tais como a destruição de objetos ou a execução de 
efeitos sonoros. 
 
 
Semana 6: Projeto e documentação de um jogo digital 
Desenvolvimento de games (Ler páginas 339 a 352) | Jeannie Novak 
 
Para além do que vimos na Semana 1, existem outras fases de desenvolvimento de um jogo que 
devem ser consideradas como parte fundamental do processo. Essas fases são: conceito, pré‐
produção, protótipo, produção, alfa, beta, ouro e pós‐produção. 
Na fase de conceito são definidas as ideias iniciais do jogo, e geralmente envolvem uma 
pequena equipe. O resultado é um documento de conceito registrando as ideias iniciais sobre o 
jogo, público-alvo, avaliação de recursos da empresa, que servirão para nortear as fases 
seguintes. 
A fase seguinte, de pré-produção, envolve o planejamento do desenvolvimento, o que inclui a 
definição sobre a arte do jogo (guia de estilo de arte) e um plano de produção. Cria-se também 
o documento de design do jogo. 
A fase de protótipo é que dá início às avaliações das ideias do jogo. No início, é comum fazer 
uso de recursos simples, como a criação de protótipos em papel e cartões com o objetivo de 
validar ideias, atratividade e diversão. A seguir são feitos protótipos digitais, que também são 
avaliados antes de decidir pela continuidade do jogo. 
A fase de produção é a mais extensa, responsável por entregar o jogo proposto. É nesta fase 
que se concentra o desenvolvimento do código-fonte, da arte, roteiro e gameplay do jogo. As 
equipes trabalham intensamente para cumprir os prazos previstos. 
Após a produção, começa a fase alfa. Neste ponto, o jogo já pode ser jogado do início ao fim e 
são feitos os acabamentos no design e no código do jogo. Os testes são feitos durante esta fase. 
Além disso, esta fase é a última oportunidade de fazer mudanças no conteúdo a ser entregue. 
A fase beta é focada na resolução de problemas identificados nas fases anteriores. O objetivo 
aqui é estabilizar o projeto, testar a jogabilidade do jogo, avaliar o desempenho e testar a 
compatibilidade com as plataformas nas quais o jogo irá funcionar. No fim desta fase ocorre o 
congelamento do código do jogo para possibilitar o lançamento do jogo. 
A fase ouro é aquela na qual o jogo é considerado pronto e será enviado para fabricação, em 
mídia física ou em formato virtual. 
A fase final, de pós-produção, é a fase de manutenção do jogo, na qual são feitas melhorias, 
correções de erros e o desenvolvimento de conteúdos adicionais para o jogo 
 
Concluindo 
Espero que esta revisão seja útil para a complementação dos seus estudos e em caso de 
qualquer dúvida sobre o texto, contate a equipe de facilitação. Bons estudos!

Continue navegando