Arquitetura de Jogos · Arquitetura de Jogos ... Atualmente pesquisador na FACIN Trabalho Trabalho...

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

Transcript of Arquitetura de Jogos · Arquitetura de Jogos ... Atualmente pesquisador na FACIN Trabalho Trabalho...

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