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
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
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
Multiplayer OnlineMultiplayer Online
�Match-Making
� Política sobre autoridade dos objetos do jogos
� Replicação do estado do jogo
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
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...
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)
Top Related