1 arquitetura de motores de jogos carlos andré c. pessoa eduardo sampaio rocha geber ramalho
TRANSCRIPT
![Page 1: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/1.jpg)
1
Arquitetura de Motores de Jogos
Carlos André C. Pessoa
Eduardo Sampaio Rocha
Geber Ramalho
![Page 2: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/2.jpg)
2
Implementação
Sistema Operacional
Bibliotecas
Motor
Jogo
Hardware (+ placas)
DirectX, OpenGL,...
Windows, Linux,...
Unreal, Lithtech,...
Ferramentas
Editores de imagens 2DModeladores 3DProcessadores de sons e músicasEditores de cenários
Visual C++,...LinguagemCompilador
![Page 3: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/3.jpg)
3
Roteiro
Bibliotecas para jogos (DirectX)
Frameworks para jogos
Componentes de um framework
![Page 4: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/4.jpg)
4
Bibliotecas OpenGL e OpenAL
Maior interoperabilidade e flexibilidade Futuro incerto Inclui APIs gráficas e sonoras
DirectX Ambiente Windows A mais utilizada (90 % dos jogos, Tocadores de
música e video, aplicações multiusuário em rede Inclui várias APIs (gráficas, de vídeo, sonoras, de
rede, de configuração e de tratamento de entrada)
![Page 5: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/5.jpg)
5
DirectX
O que é extremamente necessário saber para utilizar as APIs DirectX?
Criar aplicações Win32 Trabalhar com ponteiros (C / C++) Manipular objetos COM Tratar os códigos de retorno dos métodos
![Page 6: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/6.jpg)
6
Component Object Model (COM) Quebrar projetos de software monolíticos em
componentes modularizados, reutilizáveis dinamicamente em tempo de execução (DLLs)
Arquitetura baseada em interfaces, cada uma possuindo um identificador único
Com COM é possível modificar um software sem que seja preciso recompilá-lo novamente
Cada nova versão da implementação de um componente deve ser compatível com a anterior
IDirectDraw - IID_IDirectDraw - DirectX 1 IDirectDraw2 - IID_IDirectDraw2 - DirectX 2 IDirectDraw4 - IID_IDirectDraw4 - DirectX 6, ....
![Page 7: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/7.jpg)
7
DirectX Objeto COM
classe C++ ou um conjunto de classes C++ que implementam interfaces (conjunto de funções)
implementado numa DLL (Dynamic Link Library) Escrever um objeto COM é difícil, mas utilizá-lo é fácil
Interface COM é uma classes abstrata C++, que descreve um
conjunto de assinaturas e semânticas, sem implementação
utilizam vtable (tabela de endereçamento dos métodos que implementam a interface) <=> funções virtuais C++
![Page 8: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/8.jpg)
8
DirectX Recursos necessários para criar uma aplicação
![Page 9: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/9.jpg)
9
DirectX Todo objeto e interface COM possui um GUI
(Globally Unique Identifier) que o torna único
Bibliotecas de importação (Libs) que contém os pacotes COM DirectX devem ser incluídas na compilação de programas
Na essência, toda chamada para DirectX utiliza o seguinte formato
ponteiro_interface -> nome_método ( lista_parâmetros );
Ex: DirectDrawCreate ( NULL , &lpdd , NULL); lpdd -> SetVideoMode ( 640 , 480 , 256 );
![Page 10: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/10.jpg)
10
DirectX
HAL x HEL Na criação de um objeto DirectX, uma consulta
é realizada no hardware para verificar quais operações ele é capaz de executar (HAL) e quais devem emuladas por software (HEL)
Ambiente com melhor desempenho que o DOS, devido a utilizar todas as características do hardware, e infinitamente melhor que a GDI (graphics Device Interface)
![Page 11: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/11.jpg)
11
DirectX Códigos de retorno dos métodos
Código de retorno é o valor retornado quando o método finaliza, indicando sucesso ou falha
Todos são do tipo HRESULT (número de 32 bits) - indica se a chamada ao método obteve sucesso ou falha e o porque
HRESULT é passado como argumento para as macros SUCCEEDED () e FAILED ()
A utilização de macros apresenta um código mais limpo Códigos de falha devem ser utilizados para tratamentos
específicos (ex: DDERR_OUTOFVIDEOMEMORY ) Um esforço significativo deve ser feito na estruturação
do código para realizar o tratamento de erros
![Page 12: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/12.jpg)
12
DirectX 9.0c API (pacotes)
Direct3D
DirectMusic
DirectSound
DirectPlay
DirectInput
DirectShow
![Page 13: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/13.jpg)
13
DirectDraw (DirectX7) Características
Suporte a gráficos 2D, vídeos e aceleração por hardware
Ainda muito Usada para jogos 2D, tratamento de imagens e texturas
Manipula diretamente a memória de vídeo, usando surfaces, processadas por blitting
Realiza flipping, evitando que o sincronismo do monitor atrapalhe o processamento dos frames
Suporta os modos de janela e tela cheia em várias resoluções de acordo com os recursos do hardware
Compatível com GDI
![Page 14: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/14.jpg)
14
Direct3D
Características Biblioteca de baixo nível ideal para desenvolver
jogos 3D e outras aplicações de alta performance
Permite comunicação de baixo nível com as placas aceleradoras de forma independente do hardware
Utiliza Z-buffers e W-buffers Suporta iluminação, materialização,
texturização e mip-mapping Suporta hierarquias de objetos e animações
![Page 15: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/15.jpg)
15
2D x 3D
2D no 3D desvantagens
Não é simples contrariamente ao que diz o site Funções específicas na API ID3DXSprite mas
pouca documentação e nenhum exemplo vantagens
utiliza capacidade de renderização das placas
idéia básica: surface é substituído por texture
![Page 16: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/16.jpg)
16
DirectMusic
Características Trabalha com dados musicais baseados em
mensagens, que são convertidos para representações digitais (wave) utilizando hardware ou sintetizador de software
Utiliza DirectSound como base para acesso ao dispositivo de som
Permite também a captura e execução de sons MIDI
Suporta composição de músicas em tempo de execução
![Page 17: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/17.jpg)
17
DirectSound
Características Permite manipular diretamente o dispositivo de
som Suporta mixagem com baixa latência,
aceleração por hardware, execução e captura de sons wave
Utiliza todos os serviços oferecidos pelo hardware, como simulação de sons em um ambiente 3D, incluindo Doppler shift, refração, reflexão, efeitos stereo
![Page 18: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/18.jpg)
18
DirectPlay
Características Permite criar jogos multiusuários, servidores de
jogos, chats, e outras aplicações em rede sem a necessidade de escrever código para tipos de transporte, protocolos ou serviços online
Permite conexão em rede local, na Internet ou via modem
Permite criação e junção de sessões Suporta lobbies (agrupamento de jogadores) Gerencia jogadores e grupos com uma sessão ...
![Page 19: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/19.jpg)
19
DirectInput
Características Permite acesso direto aos dispositivos de
entradas, tais como mouse, teclado e joystick, e outros controladores de jogos, bem como dispositivos force-feedback (entrada/saída)
Provê suporte em baixa latência
![Page 20: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/20.jpg)
20
DirectShow
Características Permite execução e captura de streams
multimídia, tais como: vídeo (MPEG, Quicktime, AVI) e áudio (WAV) de arquivos locais ou da Internet
Captura pode ser baseada em Video for Windows ou Windows Driver Model (WDM)
Composto por um sistema modular de filtros Integrado com o Windows Media Player
![Page 21: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/21.jpg)
21
Game Engine (motor ou framework)
![Page 22: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/22.jpg)
22
Motor Motivação
Um jogo leva de 2 a 5 anos para ser desenvolvido Uma grande parte do desenvolvimento envolve a
“reinvenção da roda”: Gerenciador de sprites Manipulador de som Controle de interface de entrada Renderização, Detecção de colisão, ...
Termina-se levando mais tempo nos detalhes técnicos do que no próprio jogo.
![Page 23: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/23.jpg)
23
Motor Oferece as funcionalidades básicas
necessárias porque Controla as mídias envolvidas Trata e abstrai as características de mais baixo
nível Ajudam a garantir qualidade
Reutilizar genéricas partes (componentes) genéricas do programa de um jogo Para não ter de reprogramar E retirar bugs!
![Page 24: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/24.jpg)
24
Motor
Estruturar melhor o jogo reutilizando alguma arquitetura
É complexo e caro Milhares de linhas de código Gráfico: Unreal (www.unreal.com): US$
500.000,00
![Page 25: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/25.jpg)
25
Framework
Isto corresponde à noção de Framework em engenharia de software
Conjunto de componentes ou API que cobre os requisitos básicos e recorrentes de uma determinada classe de aplicações!
![Page 26: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/26.jpg)
26
Trocando em miúdos...
![Page 27: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/27.jpg)
Antes de mais nada, o laço principal!
![Page 28: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/28.jpg)
28
Componentes Do que seria composto
este framework?
Como fazer a comunicação entre estas diversas partes?
Componentes Interface de Entrada Gerenciador Gráfico Gerenciador de Som Gerenciador de IA Gerenciador de Múltiplos
Jogadores Gerenciador de
Mensagens Gerenciador de Objetos Gerenciador do Mundo Editor de Cenários Gerenciador Principal
![Page 29: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/29.jpg)
29
wGEM – Principais Módulos
Gerenciadorprincipal
EntradaUsuário
Gerenciador de Mensagens
Gerenciador do mundo
Gerenciador deobjetos
Gerenciadorgráfico
Tela
Gerenciadormultiplayer
Gerenciador desom
AmplificadoresEditor de cenários
IA
![Page 30: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/30.jpg)
30
O Forge 16V – Principais Módulos
Gerenciador Principal
Gerenciador Principal
Gerenciador de Entrada
Gerenciador de Entrada
Gerenciador Gráfico
Gerenciador Gráfico
Gerenciador de Som
Gerenciador de Som
Gerenciador do Mundo
Gerenciador de
Multiusuários
Gerenciador de IA
Gerenciador de
Modelagem Física
Editor de Cenários
Gerenciador de Log
Gerenciador de Log
Legenda (6 meses)
Em estado funcional
Implementação parcial
Não implementado
![Page 31: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/31.jpg)
31
Interface de Entrada Comunicação homem->máquina
Lida com leitura de teclado, mouse, joysticks, etc. Thread de execução pode ser independente do
principal Deve disponibilizar uma interface para consulta do
estado atual dos dispositivos Envio do evento ocorrido em um dispositivo para
outro componente (Event Listener).
![Page 32: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/32.jpg)
32
Diagrama
EntradaMouse
Gerenciadorgráfico
Tela
Editor de cenários
Console
Gerenciadorprincipal
![Page 33: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/33.jpg)
33
Gerenciador Gráfico
Comunicação máquina->homem Incorpora toda a complexidade envolvida no
processo de transformação da descrição de um cena em dados para a memória de vídeo.
Em geral trabalha com imagens em formatos proprietários e encriptados.
Quando 2D: Basicamente gerencia o estado dos pixels da tela
a partir da descrição dos diversos objetos que formam a cena a ser renderizada.
![Page 34: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/34.jpg)
34
Gerenciador Gráfico
Quando 3D Primeiramente lida com transformações
geométricas de polígonos, mapeamento de texturas, iluminação, etc.
Realiza uma Projeção do 3D para 2D. Depois disso o processo segue como no caso
2D.
![Page 35: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/35.jpg)
35
Gerenciador Gráfico
Além das cenas do jogo, ele deve prover uma interface com o usuário de alto nível (GUI)
Menus Botões Barra de Progresso Textos Combo Listas
![Page 36: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/36.jpg)
36
Gerenciador de Som
Responsável pelo processamento sonoro ao longo do jogo.
Execução de sons a partir de eventos de maneira sincronizada
Conversão e processamento de amostras de som
Efeitos Som 3D
Em geral jogos profissionais trabalham com formatos de arquivos proprietários, diferentes daqueles conhecidos pelo sistema operacional.
![Page 37: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/37.jpg)
37
Gerenciamento de IA
Gerencia o comportamento de objetos controlados pela máquina
Realiza certas ações de acordo com o estado atual do jogo e algumas regras.
Complexidade varia de acordo com o tipo de jogo ou determinado nível.
A maioria dos motores definem uma linguagem (script) que serve para modelar o comportamento de um objeto.
![Page 38: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/38.jpg)
38
Gerenciador de Mensagens
Gerencia as mensagens de Debug do motor e do jogo. Estas mensagens podem ser enviadas para:
Console Arquivo Rede Impressora, ...
![Page 39: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/39.jpg)
39
Gerenciador de Múltiplos Jogadores
Permite que jogadores do mesmo jogo comuniquem-se entre si
Lida basicamente com o gerenciamento da conexão e troca de informações entre os diversos computadores conectados.
Provê toda a infra-estrutura cliente/servidor Deve ser executado em um thread diferente do
principal
![Page 40: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/40.jpg)
40
Gerenciador de Objetos
Que objetos? Um objeto representa qualquer “coisa” que está
presente no estado atual do jogo.
Tais objetos são passíveis de movimento e interação entre si.
A interação se dá por troca de informações Por exemplo, se o objeto “bala” detectou que
atingiu algum alvo, uma mensagem será enviada ao alvo para que o mesmo mude de estado.
![Page 41: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/41.jpg)
41
Gerenciador de Objetos
Em um jogo existem vários gerenciadores de objetos.
Cada um é encarregado de gerenciar parte dos objetos e comunicar-se com os demais gerenciadores
Exemplo: Num jogo como BreakOut, podemos ter um gerenciador para a raquete do usuário, outro para a bola e um terceiro para todos os tijolos.
![Page 42: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/42.jpg)
42
Gerenciador de Objetos
Manipulação de colisão Corresponde a uma dos principais papéis do
gerenciador de objetos Pode ser implementada de seguinte forma:
Cada objeto informa se está colidindo com outro. Para conseguir tal informação:
Cada objeto possui um retângulo que o engloba; Para saber se dois objetos se colidem, basta testar
se os dois retângulos tem algum ponto em comum;
![Page 43: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/43.jpg)
43
Gerenciador de Objetos
Detecção de colisão baseada em retângulos:
x
yA
B
Ax1 Ax2
Bx1 Bx2
Ay1
Ay2
By1
By2
se ((Bx1 > Ax2) ou(Ax1 > Bx2) ou(By1 > Ay2) ou(Ay1 > By2))
não há colisãosenão
há colisãox
yA
B
Ax1 Ax2
Bx1 Bx2
Ay1
Ay2
By1
By2
se ((Bx1 > Ax2) ou(Ax1 > Bx2) ou(By1 > Ay2) ou(Ay1 > By2))
não há colisãosenão
há colisão
![Page 44: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/44.jpg)
44
Colisão
Vantagens Facilidade de implementação Velocidade de processamento
Desvantagem A Corretude depende da
forma do objeto
![Page 45: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/45.jpg)
45
Gerenciador de Objetos Tratamento da colisão
Uma vez que cada objeto implementa o algoritmo de colisão.
Se um objeto “a” detecta que colidiu com “b”, “a” irá alertar “b” e o mesmo por sua vez irá alertar seu gerenciador sobre o ocorrido.
Exemplo: No caso da colisão acima, “a” poderia executar o seguinte
código: b.atingido();
Com isso, “b” iria executar: meuGerenciador.manipuleColisao();
![Page 46: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/46.jpg)
46
Gerenciador do Mundo É o gerenciador do estado atual do jogo
Basicamente lida com os diversos gerenciadores de objetos para ditar o que deve ser feito
Em geral é associado com um editor de cenários Descreve o estado inicial do mundo em cada nível do
jogo Salva e carrega o estado atual
![Page 47: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/47.jpg)
47
Algumas Considerações
O Gerenciador de mundo e de objetos Quanto mais definido, mais específico é o motor Grande discussão sobre quando termina o motor
e começa o jogo ! Os motores baseados em surface (2D) sofrem
mais deste problema que os 3D.
![Page 48: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/48.jpg)
48
Editor de Cenários Ferramenta para descrição de estados do jogo de
forma visual e sem necessidade de programação Em geral é utilizada para gerar as diversas instâncias
do jogo (níveis)
Ao final deve gerar um arquivo a ser processado pelo gerenciador do mundo para inicializar cada nível
Exemplo Editor de cenários do jogo Starcraft
![Page 49: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/49.jpg)
49
![Page 50: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/50.jpg)
50
Gerenciador Principal
Realiza a harmonia entre todas as partes citadas
Ponte para acesso aos componentes e troca de informações (controle de fluxo)
Representa a “fachada” de todo o projeto Local de acesso único (Singleton) Concentrador dos estados e erros de todas as
partes
![Page 51: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/51.jpg)
51
Um Possível Diagrama
Gerenciadorprincipal
EntradaUsuário
Gerenciador de Mensagens
Gerenciador do mundo
Gerenciador deobjetos
Gerenciadorgráfico
Tela
Gerenciadormultiplayer
Gerenciador desom
AmplificadoresEditor de cenários
IA
![Page 52: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/52.jpg)
52
Conclusão
O Uso de um motor de jogos traz uma série de benefícios para o ciclo de desenvolvimento de um jogo
Clareza Reusabilidade Divisão de tarefas Organização, etc.
![Page 53: 1 Arquitetura de Motores de Jogos Carlos André C. Pessoa Eduardo Sampaio Rocha Geber Ramalho](https://reader035.vdocuments.mx/reader035/viewer/2022062700/552fc17d497959413d8f1409/html5/thumbnails/53.jpg)
53
Referências Inside Direct3D, Peter Kovach Tricks of the Windows Game Programming Gurus, André
Lamothe DirectDraw x Directx3D8:
www.gamasutra.com/features/20010615/geczy_01.htm Charles Andryê Galvão Madeira. Forge V8: um Framework
para o Desenvolvimento de Jogos de Computador e Aplicações Multimídia. Dissertação de Mestrado do CIn-UFPE.
Carlos André Cavalcante Pessoa. wGEM: um Framework de Desenvolvimento de Jogos para Dispositivos Móveis. Dissertação de Mestrado do CIn-UFPE.
Eduardo Sampaio Rocha. Forge 16v: Um Framework para Desenvolvimento de Jogos Isométricos. Dissertação de Mestrado do CIn-UFPE.