45
Arquitetura de Jogos Arquitetura de Jogos Gustavo Goedert http://www.gustavogoedert.com/lectures/facin0810.zi p

Arquitetura de Jogos · Arquitetura de Jogos ... Atualmente pesquisador na FACIN Trabalho Trabalho em Sistemas para Engines ... (Blender, GIMP, Max, Photoshop, ...)

Embed Size (px)

Citation preview

Arquitetura de JogosArquitetura de JogosGustavo Goedert

http://www.gustavogoedert.com/lectures/facin0810.zip

Sobre o ApresentadorSobre o Apresentador

� Empresas◦ Southlogic Studios (1999-2008)

◦ Ubisoft Porto Alegre (2009-2010)

◦ Atualmente pesquisador na FACIN

� Trabalho◦ Trabalho em Sistemas para Engines

◦ Porting entre DirectX PS2 Xbox Xbox360 Wii

Resumo da PalestraResumo da Palestra

� Trabalhando em equipe em um projeto de jogos

� Soluções para projetos de jogos� Ferramentas usadas em projetos de jogos

� Visão geral sobre os diversos subsistemas de um engine de jogos

Equipes em um Projeto de Equipes em um Projeto de JogosJogos� Equipes de Programação◦ Engine

◦ Ferramentas

◦ Aplicação

� Equipes de Arte◦ Props

◦ Montagem de Niveis

� Game Designer

Trabalho em EquipeTrabalho em Equipe

� Todo mundo tem que trabalhar em conjunto

� Se alguém atrasa todo mundo atrasa� Se a empresa atrasa o publicador não paga

SoluSoluçções de Projetoões de Projeto� Documentos◦ Design Doc (feito principalmente pelo Game Desginer - descreve como vai ser o jogo)◦ Tech Doc (negociado por toda a empresa - descreve como o jogo vai ser feito)

� Cronogramas/Milestones◦ podem ser usados reuniões semanais com code-review e também scrum◦ Cronogramas podem ser revistos periodicamente

� Gerenciamento das equipes◦ Acompanhamento do cronograma e manter as equipes focadas◦ Resolução de problemas upstream (mais barato) e evitar problemas downstream

Ferramentas ExternasFerramentas Externas

� Preferência a ferramentas open-source� Ferramenta de Controle de Versão (Mercurial, SVN, CVS, SourceSafe, Perforce...)◦ Código, Arte, Documentos do Projeto

� Editores 3D e 2D (Blender, GIMP, Max, Photoshop, ...)

� Compiladores� Ferramenta de acompanhamento de bugs (Bugzilla)

� Gerador do Instalador (Inno Setup)

Ferramentas InternasFerramentas Internas

Faça a ferramenta que faz o dado

� Exportador de modelos do editor 3d

� Visualizador de modelos� Editor de Níveis

� Criador de “Packs”◦ Simplicidade de instalação

◦ Criptografia

O Que O Que éé um Engineum Engine

� A expressão apareceu nos anos 90

� Apareceram primeiro em FPS tipo Doom

� Separação core, assets e as regras que definem o gameplay

� Com um mesmo engine podemos fazer vários jogos mudando os assets e o gameplay

� Desde então os engines estão cada vez mais evoluídos

EngineEngine

� Engine pode ser desenvolvido in-house ou comprado

� Criação de títulos derivados� Upgrade facilitado da tecnologia desenvolvida

� Exemplos◦ Quake

◦ Unreal

◦ Renderware

Subsistemas EspecSubsistemas Especííficos de ficos de JogosJogos� Rendering

�Mecânicas de jogadores

� Câmeras� IA

Interface com o UsuInterface com o Usuááriorio

� HUD

� GUI

� Vídeo

Interface com o UsuInterface com o Usuááriorio

� HUD

� GUI

� Vídeo

Interface com o UsuInterface com o Usuááriorio

� HUD

� GUI

� Vídeo

Fundamentos do JogoFundamentos do Jogo

� Elementos Estáticos

� Elementos Dinâmicos

� Simulação em Tempo Real� Sistema de Mensagens/Eventos

� Streaming do Nível/Mundo

Efeitos VisuaisEfeitos Visuais

� Iluminação

� HDR

� Partículas

Efeitos VisuaisEfeitos Visuais

� Iluminação

� HDR

� Partículas

Efeitos VisuaisEfeitos Visuais

� Iluminação

� HDR

� Partículas

Grafos de Cena / OtimizaGrafos de Cena / Otimizaçções ões de Cullingde Culling� Subdivisão Espacial /Oclusão & PVS◦ Arvore de esferas

◦ BSP

◦ Octree

Grafos de Cena / OtimizaGrafos de Cena / Otimizaçções ões de Cullingde Culling� Subdivisão Espacial /Oclusão & PVS◦ Arvore de esferas

◦ BSP

◦ Octree

Grafos de Cena / OtimizaGrafos de Cena / Otimizaçções ões de Cullingde Culling� Subdivisão Espacial /Oclusão & PVS◦ Arvore de esferas

◦ BSP

◦ Octree

Grafos de Cena / OtimizaGrafos de Cena / Otimizaçções ões de Cullingde Culling� Sistema de LOD

Colisão & FColisão & Fíísicasica

� Intersecção de Raio/Esfera (testes seleção de objetos)

Colisão & FColisão & Fíísicasica

� Rigid Bodies / Resolução de Colisões

AnimaAnimaçção de Esqueletosão de Esqueletos

� Inverse Kinematics

AnimaAnimaçção de Esqueletosão de Esqueletos

� Playback de Animações

AnimaAnimaçção de Esqueletosão de Esqueletos

� Ragdoll

Multiplayer OnlineMultiplayer Online

�Match-Making

� Política sobre autoridade dos objetos do jogos

� Replicação do estado do jogo

ÁÁudioudio

� Efeitos DSP

�Modelo de áudio 3D

� Gerenciamento de playback de áudio� Streaming

Rendering LowRendering Low--LevelLevel

�Materiais/Shaders� Iluminação Estática & Dinâmica� Câmeras� Textos & Fontes� Primitivas (Sopa de Triângulos)� Viewports & Telas Virtuais� Gerenciamento de Superfícies (Texturas, Shaders)

� Interface com Dispositivo Gráfico

Interface com JogadorInterface com Jogador

� I/O Dispositivos físicos

Interface com JogadorInterface com Jogador

� Interface especifica de jogo

Recursos (Assets do Jogo)Recursos (Assets do Jogo)

�Modelos 3D

Recursos (Assets do Jogo)Recursos (Assets do Jogo)

� Texturas

Recursos (Assets do Jogo)Recursos (Assets do Jogo)

�Materiais

Recursos (Assets do Jogo)Recursos (Assets do Jogo)

� Fontes

Recursos (Assets do Jogo)Recursos (Assets do Jogo)

� Esqueletos

Recursos (Assets do Jogo)Recursos (Assets do Jogo)

�Modelos de Colisão

Recursos (Assets do Jogo)Recursos (Assets do Jogo)

�Mapas do Mundo/Jogo

Sistemas BSistemas Báásicossicos� Inicialização / Finalização� Assertions� Gerenciamento de Memória� Biblioteca Matemática� Biblioteca de Debuging/Logging� Profiling/Estatísticas� Serviços de Localização� Playback de Filmes� Parsers (XML)� Configuração do Engine� Gerador de Números Aleatórios� Biblioteca de Curvas e Superficies� Handles de Objetos / IDs Únicos� I/O de arquivos assíncrono

Sistemas Independentes de Sistemas Independentes de PlataformaPlataforma� Detecção da Plataforma

� Tipos Atômicos

� Coleções e Iteradores (STL/Boost)� Abstração do Sistema de Arquivos

� Abstração da Rede (UDP/TCP/?)

� Timer de Alta Resolução

� Abstração Dispositivo Gráfico

� Abstração Física/Colisão

SDK's / Sistemas SDK's / Sistemas ProprietProprietááriosrios� DirectX, OpenGL, Xbox360, Playstation, Nintendo...

� Havok, PhysX, ODE, etc.� Boost++

� STL

� Kynapse

� Granny, Havok, ODE, etc.

� etc...

AINDA TEMAINDA TEM

� OS

� Drivers

� Hardware

ReferenciasReferencias� Graphic Gems (1-5 meio antigo mas ainda valido)

� Game Programming Gems (1-7)� AI Game Programming Wisdom (1-4)� GPU Gems (1-3)� ShaderX (1-5)� Massively Multiplayer Game Development (1-2)

� Secrets of the Game Business� Introduction to Game Development� GDC (evento)� Game Developer Magazine (revista)� Gamasutra (site)

ContatoContato

http://www.gustavogoedert.com