• Nenhum resultado encontrado

4 TECNOLOGIAS POR TRÁS DO DESENVOLVIMENTO DE JOGOS

4.4 VISÃO GERAL DO FUNCIONAMENTO DE UM GAME ENGINE

4.4.2 Motor Gráfico

Para Gregory (2015), construir o motor gráfico de uma game engine é um dos maiores e mais complexos desafios durante o desenvolvimento. Os “renderizado- res” gráficos atuais não possuem um padrão para serem criados, contudo a maioria segue as ideias do designer de hardware de gráficos 3D. A arquitetura em camadas é uma das formas empregadas na produção do motor gráfico. Sendo assim, algumas camadas que compõem o motor gráfico serão abordadas nas próximas seções desse subcapítulo.

4.4.2.1 Low-Leveling Renderer

O processamento ”bruto” do motor gráfico é realizado no low-level renderer, nesse nível a prioridade do projeto é realizar o máximo de operações geométricas possíveis de maneira eficiente. Os dispositivos de interface gráficas, como DirectX e

OpenGL são os meios de comunicação da unidade central de processamento (CPU)

com a unidade gráfica de processamento (GPU) e é através dessas APIs que as ren- derizações de pixels são realizadas (GREGORY, 2015).

Os cálculos de iluminação de ambientes são realizados nesse nível do motor, assim como partículas, partes de terrenos e malhas14, com o intuito de serem “rende- rizados” da maneira mais eficiente possível. O low-level renderer cria a geometria pri- mitiva do sistema, como curvas, linhas e polígonos. De acordo com Gregory (2015), essa camada é responsável por gerenciar os recursos de hardware através de um complexo sistema de simulação de materiais e iluminação dinâmica. As geometrias primitivas, nesse sistema, estão relacionadas com um tipo de material que determi- nará características do objeto e são afetadas por iluminação dinâmica. Além disso, o sistema utiliza o tipo de material como base para determinar qual textura será usada em uma primitiva e quais dispositivos necessitam ser utilizados para realizar a tarefa (GREGORY, 2015).

4.4.2.2 Otimizações e Culling

Como mencionado anteriormente, o low-level rendering é responsável por cons- truir toda a geometria utilizada pelo motor gráfico, mesmo quando certas primitivas não aparecem na câmera, elas estão sendo processadas. A fim de diminuir a sobre- carga de processamento, outro componente deve ser usado para limitar o número

14 É uma colecção de arestas, vértices e polígonos interligados de modo que cada

aresta é apenas partilhada no máximo por dois polígonos. Disponível em < http://pa- ginas.fe.up.pt/~aas/pub/Aulas/CG/Slides/10_CurvSuperf.pdf>. Acessado em 30.mar 2017

primitivas na tela, Gregory (2015) destaca que jogos de pequeno porte e com poucos detalhes geralmente utilizam a técnica de frustum cull, que consiste em eliminar obje- tos da tela que não estão visíveis para o jogador.

Em jogos maiores, as estruturas de dados subdivisões espaciais (spatial subdivi-

sions) são utilizados “para melhorar a eficiência de renderização, permitindo que o

conjunto de objetos potencialmente visíveis (PVS) seja criado rapidamente” (GRE- GORY, 2015, p.42, tradução nossa).

4.4.2.3 Efeitos Visuais

O capítulo 2 abordou a evolução dos jogos ao longo das décadas e entre as mais significativas evoluções foram os efeitos gráficos. Nos jogos atuais é possível encontrar efeitos visuais como explosões, umidade e fumaça, efeitos de iluminação tais como raios crepusculares e sombras dinâmicas. Os efeitos de suavização de bor- das, como o full-screen anti-aliasing (FSAA) também são realizados pelos algoritmos de efeitos especiais do motor gráfico.

Esse motor é responsável por modelar a superfície do terreno do jogo, por isso técnicas especiais devem ser utilizadas para que o terreno seja “renderizado” de maneira dinâmica, com o intuito de permitir os jogadores enxergarem longas distân- cias, mas de maneira que não sobrecarregue o hardware. O motor gráfico deve prover funções que permitam aos artistas colorirem os elementos do terreno como grama, pedras e terra (GREGORY, 2015).

Além dos efeitos citados, os ambientes compostos de água como oceanos, cachoeiras e lagos são comuns nos jogos. Devido a diversidade dos ambientes, polu- ídos, limpos ou naturais, cada tipo de água necessita de uma tecnologia diferente para ser “renderizada”. Ademais, os sistemas de água interagem com o motor de física, pois algumas características devem ser incorporadas ao fluido como flutuação, em- puxo, dinâmica de fluidos, mergulho e mecânicas de nado (GREGORY, 2015). Os sistemas de água mais realistas também realizam tarefas avançadas em efeitos de partículas, para criar a sensação de pingos e vapor de água em superfícies de paredes e vidros.

Figura 4.5 - Sistemas de líquidos de Crysis 3 (Glaser, 2013)

4.4.2.4 World Editor

O editor de mundo (World Editor) é uma ferramenta disponibilizada pelos

game engines comerciais que tem como meta fazer com que os conteúdos (assets)

criados fora do motor sejam implementados dentro do ambiente do jogo. Por exemplo, um objeto que representa um avião criado no software Maya deve ser incorporado ao jogo. Através do editor de mundo o objeto é importado para dentro do jogo (GREGORY, 2015).

Gregory (2015) afirma que os desenvolvedores de Doom e Quake utiliza- ram a ferramenta Radiant para montar o ambiente dos jogos.

Figura 4.6 - Screenshot da Ferramenta Radiant (Gregory, 2015)

Os editores de mundo permitem que o comportamento dos objetos seja especificado através da configuração de parâmetros ou até mesmo pela execução de

scripts - tópico abordado na seção 4.7. Os editores criam “pedaços” do jogo e aos

poucos cada área do mundo é construída, em um world editor o desenvolvedor pode renomear uma área do jogo, destruí-la ou combinar com outras áreas (GREGORY, 2015).

Segundo Gregory (2015), há game engines que permitem que elementos do jogo como águas, terrenos e outros elementos estáticos sejam criados dentro do próprio motor do jogo, contudo há motores que necessitam que alguns elementos se- jam criados em ferramentas stand-alone15 para posteriormente serem importados para o motor do jogo.

15 Softwares autossuficientes, ou seja, independem de outros softwares ou recursos como a internet. Um software stand-alone pode se referir à aplicações portáteis que além de serem independentes de outras aplicações dispensam a necessidade de ins- talação. Disponível em <https://www.thebalance.com/types-of-stand-alone-software- 1293731>. Acessado em 30.mar 2017

A visualização do ambiente do game também é outra característica pre- sente em um editor de mundo, geralmente os editores 3D dispõem de ferramentas que possibilitam aos desenvolvedores percorrerem o ambiente em diferentes pers- pectivas. Aliada a visualização as funções de navegação também estão presentes e possibilitam que câmera seja focada em um objeto específico e rotacionada em torno do objeto (GREGORY, 2015).

Embora os editores consigam lidar com todos os objetos que compõem o mundo de um jogo, objetos específicos necessitam de tratamentos especiais, por exemplo, luz, emissores de partículas, fontes sonoras e regiões (GREGORY, 2015). De acordo com Gregory (2015), objetos como a luz, que não possuem malhas, são representados por símbolos que representam uma fonte de luz e os efeitos da fonte luminosa são aplicados ao objeto a fim de que os desenvolvedores possam visualizar se os efeitos satisfazem as expectativas da equipe.

Documentos relacionados