O documento discute a arquitetura de motores de jogos. Ele aborda como motores de jogos podem reduzir o tempo de desenvolvimento reutilizando componentes entre projetos. Também descreve características de diferentes gêneros de jogos como FPS, corridas e estratégia em tempo real.
2. Arquitetura de Motores de Jogos
•Introdução
•Motores de Jogos
•Características de Gêneros de Jogos
•Mercado de Motores de Jogos
•Arquitetura de Motores de Jogos
•Ferramentas e Linha de Produção de Recursos
3. Motivação
•Um jogo leva de 2 a 5 anos para ser desenvolvido
•Uma grande parte do ciclo de desenvolvimento de jogos envolve a “reinvenção da roda”:
–Gerenciador de sprites
–Manipulador de som
–Controle de interface de entrada
–Renderização
–etc.
•Termina-se levando mais tempo nos detalhes técnicos do que no próprio jogo
4. Motivação
•Se um jogo for bem estruturado, certas partes podem ser genéricas o suficiente para serem (re)aplicadas em vários outros jogos
•E ao mesmo tempo podem até nem serem implementadas, uma vez que já existem muitos componentes de altíssima qualidade disponíveis no mercado
–Enorme ganho de tempo !!!! ($$$$$$$)
5. Como Melhorar Essa Situação?
•Organizar o projeto baseado em certos critérios:
–Funcionalidade
–Dependência
–Relação com o mundo real
•Como é feita a divisão?
–Quais são as diferentes partes?
•Como fazer a comunicação entre estas diversas partes?
7. Motores de Jogos
•O termo “game engine” surgiu em meados da década de 90 em referência ao jogo de tiro em primeira pessoa (first person shooter – FPS) Doom da id Software
•A arquitetura de Doom possuía uma separação razoavelmente bem definida entre seus componentes de software centrais (como o sistema de renderização de gráficos tridimensionais, o sistema de detecção de colisão, ou o sistema de áudio) e aspectos de arte, mundos e regras do jogo
8. Motores de Jogos
•O valor dessa separação se tornou evidente assim que desenvolvedores começaram a licenciar jogos e recriá-los dentro de novos produtos através do desenvolvimento de nova arte, layouts de mapas, armas, personagens, veículos e regras, com mudanças mínimas no programa “motor”
•Isto marcou o surgimento da “comunidade mod” – um grupo de jogadores individuais e pequenos estúdios independentes que construíam novos jogos a partir da modificação de jogos existentes, usando ferramentas livres fornecidas pelos desenvolvedores originais
9. Motores de Jogos
•No final da década de 90, alguns jogos como Quake III Arena e Unreal foram projetados com reuso e “modding” em mente
•Motores se tornaram altamente customizáveis via linguagens de script como Quake C da id, e passaram a se tornar uma segunda receita viável para desenvolvedores
•Hoje desenvolvedores de jogos podem licenciar um motor de jogos e reusar partes significantes de seus componentes chaves de software para a criação de jogos
10. Motores de Jogos
•Uma arquitetura dirigida a dados é o que diferencia um motor de jogos de uma parte de software de um jogo mas que não é um motor
•Quando um jogo possui a lógica ou regras altamente codificadas, ou emprega técnicas de codificação especiais para renderizar tipos específicos de objetos do jogo, se torna difícil ou impossível reusar o software para criação de um jogo diferente
11. Motores de Jogos
•O termo “motor de jogo” deve ser reservado a software extensível e que pode ser usado como base para muitos jogos diferentes sem grandes modificações
12. Escala de Reusabilidade em Motores de Jogos
Pacman
Hydro Thunder Engine
Quake III Engine
Unreal Engine 3
Provavelmente Impossível
Não pode ser utilizado para construir mais que um jogo
Pode ser customizado para fazer muitos jogos similares
Pode ser “adaptado” para construir qualquer jogo de um gênero específico
Pode ser usado para construir qualquer jogo imaginável
13. Motores de Jogos
•A maioria dos motores de jogos são cuidadosamente desenvolvidos e ajustados para rodar um jogo em particular em uma plataforma de hardware específica
•E mesmo os motores multiplataformas de propósito geral, realmente só podem ser utilizados para desenvolver jogos de um determinado tipo, como FPS ou jogos de corrida
•Pode-se seguramente afirmar que quanto mais de propósito geral é um motor de jogo ou componente de middleware, menos adaptado ele é para rodar um jogo específico em uma plataforma específica
15. Motores de Jogos X Gêneros
•Motores de jogos são de certa forma tipicamente específicos por gêneros
–Um motor projetado para um jogo de luta entre duas pessoas em um ringue será muito diferente de um motor para um “jogo eletrônico online multijogador em massa” (massively multiplayer online game – MMOG) ou de um motor para um jogo FPS ou para um jogo de estratégia em tempo real (real-time strategy – RTS)
16. Motores de Jogos X Gêneros
•No entanto, diferentes gêneros apresentam muita coisa em comum (renderização 3D, música, efeitos sonoros, entrada através de teclado, joystick, mouse, etc.
–O motor Unreal, por exemplo, apesar de ser projetado para jogos FPS, tem sido utilizado para construir vários jogos de outros gêneros
21. First-Person Shooters (FPS)
•Tipificado por jogos como Doom, Quake, Unreal Tournament, Half-Life, Counter-Strike e Call of Duty
•Fornece ao jogador a ilusão de estar imerso em um mundo detalhado hiperrealista
Call of Duty by Activision
22. Tecnologias para Jogos FPS
•Renderização 3D de mundos virtuais eficiente
•Controle de câmera/mecânica de mira eficientes
•Animações de alta fidelidade de jogadores virtuais, braços e armas
•Uma grande quantidade de armamento manual
•Um modelo flexível de locomoção e colisão de personagens, que dá a sensação de “flutuação”
•Animações de alta fidelidade e inteligência artificial para non-player characters (NPCs) – personagens inimigos e aliados
•Capacidade multi-jogadores de baixa escala (tipicamente até 64 jogadores simultâneos), e
•O modo onipresente de gameplay “death match”
23. Jogos de Plataforma e Outros em Terceira Pessoa
•Jogos de ação onde pular de plataforma para plataforma é a mecânica principal do gameplay
•Jogos típicos da era 2D incluem Space Panic, Donkey Kong, Pitfall! e Super Mario Brothers
•A era 3D inclui Super Mario 64, Crash Badicoot, Rayman 2, Sonic the Hedgehog, a série Jak and Daxter, a série Ratchet & Clank e Super Mario Galaxy
24. Jogos de Plataforma e Outros em Terceira Pessoa
•Em termos de requisitos tecnológicos, jogos de plataforma podem usualmente ser agrupados com jogos de tiro em terceira pessoa e jogos de ação/aventura em terceira pessoa, como Ghost Recon, Gears of War e Uncharted: Drake´s Fortune
27. Jogos de Plataforma e Outros em Terceira Pessoa
Donkey Kong
Crach Bandicoot
Ghost Recon
28. Tecnologias
•Plataformas móveis, escadas, cordas, treliças e outros modos de locomoção interessantes
•Elementos do ambiente tipo “puzzle”
•Uma câmera que segue o personagem e cuja rotação é controlada pelo jogador humano
•Um sistema de controle de colisão de câmera complexo para garantir que o ponto de visão nunca “corte” apesar da geometria do fundo ou de objetos dinâmicos em primeiro plano
29. Jogos de Luta
•São tipicamente jogos de dois jogadores envolvendo personagens humanoides se esmurrando em um ringue de algum tipo
•O gênero é tipificado por jogos como Street Fighter, Soul Calibur e Tekken
30. Tecnologias para Jogos de Luta
•Um conjunto rico de animações de lutas
•Detecção de colisão apurado
•Um sistema de entrada capaz de detectar combinações complexas de botões e joystick
•Uma coleção vasta de planos de fundo diversos, mas relativamente estáticos
31. Tecnologias para Jogos de Luta
•O “estado-da-arte” em jogos de luta como o Fight Night Round 3 da EA, elevaram o nível da tecnologia com características como:
–Personagens gráficos de alta resolução, incluindo efeitos de pele realísticos
–Animações de personagens de alta fidelidade
–Física para tecidos e simulação dos cabelos dos personagens
33. Jogos de Corrida
•Engloba os jogos onde o principal objetivo é dirigir um carro ou outro veículo em algum tipo de pista
•O gênero possui muitas subcategorias:
–Jogos de corrida com foco em simulação objetivam fornecer uma experiência de pilotagem o mais realística possível (ex. Gran Turismo)
–Corridas do tipo arcade colocam a diversão sobre o realismo (ex. San Francisco Rush, Cruisin´ USA, Hydro Thunder)
–Jogos que exploram a subcultura de corridas de rua, com veículo de consumo (ex. Need for Speed, Juiced)
–Corridas de kart com personagens de cartoons (ex. Mario Kart, Jak X, Freaky Flyers)
34. Tecnologias para Jogos de Corrida
•Vários “truques” são usados quando renderizando elementos distantes de planos de fundo, como empregar cartões bidimensionais para árvores, penhascos e montanhas
•A pista é sempre dividida em regiões bidimensionais relativamente simples chamadas “setores”, usadas para otimizar a renderização de determinação da visibilidade, para auxiliar na inteligência artificial e “path finding” para ou veículos não controlados por humanos, e para resolver muitos outros problemas técnicos
35. Tecnologias para Jogos de Corrida
•A câmera tipicamente segue o veículo por traz para uma perspectiva em terceira pessoa, ou algumas vezes situada dentro do cockpit para o estilo em primeira pessoa
•Quando a pista envolve túneis e outros espaços “apertados”, uma grande quantidade de esforço é colocado para garantir que a câmera não colida com a geometria do plano de fundo
39. Jogos de Corrida
Gran Turismo
Cruisin’ USA
Need for Speed
Mario Kart
40. Estratégia em Tempo Real
•Gênero definido por Dune II: The Building of a Dinarty (1992)
•Inclui jogos como Warcraft, Command & Conquer, Age of Empires e Starcraft
•O jogador distribui unidade de batalha de seu arsenal estrategicamente através de um largo campo de jogo na tentativa de sobrepor seu oponente
•O mundo do jogo é tipicamente mostrado em um ângulo de visão oblíquo topo-base (2D ½)
41. Tecnologias
•Cada unidade é relativamente de baixa resolução, de maneira que o jogo possa dar suporte a um grande número de elementos ao mesmo tempo
•A altitude do terreno é normalmente a tela (canvas) sobre a qual o jogo é projetado e jogado
•É sempre permitido ao jogador construir novas estruturas no terreno em adição a distribuição de suas forças
•A interação do usuário é tipicamente via toque-único e seleção de unidades baseada em área, mais menus ou barras de ferramentas contendo comandos, equipamento, tipos de unidade, tipos de construções, etc.
45. Estratégia em Tempo Real
Dune II
Warcraft
Age of Empires
Command & Conquer 3
46. Massively Multiplayer Online Games (MMOG)
•Este gênero é tipificado por jogos como Nevermind Nights, EverQuest, Word of Warcraft e Star Wars Galaxies, para mostrar alguns
•É definido por qualquer jogo que dê suporte a um grande número de jogadores simultâneos (de milhares a centenas de milhares), normalmente todos jogando em um mundo virtual persistente muito grande
–Persistente porque estados internos duram períodos de tempo muito longos, além de uma sessão de um único jogador
47. Massively Multiplayer Online Games (MMOG)
•Subcategorias desses jogos incluem:
–MMO role-playing games (MMORPG)
–MMO real-time strategy games (MMORTS)
–MMO first-person shooters (MMOFPS)
•No coração de todo MMOG está uma bateria poderosa de servidores
•Estes servidores mantém o estado do mundo do jogo, gerenciam usuários logando e saindo do jogo, fornecem serviços de chat entre usuários e voz sobre ip (VoIP)
48. Massively Multiplayer Online Games (MMOG)
•A maioria deles requer que os usuário paguem por uma assinatura regular
•A fidelidade de seus gráficos é geralmente mais baixa que versões não MMOG devido à grande área do mundo e ao número de jogadores simultâneos
51. Outros Gêneros
•Existem claro, muitos outros gêneros que não serão cobertos em profundidade aqui:
–Esportes (futebol, basebol, futebol americano, golf, basquete, etc.)
–Role-playing games (RPG)
–“God games”, como Populus e Black & White
–Jogos de simulação social/ambientes, como Simcity e The Sims
–Jogos puzzle, como Tetris
–Conversão de jogos de tabuleiro, como xadrez, jogos de carta, go, etc.
–Jogos baseados na Web, como os oferecidos pelo site da EA Pogo
53. A Família de Motores Quake
•O primeiro jogo de tiro 3D em primeira pessoa geralmente aceito é o Castle of Wofenstein 3D (1992)
•Escrito pela Id Software Texas para a plataforma PC, levou a indústria para uma nova e excitante direção
•Id Software também criou Doom, Quake, Quake II e Quake III, todos com uma arquitetura muito similar (família de motores Quake)
•A tecnologia Quake foi usada para criar muitos outros jogos e mesmo outros motores
54. A Família de Motores Quake
•Por exemplo, a estirpe de Medal of Honor para a plataforma PC, segue algo parecido com:
–Quake III (Id)
–Sin (Ritual)
–F.A.K.K. 2 (Ritual)
–Medal of Honor: Allied Assault (2015 & Dreamworks Interactive)
–Medal of Honor: Pacific Assault (Electronic Arts)
•O código fonte de Quake e Quake II está disponível livremente
–http://www.idsoftware.com/business/techdownloads
57. A Família de Motores Unreal
•A Epic Games surgiu na cena FPS em 1998 com o legendário jogo Unreal
•Desde então, o motor Unreal se tornou o maior competidor da tecnologia Quake no espaço FPS
•O motor Unreal 2 é a base para Unreal Tournament 2004, e possui incontáveis “mods”, projetos universitários e jogos comerciais
•O motor Unreal 3 é o próximo passo na evolução, fornecendo algumas das melhores ferramentas e o mais rico conjunto de características de motores de jogos da indústria
58. A Família de Motores Unreal
•Muitos jogos têm sido desenvolvidos com o motor Unreal 3 ultimamente, incluindo o popular Gears of War
59. A Família de Motores Unreal
•Muitos jogos têm sido desenvolvidos com o motor Unreal 3 ultimamente, incluindo o popular Gears of War
60. O Motor Source do Half Life
•Source é o motor de jogos do jogo Half-Life 2 e suas sequências: HL2: Episode One, HL2: Episode Two, Team Fortress 2, e Portal (vendido em conjunto com o título The Orange Box)
•Source é um motor de alta qualidade, rivalizando com o motor Unreal 3 em termos de capacidade gráfica e conjunto de ferramentas
61. O Motor Source do Half Life
•Source é o motor de jogos do jogo Half-Life 2 e suas sequências: HL2: Episode One, HL2: Episode Two, Team Fortress 2, e Portal (vendido em conjunto com o título The Orange Box)
•Source é um motor de alta qualidade, rivalizando com o motor Unreal 3 em termos de capacidade gráfica e conjunto de ferramentas
62. XNA Game Studio da Microsoft
•Plataforma de desenvolvimento de jogos fácil de usar e altamente acessível
•Tem por objetivo encorajar jogadores a criarem seus próprios jogos e compartilhá-los com uma comunidade de jogadores online, da mesma forma que o YouTube encoraja a criação e compartilhamento de vídeos caseiros
•XNA é baseado na linguagem C#
•O principal ambiente de desenvolvimento é o Visual Studio
63. XNA Game Studio da Microsoft
•Permite a criação de jogos para PC, para o console Xbox 360 e para Windows Phone
•Após o pagamento de uma taxa modesta, jogos XNA podem ser publicados na rede Xbox Live e compartilhado com amigos
•Por fornecer excelentes ferramentas a custo zero, a Microsoft abriu as portas para o desenvolvedor médio criar novos jogos
•XNA tem um futuro brilhante e fascinante pela frente
66. Outros Motores Comerciais
•Existem vários motores comerciais no mercado
•Embora desenvolvedores independentes podem não ter dinheiro para adquirir um motor, muitos desses produtos possuem vasta documentação online e/ou wikis que podem servir como uma grande fonte de informação sobre motores e programação de jogos em geral
•Ex. C4 Engine by Terathon Software (http://www.terathon.com/)
67. Motores Proprietários in-House
•Muitas empresas constroem e mantêm seu próprio motor de jogos
•A EA construiu muitos de seus jogos RTS (estratégia em tempo real) com um motor proprietário chamado SAGE, desenvolvido pela Westwood Studios
68. Motores Proprietários in-House
•Os jogos da Naughty Dog Crash Bandicoot e Jak and Daxter, além do recente Uncharted: Drake´s Fortune foram todos desenvolvidos com um motor customizado para as plataformas PlayStation, PlayStation 2 e PlayStation 3
•A maioria dos motores comerciais, como Quake, Source e Unreal, começaram como motores proprietários
69. Motores Open Source
•Motores profissionais e amadores disponibilizados online, de graça
•Existe um grande número de motores open source disponíveis online, alguns são bons, outros medíocres, e outros...
•Alguns motores bem conhecidos:
–Unity, OGRE 3D, Panda 3D, Yake, Crystal Space, Torque, Irrlicht, Cocos2d-x
70. Unity
•Unity surgiu como um dos mais populares motores de jogos
•Principais características:
–“um potente mecanismo de renderização totalmente integrado com um conjunto completo de ferramentas intuitivas e fluxos de trabalho rápidos”
–Permite a criação de jogos 3D e 2D
–Voltado para estúdios e desenvolvedores independentes (indies)
–Multi-plataforma: Web, Desktop, Console, Mobile
–Versões Pro ($75,00/mês ou $1.500,00) e Free
71. Unity
•Programado com UnityScript
–Um dialeto de JavaScript baseado em .NET
•Asset Store
–Uma loja cheia de recursos para tudo que é necessário para o desenvolvimento de um jogo, incluindo animação, áudio e scripts
–Mas também possui recursos gratuitos
•Comunidade
–Compartilhada por milhares de desenvolvedores
–Fóruns, perguntas e respostas, gestão de problemas e feedback sobre novas ideias e versões
76. Cocos2d-x
•Motor de jogos open source mais popular do mercado
•Incorpora duas principais linguagens: C++ e Lua
•Também possui uma versão JavaScript chamada Cocos2d-JS
•Possui uma natureza de múltiplas plataformas, permitindo o desenvolvimento para a maioria das plataformas móveis e desktop
81. Arquitetura de Motores de Jogos
•Um motor de jogos geralmente consiste de um conjunto de ferramentas e componentes para execução dos jogos
•Como todo software, um motor de jogos é construído em camadas
–Normalmente camadas superiores dependem de camadas inferiores, mas não o contrário
–Quando uma camada inferior depende de uma camada superior, chamamos de dependência circular, que deve ser evitada em qualquer sistema, por levar a um indesejável acoplamento de sistemas
83. Hardware, Drivers, SO
•Hardware
–Representa o sistema de computador ou console onde o jogo será executado
•Drivers de Dispositivos
–Componentes de software de baixo nível fornecidos pelo sistema operacional ou fabricante de hardware
–Gerenciam recurso de hardware e blindam o SO e camadas superiores de detalhes de comunicação com a variedade de dispositivos de hardware disponíveis
84. Hardware, Drivers, SO
•Sistema Operacional
–No PC, está em execução todo o tempo, gerenciando a execução de múltiplos programas em um único computador, um deles é o seu jogo, isto significa que um jogo para PC nunca pode assumir que possui todo o controle sobre a máquina
85. Hardware, Drivers, SO
•Sistema Operacional
–Em um console, o SO é apenas uma fina camada de bibliotecas que é compilada diretamente no executável, o jogo tipicamente é o “dono” de toda a máquina
–Entretanto, isso não ocorre no Xbox 360 e PlayStation 3, onde o SO pode interromper a execução do jogo ou tomar conta de certos recursos do sistema
–O vão entre desenvolvimento para PC e para consoles está tipicamente se fechando (para o bem ou para o mal)
86. SDKs de Terceiros e Middleware
•A maioria dos motores alavancam uma série de SDKs e middleware de terceiros
•As interfaces funcionais ou baseadas em classes fornecidas por um SDK são geralmente chamadas de APIs (Application Programming Interface)
•Veremos alguns exemplos...
87. Algoritmos e Estruturas de Dados
•Como qualquer software, jogos dependem massivamente de uma coleção de algoritmos e estruturas de dados
•Exemplos de bibliotecas de terceiros com estes tipos de serviços:
–STL: biblioteca de modelos padrões C++ que fornece código e algoritmos para gerenciamento de estruturas de dados, strings e I/O streams
–STLport: implementação portável e otimizada de STL
–Boost: poderosa biblioteca de algoritmos e estruturas de dados no estilo STL (http://www.boost.org/)
–Loki: biblioteca de modelos de programação genérica que irá fazer o seu “cérebro doer”!
88. Gráficos
•A maioria dos motores de renderização de jogos são construídos no topo de bibliotecas de interfaces de hardware, como por exemplo:
–Glide: SDK de gráficos 3D para a placa gráfica Voodoo, popular antes da era DirectX 8
–OpenGL: largamente utilizada e portável SDK de gráficos 3D
–DirectX: SDK gráfico da Microsoft e principal rival do OpenGL
89. Gráficos
•Mais exemplos:
–libgmc: interface direta de baixo nível para o PlayStation 3 fornecida pela Sony como uma alternativa mais eficiente do OpenGL
–Edge: poderoso e muito eficiente motor de animação e renderização 3D produzido pela Noughty Dog e Sony para PlayStation 3 e usado por um grande número de estúdios de jogos
90. Colisão e Física
•Detecção de colisão e dinâmica rígida de corpos (ou simplismente “física” na comunidade de jogos) são fornecidos pelas seguintes SDKs bem conhecidas:
–Havok: motor bastante popular
–PhysX: outro motor popular disponibilizado gratuitamente pela NVIDIA
–Open Dynamics Engine (ODE): pacote open source de física/colisão
91. Animação de Personagens
•Granny: popular conjunto de ferramentas da Rad Game Tools que inclui modelos robustos 3D e exportadores de animação para os principais pacotes de modelo e animação 3D como Maya, 3d Studio MAX, etc.
•Havok Animation: SDK complementar de animação do popular SDK de física Havok
•Edge: biblioteca produzida pelo time da ICE, a Naughty Dog e Sony para PS3
92. Inteligência Artificial
•Até recentemente, IA era manipulada de maneira customizada para cada jogo
•Entretanto uma empresa chamada Kynogon produziu um middleware chamado Kynapse
•Kynapse: este SDK fornece blocos de construção de IA de baixo nível como path finding, desvio de objetos estáticos e dinâmicos, identificação de vulnerabilidades dentro de um espaço (ex. uma janela aberta pela qual uma emboscada pode vir), e uma razoavelmente boa interface entre IA e animação
93. Modelos Biomecânicos de Personagens
•Endorphin e Euphoria: estes pacotes de animação produzem movimentos de personagens usando modelos biomecânicos avançados de movimento humano realístico
94. Camada Independente de Plataforma
•A maioria dos motores precisam rodar em mais de uma plataforma de hardware
•Portanto, elas são arquitetadas com uma camada independente de plataforma, acima do hardware, drivers, SO e outros programas de terceiros e blinda o motor da maioria do conhecimento sobre a plataforma subjacente
•Através do empacotamento ou substituição da biblioteca C mais comumente usada, chamadas ao SO e outras APIs fundamentais, esta camada garante comportamento consistente através de todas as plataformas de hardware
95. Sistemas Centrais
•Toda aplicação complexa requer um pacote de utilitários, categorizados como “sistemas centrais”, como:
–Assertions: linhas de código para verificação de erros
–Memory management: virtualmente cada motor de jogo implementa seu próprio sistema de alocação de memória a fim de aumentar o desempenho e evitar fragmentação
–Math library: bibliotecas para facilitar os cálculos matemáticos intensivos que os jogos requerem, etc.
96. Gerenciador de Recursos
•Presente em todos os motores de jogos de alguma forma, fornece uma interface unificada (ou conjunto de interfaces) para acesso a todos os tipos de recursos de um jogo e outros dados de entrada
97. Motor de Renderização
•Um dos maiores e mais complexos componentes de qualquer motor de jogos
•Pode ser arquitetado de muitas maneiras diferentes
•Uma maneira comum e de abordagem efetiva de projetar um motor de renderização é empregar uma arquitetura em camadas como a apresentada a seguir
99. Motor de Renderização
•Renderizador de baixo nível
–Engloba toda a parte “bruta” de renderização do motor
–Neste nível o projeto é focado na renderização de uma coleção de primitivas geométricas tão rápido e rico quanto possível, sem preocupação com partes visíveis da cena
•Otimizações de Gráficos de Cena
–Limita o número de primitivas submetidas para renderização, baseada em alguma forma de determinação de visibilidade
100. Motor de Renderização
•Efeitos Visuais
–Motores de jogos modernos dão suporte a uma vasta variedade de efeitos visuais, como:
•Sistemas de partículas (fumaça, fogo, jatos de água, etc.)
•Sistemas de decalque (para buracos de balas, pegadas, etc.)
•Mapeamento de luz e do ambiente
•Sombras dinâmicas
•Correção de cores, efeitos de saturação, etc.
•Fachada (front end)
–Muitos jogos empregam alguns tipos de gráficos 2D em uma cena 3D, com várias finalidades:
•Mostrar alertas do jogo, menus internos do jogo, GUIs internas para manipulação de inventário, configuração de unidades para batalha ou realização de tarefas complexas do jogo
101. Motor de Renderização
•Ferramentas de registro e debugging
–Jogos são sistemas de tempo real, e, como tal, engenheiros sempre precisam registrar a performance de seus jogos de maneira a otimizá-la
–Recursos de memória, por outro lado, são geralmente escassos, fazendo com que desenvolvedores façam uso de ferramentas de análise de memória
–Essa camada engloba estas ferramentas e também inclui meios para correção de erros
–Existe uma série de boas ferramentas com esses fins:
•Vtune da Intel
•Quantify e Purify da IBM
•Bounds Checker da Compuware
102. Motor de Renderização
•Ferramentas de registro e debugging
–Jogos são sistemas de tempo real, e, como tal, engenheiros sempre precisam registrar a performance de seus jogos de maneira a otimizá-la
–Recursos de memória, por outro lado, são geralmente escassos, fazendo com que desenvolvedores façam uso de ferramentas de análise de memória
–Essa camada engloba estas ferramentas e também inclui meios para correção de erros
–Existe uma série de boas ferramentas com esses fins:
•Vtune da Intel
•Quantify e Purify da IBM
•Bounds Checker da Compuware
103. Motor de Renderização
•Colisão e Física
–Detecção de colisão é importante em todos os jogos
•Sem ela, objetos poderiam interpenetrar e seria impossível interagir com o mundo virtual de uma maneira razoável
–Alguns jogos também incluem uma dinâmica de simulação realística ou semi-realística
–Colisão e física estão fortemente acoplados
•Isto ocorre porque quando colisões são detectadas, elas quase sempre resultam como parte da integração da física com a lógica de satisfação de restrições
–SDKs:
•Havok: padrão da indústria atual
•PhysX da NVIDIA, integrado ao motor Unreal 3, livre para PC
104. Motor de Renderização
•Colisão e Física (cont.)
–SDKs:
•Open Dynamics Engine (ODE)
•I-Collide, V-Collide e RAPID, desenvolvidos pela Universidade da Carolina do Norte
105. Motor de Renderização
•Animação
–Todo jogo que possui personagem orgânicos ou semi- orgânicos (humanos, animais, desenhos, ou mesmo robôs) precisam de um sistema de animação
–Existem cinco tipos básicos de animação utilizadas em jogos:
•Animação de sprites/texturas
•Animação hierárquica de corpos rígidos
•Animação de esqueletos (mais utilizada atualmente)
•Animação de vértices
•Alvos de transformação
106. Motor de Renderização
•Animação
–Todo jogo que possui personagem orgânicos ou semi- orgânicos (humanos, animais, desenhos, ou mesmo robôs) precisam de um sistema de animação
–Existem cinco tipos básicos de animação utilizadas em jogos:
•Animação de sprites/texturas
•Animação hierárquica de corpos rígidos
•Animação de esqueletos (mais utilizada atualmente)
•Animação de vértices
•Alvos de transformação
107. Motor de Renderização
•Dispositivos de Interface Humana
–Todos os jogos precisam processar entradas dos jogadores, obtidas de vários dispositivos de interface, incluindo:
•Teclado e mouse
•Joypad/joystick
•Outros controles especializados, como volantes, varas de pescar, tapetes de dança, WiiMote, etc.
–Algumas vezes estes componentes podem ser do tipo I/O, por fornecer saídas ao jogador como force feedback ou áudio
108. Motor de Renderização
•Dispositivos de Interface Humana
–Todos os jogos precisam processar entradas dos jogadores, obtidas de vários dispositivos de interface, incluindo:
•Teclado e mouse
•Joypad/joystick
•Outros controles especializados, como volantes, varas de pescar, tapetes de dança, WiiMote, etc.
–Algumas vezes estes componentes podem ser do tipo I/O, por fornecer saídas ao jogador como force feedback ou áudio
110. Áudio
•Tão importante quanto gráficos em qualquer motor de jogos
•Infelizmente, geralmente possui menos atenção que renderização, física, animação, IA e gameplay
•Entretanto, nenhum grande jogo está completo sem um ótimo motor de áudio
•Motores de áudio variam muito em sofisticação
111. Multijogadores Online/Rede
•Muitos jogos permitem múltiplos jogadores humanos em um único mundo virtual
•Existem basicamente quatro tipos:
–Multijogadores em uma única tela: dois ou mais dispositivos de controle são conectados a uma única máquina. Múltiplos personagens de jogadores coabitam em um único mundo virtual e uma única câmera mantém todos os personagens simultaneamente na janela. Ex.: Smash Brothers, Lego Star Wars e Gauntlet
–Multijogadores em tela dividida: equivalente ao modo anterior, mas cada personagem possui sua própria câmera e a tela é dividida em seções
112. Multijogadores Online/Rede
•Existem basicamente quatro tipos (cont.):
–Multijogadores em rede: múltiplos computadores ou consoles conectados em rede, onde cada máquina hospeda um dos jogadores
–Jogos online multijogadores massivos (MMOG): centenas a milhares de usuários jogando simultaneamente, dentro de um mundo virtual enorme e persistente, hospedado por uma poderosa bateria de servidores centrais
113. Multijogadores Online/Rede
•Existem basicamente quatro tipos (cont.):
–Multijogadores em rede: múltiplos computadores ou consoles conectados em rede, onde cada máquina hospeda um dos jogadores
–Jogos online multijogadores massivos (MMOG): centenas a milhares de usuários jogando simultaneamente, dentro de um mundo virtual enorme e persistente, hospedado por uma poderosa bateria de servidores centrais
114. Sistemas Fundamentais do Gameplay
•O termo gameplay se refere às ações que ocorrem durante o jogo, as regras que governam o mundo virtual, as habilidades do personagem do jogador (conhecida como mecânica do jogador) e dos outros personagens e objetos do mundo, e as metas e objetivos dos jogadores
•É tipicamente implementado na linguagem nativa do motor de jogos ou em linguagem de script de alto nível, ou em ambos
115. Sistemas Fundamentais do Gameplay
•O termo gameplay se refere às ações que ocorrem durante o jogo, as regras que governam o mundo virtual, as habilidades do personagem do jogador (conhecida como mecânica do jogador) e dos outros personagens e objetos do mundo, e as metas e objetivos dos jogadores
•É tipicamente implementado na linguagem nativa do motor de jogos ou em linguagem de script de alto nível, ou em ambos
116. Modelos de Objetos
•O modelo de objetos do jogo fornece simulação em tempo real de uma coleção heterogênea de objetos do mundo virtual do jogo, que incluem:
–Geometria de fundo estática, como construções, estradas, terrenos, etc.
–Corpos rígidos dinâmicos, como rochas, latas, cadeiras, etc.
–Personagens do jogador (PC)
–Personagens que não são o jogador (NPC)
–Armas, projéteis, veículos
–Luzes, câmeras, etc.
117. Modelos do Mundo
•O modelo do mundo do jogo está fortemente ligado ao modelo de objetos do software e responde a perguntas do tipo:
–Seu motor é projetado de uma maneira orientada a objetos?
–Qual a linguagen? C? C++? Java? OCaml?
–Como a hierarquia está organizada?
–Como os objetos são referenciados?
–Como os objetos são unicamente identificados?
–Como o tempo de vida dos objetos são gerenciados?
–Como o estado dos objetos do jogo são simulados através do tempo?
118. Sistema de Eventos
•Objetos do jogo precisam invariavelmente se comunicar
•Isto pode ser feito de várias maneiras, por exemplo, um objeto envia a mensagem simplesmente chamando uma função do objeto recebedor
•Uma arquitetura dirigida a eventos, também é uma abordagem comum para comunicação entre objetos: o evento contendo a mensagem é passado ao objeto recebedor através de uma chamada a uma função manipuladora de eventos
119. Sistema de Script
•Muitos motores de jogos utilizam uma linguagem de script para desenvolvimento de regras específicas do gameplay, permitindo desenvolvimento mais rápido e mais fácil
120. Fundamentos de IA
•Tradicionalmente, IA não era considerada parte do motor de jogos
•Mais recentemente, entretanto, empresas de jogos têm reconhecido padrões que são utilizados em quase todo sistema de IA
•Uma empresa chamada Kynogon desenvolveu um motor de IA comercial chamado Kynapse, que inclui características como:
–Uma rede de nós definindo áreas ou caminhos de navegação onde personagens são livres para se movimentar sem a possibilidade de colidir com a geometria estática do mundo
121. Fundamentos de IA
•Características do Kynapse (cont.):
–Informação de colisão simplificada em torno dos limites de cada área de navegação livre
–Conhecimento das entradas e saídas de cada região e de onde em cada região um inimigo pode ver e/ou emboscar o jogador
–Um motor de path-finding, conhecido como algoritmo A*
–Um modelo customizado do mundo que diz ao sistema de IA onde todas as entidades de interesse (amigos, inimigos, obstáculos) estão, permitindo evitar dinamicamente a movimentação de objetos
–Etc.
122. Subsistemas Específicos do Jogo
•Acima da camada de sistemas fundamentais do gameplay e de outros componentes de baixo nível do motor, programadores e projetistas cooperam para implementar as características do jogo em si
•Estes são geralmente numerosos, muito variáveis e específicos do jogo em desenvolvimento
•Inclui, mas não está limitado a: mecânica do personagem do jogador, sistemas de câmera do jogo, IA para controle de NPCs, sistemas de armas, veículos, etc.
123. Subsistemas Específicos do Jogo
•Acima da camada de sistemas fundamentais do gameplay e de outros componentes de baixo nível do motor, programadores e projetistas cooperam para implementar as características do jogo em si
•Estes são geralmente numerosos, muito variáveis e específicos do jogo em desenvolvimento
•Inclui, mas não está limitado a: mecânica do personagem do jogador, sistemas de câmera do jogo, IA para controle de NPCs, sistemas de armas, veículos, etc.
125. Ferramentas e Linha de Produção de Recursos
•Qualquer motor de jogos deve ser capaz de lidar com uma grande quantidade de dados e recursos do jogo, arquivos de configuração, scripts, etc.