Arquitetura de Jogos Gustavo Goedert http://www.gustavogoedert.com/lectures/facin0810.zi p
Sobre 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 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 Jogos Equipes de Programação Engine Ferramentas Aplicação Equipes de Arte Props Montagem de Niveis Game Designer
Trabalho 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
Soluçõ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 codereview 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 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 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 é um 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
Engine Engine pode ser desenvolvido inhouse ou comprado Criação de títulos derivados Upgrade facilitado da tecnologia desenvolvida Exemplos Quake Unreal Renderware
Subsistemas Específicos de Jogos Rendering Mecânicas de jogadores Câmeras IA
Interface com o Usuário HUD GUI Vídeo
Interface com o Usuário HUD GUI Vídeo
Interface com o Usuário HUD GUI Vídeo
Fundamentos do Jogo Elementos Estáticos Elementos Dinâmicos Simulação em Tempo Real Sistema de Mensagens/Eventos Streaming do Nível/Mundo
Efeitos Visuais Iluminação HDR Partículas
Efeitos Visuais Iluminação HDR Partículas
Efeitos Visuais Iluminação HDR Partículas
Grafos de Cena / Otimizações de Culling Subdivisão Espacial /Oclusão & PVS Arvore de esferas BSP Octree
Grafos de Cena / Otimizações de Culling Subdivisão Espacial /Oclusão & PVS Arvore de esferas BSP Octree
Grafos de Cena / Otimizações de Culling Subdivisão Espacial /Oclusão & PVS Arvore de esferas BSP Octree
Grafos de Cena / Otimizações de Culling Sistema de LOD
Colisão & FísicaF Intersecção de Raio/Esfera (testes seleção de objetos)
Colisão & FísicaF Rigid Bodies / Resolução de Colisões
Animação de Esqueletos Inverse Kinematics
Animação de Esqueletos Playback de Animações
Animação de Esqueletos Ragdoll
Multiplayer Online Match-Making Política sobre autoridade dos objetos do jogos Replicação do estado do jogo
Áudio Efeitos DSP Modelo de áudio 3D Gerenciamento de playback de áudio Streaming
Rendering Low-Level Level 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 Jogador I/O Dispositivos físicos
Interface com Jogador Interface especifica de jogo
Recursos (Assets do Jogo) Modelos 3D
Recursos (Assets do Jogo) Texturas
Recursos (Assets do Jogo) Materiais
Recursos (Assets do Jogo) Fontes
Recursos (Assets do Jogo) Esqueletos
Recursos (Assets do Jogo) Modelos de Colisão
Recursos (Assets do Jogo) Mapas do Mundo/Jogo
Sistemas BásicosB 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 Plataforma 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 Proprietários rios DirectX, OpenGL, Xbox360, Playstation, Nintendo... Havok, PhysX, ODE, etc. Boost++ STL Kynapse Granny, Havok, ODE, etc. etc...
AINDA TEM OS Drivers Hardware
Referencias 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)
Contato http://www.gustavogoedert.com