Graduação Tecnológica em Jogos Digitais
        Universidade FUMEC




            Jerry Medeiros
O que é?

• Conjunto de ferramentas que
  dão suporte à criação de jogos.

• É um software com diversos
  módulos que permitem o
  desenvolvimento de jogos de
  diversos gêneros e para muitas
  plataformas.
Funções Principais das Games Engines

•   Renderização 2D e 3D;
•   Detecção de Colisões ;
•   Scripts ;
•   Audio e Video;
•   Animação;
•   Shaders e Iluminação;
•   Redes;
•   Física ;
•   Inteligência Artificial;
•   Edição de Nível.
Grafo de Cena :


Define dentro da engine de
renderização onde serão
posicionados os objetos
tanto fisicamente quanto
logicamente.

Árvore: Hierárquico
Grafo: Não Hierárquico
Organização de Um Grafo de cena:


• Raiz;
• Nós;
• Relação de parentesco.
Organização de Um Grafo de Cena:


• Três tipos básicos de nós :
   • Forma
   • Propriedade
   • Grupo

• Todos possuem atributos;
• Alguns controlam outros nós.
Grafo de Cena : Forma/Geometria
Define uma entidade geométrica 3D :
• Ponto
• Vetor
• Polígono
• Primitiva
   • Esfera
   • Cone
   • Cilindro
   • Caixa
   • Curvas e superfícies (NURBS)
Grafo de Cena : Propriedades
•   Cor (material e fonte de luz);
•   Material (componentes de reflexão);
•   Brilho ;
•   Transparência;
•   Texturas;
•   Transformações;
    • Escala;
    • Rotação;
    • Translação.
Pipeline Gráfico


    O pipeline gráfico é um conjunto de etapas
    realizadas pelo hardware para renderizar uma
    imagem, a partir dos parâmetros do grafo da
    cena.


                            Eliminação dos
Malha de    Transformação   objetos fora do                    Imagem
                                              Rasterização
Polígonos     dos Dados        volume de                     Renderizada
                                 visão
Culling



Culling é o processo de eliminação de dados
que não contribuem para a imagem final.
Backface Culling


• No nível do polígono;
• Implementado no hardware;
• Diminui a complexidade do grafo pela
  metade.
Frustrum Culling

• Elimina objetos inteiros;
• Comparação entre dimensões do objeto e do
  frustrum.
Frustrum Culling


• Objetos totalmente incluídos no frustrum
  entram no pipeline gráfico;
• Objetos parcialmente incluídos no frustrum
  podem sair do pipeline, entrar completamente
  ou entrar parcialmente;
• Objetos totalmente exluídos do frustrum são
  eliminados do pipeline.
Occlusion Culling



Objetos encobertos por outros são eliminados do
pipeline.
LOD - Level Of Detail


A técnica de LOD é utilizada como uma
otimização para a renderização. Em projeções
em perspectiva, quanto maior é a distância de
um objeto em relação ao observador, menor é
o seu Tamanho.
LOD – Level Of Detail


Cada filho do nó representa o mesmo objeto em
resoluções diferentes.
Componentes

Engine de Renderização:

A engine de renderização geralmente é
construída sobre openGL ou DirectX e gera
imagens em tempo real a partir dos assets
controladas pelo grafo da cena, interagindo
diretamente com a GPU.
Componentes
Colisões

• A Detecção de colisões é geralmente calculada
  com base na interseção de dois sólidos;

•   Planos;
•   Esferas;
•   Tubos ;
•   Poligonos;

• São gerados eventos em resposta às colisões.
Componentes

Scripts

• As Engines de script geralmente usam linguagens
  interpretadas (Python, Javascript...);

• As linguagens interpretadas permitem que o
  código escrito pelo desenvolvedor do jogo não
  dependa do código fonte da engine.
Componentes


Animações

• Engines de Animação gerenciam as
  animações dos objetos no grafo da cena.

• Podem ser variações de rotação, posição e
  escala ou animações mais complexas tais
  quais as que utilizam esqueletos.
Componentes

Shading

•A Engine de Sombreamento e Iluminação calcula
as sombras e os shaders, que são aplicados pela
engine de renderização nos objetos do grafo da
cena.
Componentes

Rede

• A Engine de Redes gerencia a comunicação
  entre computadores, seja ela Peer to Peer,
  Cliente-Servidor ou Distribuída.
Componentes

Física

• A Engine de física é responsável por tratar o
  comportamento de objetos com base em
  colisões.

• Simula e prever a dinâmica de modelos físicos,
  corpos rígidos, flexíves e flúidos.
Como escolher uma engine

Os níveis de uma game engine influenciam
diretamente no custo:

  •Engines de MMO;
  •Engines Top de Linha;
  •Engines "Na média”;
  •Engines Casuais;
  •Engines OpenSource.
Como escolher uma engine


•Crie o Game Design Document;
•Esboçe um Documento Técnico;
•Crie o Projeto de Desenvolvimento do Jogo;

    Aí sim, escolha a engine!!!!
Questões a se considerar


• Custo ;
• Relevância para a plataforma, gênero,
  design;
• Suporte ;
• Funcionalidades;
• Ferramentas;
• Flexibilidade.
Como escolher uma engine
• Plataformas
      - MMO, PC standalone, console,
dispositivos móveis, web

• Gênero
      - Procure por jogos similares e pesquise em
qual engines foram desenvolvidos

• Design
      - O que é mais importante? Gráficos,
interações, física ?
Como escolher uma engine


Suporte

  •Documentação;
  •Suporte ao trabalho em equipe;
  •Exemplos e tutoriais.
Como escolher uma engine

Funcionalidades

  •   Systema Multithread;
  •   Pipeline de renderização;
  •   Sistema de Animação;
  •   Detecção de Colisões;
  •   Sistema de Streaming de áudio e vídeo;
  •   Suporte a Rede.
Engines MMO

•BigWorld Technology Suite;
•Simutronics' HeroEngine;
•Sun's Project Darkstar.
Engines Top de Linha

•   Epic's Unreal Engine 3;
•   Crytek's CryEngine 3;
•   Digital Extremes' Evolution Engine;
•   id's idTech 4/5/6;
•   Valve's Source.
Engines Casuais e Web


•Unity Technologies Unity;
•Garage Games's Torque;
•PushButton Engine (Para Flash);
•jMonkey Engine (Java).
Engines “Na média”


•Emergent's GameBryo
•Terminal Reality's Infernal Engine
•Blitz Games' BlitzTech
•Trinigy's Vision Engine
•Vicious Cycle's Vicious Engine
Engines OpenSource

•Irrlicht;
•Ogre3D;
•Panda3D.
Como escolher uma engine

• Existem MUITAS engines

• Planeje o que fazer antes de decidir em que
  engine fazer

• Cada engine tem características únicas:
   • Analise o jogo;
   • fale com outros usuários;
   • baixe exemplos.
As engines são um meio, e
        não o fim.

Introdução às Game Engines

  • 1.
    Graduação Tecnológica emJogos Digitais Universidade FUMEC Jerry Medeiros
  • 2.
    O que é? •Conjunto de ferramentas que dão suporte à criação de jogos. • É um software com diversos módulos que permitem o desenvolvimento de jogos de diversos gêneros e para muitas plataformas.
  • 3.
    Funções Principais dasGames Engines • Renderização 2D e 3D; • Detecção de Colisões ; • Scripts ; • Audio e Video; • Animação; • Shaders e Iluminação; • Redes; • Física ; • Inteligência Artificial; • Edição de Nível.
  • 4.
    Grafo de Cena: Define dentro da engine de renderização onde serão posicionados os objetos tanto fisicamente quanto logicamente. Árvore: Hierárquico Grafo: Não Hierárquico
  • 5.
    Organização de UmGrafo de cena: • Raiz; • Nós; • Relação de parentesco.
  • 6.
    Organização de UmGrafo de Cena: • Três tipos básicos de nós : • Forma • Propriedade • Grupo • Todos possuem atributos; • Alguns controlam outros nós.
  • 7.
    Grafo de Cena: Forma/Geometria Define uma entidade geométrica 3D : • Ponto • Vetor • Polígono • Primitiva • Esfera • Cone • Cilindro • Caixa • Curvas e superfícies (NURBS)
  • 8.
    Grafo de Cena: Propriedades • Cor (material e fonte de luz); • Material (componentes de reflexão); • Brilho ; • Transparência; • Texturas; • Transformações; • Escala; • Rotação; • Translação.
  • 9.
    Pipeline Gráfico O pipeline gráfico é um conjunto de etapas realizadas pelo hardware para renderizar uma imagem, a partir dos parâmetros do grafo da cena. Eliminação dos Malha de Transformação objetos fora do Imagem Rasterização Polígonos dos Dados volume de Renderizada visão
  • 10.
    Culling Culling é oprocesso de eliminação de dados que não contribuem para a imagem final.
  • 11.
    Backface Culling • Nonível do polígono; • Implementado no hardware; • Diminui a complexidade do grafo pela metade.
  • 12.
    Frustrum Culling • Eliminaobjetos inteiros; • Comparação entre dimensões do objeto e do frustrum.
  • 13.
    Frustrum Culling • Objetostotalmente incluídos no frustrum entram no pipeline gráfico; • Objetos parcialmente incluídos no frustrum podem sair do pipeline, entrar completamente ou entrar parcialmente; • Objetos totalmente exluídos do frustrum são eliminados do pipeline.
  • 14.
    Occlusion Culling Objetos encobertospor outros são eliminados do pipeline.
  • 15.
    LOD - LevelOf Detail A técnica de LOD é utilizada como uma otimização para a renderização. Em projeções em perspectiva, quanto maior é a distância de um objeto em relação ao observador, menor é o seu Tamanho.
  • 16.
    LOD – LevelOf Detail Cada filho do nó representa o mesmo objeto em resoluções diferentes.
  • 17.
    Componentes Engine de Renderização: Aengine de renderização geralmente é construída sobre openGL ou DirectX e gera imagens em tempo real a partir dos assets controladas pelo grafo da cena, interagindo diretamente com a GPU.
  • 18.
    Componentes Colisões • A Detecçãode colisões é geralmente calculada com base na interseção de dois sólidos; • Planos; • Esferas; • Tubos ; • Poligonos; • São gerados eventos em resposta às colisões.
  • 19.
    Componentes Scripts • As Enginesde script geralmente usam linguagens interpretadas (Python, Javascript...); • As linguagens interpretadas permitem que o código escrito pelo desenvolvedor do jogo não dependa do código fonte da engine.
  • 20.
    Componentes Animações • Engines deAnimação gerenciam as animações dos objetos no grafo da cena. • Podem ser variações de rotação, posição e escala ou animações mais complexas tais quais as que utilizam esqueletos.
  • 21.
    Componentes Shading •A Engine deSombreamento e Iluminação calcula as sombras e os shaders, que são aplicados pela engine de renderização nos objetos do grafo da cena.
  • 22.
    Componentes Rede • A Enginede Redes gerencia a comunicação entre computadores, seja ela Peer to Peer, Cliente-Servidor ou Distribuída.
  • 23.
    Componentes Física • A Enginede física é responsável por tratar o comportamento de objetos com base em colisões. • Simula e prever a dinâmica de modelos físicos, corpos rígidos, flexíves e flúidos.
  • 24.
    Como escolher umaengine Os níveis de uma game engine influenciam diretamente no custo: •Engines de MMO; •Engines Top de Linha; •Engines "Na média”; •Engines Casuais; •Engines OpenSource.
  • 25.
    Como escolher umaengine •Crie o Game Design Document; •Esboçe um Documento Técnico; •Crie o Projeto de Desenvolvimento do Jogo; Aí sim, escolha a engine!!!!
  • 26.
    Questões a seconsiderar • Custo ; • Relevância para a plataforma, gênero, design; • Suporte ; • Funcionalidades; • Ferramentas; • Flexibilidade.
  • 27.
    Como escolher umaengine • Plataformas - MMO, PC standalone, console, dispositivos móveis, web • Gênero - Procure por jogos similares e pesquise em qual engines foram desenvolvidos • Design - O que é mais importante? Gráficos, interações, física ?
  • 28.
    Como escolher umaengine Suporte •Documentação; •Suporte ao trabalho em equipe; •Exemplos e tutoriais.
  • 29.
    Como escolher umaengine Funcionalidades • Systema Multithread; • Pipeline de renderização; • Sistema de Animação; • Detecção de Colisões; • Sistema de Streaming de áudio e vídeo; • Suporte a Rede.
  • 30.
    Engines MMO •BigWorld TechnologySuite; •Simutronics' HeroEngine; •Sun's Project Darkstar.
  • 31.
    Engines Top deLinha • Epic's Unreal Engine 3; • Crytek's CryEngine 3; • Digital Extremes' Evolution Engine; • id's idTech 4/5/6; • Valve's Source.
  • 32.
    Engines Casuais eWeb •Unity Technologies Unity; •Garage Games's Torque; •PushButton Engine (Para Flash); •jMonkey Engine (Java).
  • 33.
    Engines “Na média” •Emergent'sGameBryo •Terminal Reality's Infernal Engine •Blitz Games' BlitzTech •Trinigy's Vision Engine •Vicious Cycle's Vicious Engine
  • 34.
  • 35.
    Como escolher umaengine • Existem MUITAS engines • Planeje o que fazer antes de decidir em que engine fazer • Cada engine tem características únicas: • Analise o jogo; • fale com outros usuários; • baixe exemplos.
  • 36.
    As engines sãoum meio, e não o fim.