SlideShare uma empresa Scribd logo
1 de 131
Baixar para ler offline
Arquitetura de Motores de Jogos 
Fábio Moura 
fabio.mpereira@uesb.edu.br
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
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
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 !!!! ($$$$$$$)
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?
MOTORES DE JOGOS 
DESENVOLVIMENTO DE JOGOS
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
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
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
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
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
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
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
CARACTERÍSTICAS DE GÊNEROS DE JOGOS 
DESENVOLVIMENTO DE JOGOS
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)
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
Unreal Engine 
Unreal – FPS
Unreal Engine 
Gears of War – Third Person Shooter 
by Epic Games
Unreal Engine 
Grimm – Jogo de Aventura By Spicy Horse
Unreal Engine 
Speed Star – Jogo de Corridas Futurista by Acro Games
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
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”
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
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
Jogos de Plataforma e Outros em Terceira Pessoa 
Donkey Kong
Jogos de Plataforma e Outros em Terceira Pessoa 
Donkey Kong 
Crach Bandicoot
Jogos de Plataforma e Outros em Terceira Pessoa 
Donkey Kong 
Crach Bandicoot 
Ghost Recon
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
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
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
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
Fight Night Round 3
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)
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
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
Jogos de Corrida 
Gran Turismo
Jogos de Corrida 
Gran Turismo 
Cruisin’ USA
Jogos de Corrida 
Gran Turismo 
Cruisin’ USA 
Need for Speed
Jogos de Corrida 
Gran Turismo 
Cruisin’ USA 
Need for Speed 
Mario Kart
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 ½)
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.
Estratégia em Tempo Real 
Dune II
Estratégia em Tempo Real 
Dune II 
Warcraft
Estratégia em Tempo Real 
Dune II 
Warcraft 
Age of Empires
Estratégia em Tempo Real 
Dune II 
Warcraft 
Age of Empires 
Command & Conquer 3
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
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)
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
Massively Multiplayer Online Games (MMOG) 
World of Warcraft
Massively Multiplayer Online Games (MMOG) 
World of Warcraft 
Star Wars Galaxies
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
MERCADO DE MOTORES DE JOGOS 
DESENVOLVIMENTO DE JOGOS
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
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
Medal of Honor: Pacific Assault
Medal of Honor: Pacific Assault
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
A Família de Motores Unreal 
•Muitos jogos têm sido desenvolvidos com o motor Unreal 3 ultimamente, incluindo o popular Gears of War
A Família de Motores Unreal 
•Muitos jogos têm sido desenvolvidos com o motor Unreal 3 ultimamente, incluindo o popular Gears of War
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
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
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
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
XNA Game Studio da Microsoft
XNA Game Studio da Microsoft
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/)
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
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
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
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
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
Unity
Unity
Unity
Unity
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
Cocos2d-x
Cocos2d-x
Cocos2d-x
ARQUITETURA DE MOTORES DE JOGOS 
DESENVOLVIMENTO DE JOGOS
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
Arquitetura de Execução
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
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
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)
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...
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”!
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
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
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
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
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
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
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
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.
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
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
Motor de Renderização
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
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
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
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
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
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
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
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
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
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
Dispositivos de Interface Humana
Á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
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
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
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
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
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
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.
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?
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
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
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
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.
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.
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.
FERRAMENTAS E LINHA DE PRODUÇÃO DE RECURSOS 
DESENVOLVIMENTO DE JOGOS
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.
Ferramentas para Criação de Conteúdo Digital
Ferramentas para Criação de Conteúdo Digital
Ferramentas para Criação de Conteúdo Digital
Ferramentas para Criação de Conteúdo Digital
Mundo do Jogo 
Objetos 
Objetos 
Objetos 
Modelos de Objetos 
Animações 
Materiais 
Texturas 
Sistema de Partículas 
Banco de Sons
Arquitetura de Motores de Jogos 
Fábio Moura 
fabio.mpereira@uesb.edu.br

Mais conteúdo relacionado

Mais procurados

Redes Avançadas - 4.Multimídia sobre Redes de Pacotes
Redes Avançadas - 4.Multimídia sobre Redes de PacotesRedes Avançadas - 4.Multimídia sobre Redes de Pacotes
Redes Avançadas - 4.Multimídia sobre Redes de PacotesMauro Tapajós
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 
Banco de Dados Temporais - Temporal DataBase
Banco de Dados Temporais - Temporal DataBaseBanco de Dados Temporais - Temporal DataBase
Banco de Dados Temporais - Temporal DataBaseSergioSouza
 
Aula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem CAula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem Cprofjr
 
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
Capítulo 5 e 4   transmissão analógica e digital (2º unidade)Capítulo 5 e 4   transmissão analógica e digital (2º unidade)
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)Faculdade Mater Christi
 
Sistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockSistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockWellington Oliveira
 
Endereçamento IP
Endereçamento IPEndereçamento IP
Endereçamento IPPjpilin
 
Redes de computadores
Redes de computadoresRedes de computadores
Redes de computadoresJakson Silva
 
O protocolo ftp (file transfer protocol)
O protocolo ftp (file transfer protocol)O protocolo ftp (file transfer protocol)
O protocolo ftp (file transfer protocol)ErikHR
 
Unidades de Informacao, Sistemas Numericos
Unidades de Informacao, Sistemas NumericosUnidades de Informacao, Sistemas Numericos
Unidades de Informacao, Sistemas NumericosArthur Emanuel
 
Pesquisa Operacional - Aula 05: O Médoto Simplex
Pesquisa Operacional - Aula 05: O Médoto SimplexPesquisa Operacional - Aula 05: O Médoto Simplex
Pesquisa Operacional - Aula 05: O Médoto SimplexLeinylson Fontinele
 
Programas utilitários
Programas utilitáriosProgramas utilitários
Programas utilitáriossimoesflavio
 
Sistemas de Telecomunicações - Aula 11 - FHSS (Frequency Hopping Spread Spect...
Sistemas de Telecomunicações - Aula 11 - FHSS (Frequency Hopping Spread Spect...Sistemas de Telecomunicações - Aula 11 - FHSS (Frequency Hopping Spread Spect...
Sistemas de Telecomunicações - Aula 11 - FHSS (Frequency Hopping Spread Spect...Leinylson Fontinele
 
Modelo OSI - Camada de Rede
Modelo OSI - Camada de RedeModelo OSI - Camada de Rede
Modelo OSI - Camada de RedeWalyson Vëras
 

Mais procurados (20)

Redes Avançadas - 4.Multimídia sobre Redes de Pacotes
Redes Avançadas - 4.Multimídia sobre Redes de PacotesRedes Avançadas - 4.Multimídia sobre Redes de Pacotes
Redes Avançadas - 4.Multimídia sobre Redes de Pacotes
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 
Banco de Dados Temporais - Temporal DataBase
Banco de Dados Temporais - Temporal DataBaseBanco de Dados Temporais - Temporal DataBase
Banco de Dados Temporais - Temporal DataBase
 
Aula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem CAula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem C
 
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
Capítulo 5 e 4   transmissão analógica e digital (2º unidade)Capítulo 5 e 4   transmissão analógica e digital (2º unidade)
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
 
Sistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockSistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 Deadlock
 
Endereçamento IP
Endereçamento IPEndereçamento IP
Endereçamento IP
 
Redes de computadores
Redes de computadoresRedes de computadores
Redes de computadores
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
O protocolo ftp (file transfer protocol)
O protocolo ftp (file transfer protocol)O protocolo ftp (file transfer protocol)
O protocolo ftp (file transfer protocol)
 
Unidades de Informacao, Sistemas Numericos
Unidades de Informacao, Sistemas NumericosUnidades de Informacao, Sistemas Numericos
Unidades de Informacao, Sistemas Numericos
 
Pesquisa Operacional - Aula 05: O Médoto Simplex
Pesquisa Operacional - Aula 05: O Médoto SimplexPesquisa Operacional - Aula 05: O Médoto Simplex
Pesquisa Operacional - Aula 05: O Médoto Simplex
 
Transmissão serial e paralela
Transmissão serial e paralelaTransmissão serial e paralela
Transmissão serial e paralela
 
Programas utilitários
Programas utilitáriosProgramas utilitários
Programas utilitários
 
Sistemas de Telecomunicações - Aula 11 - FHSS (Frequency Hopping Spread Spect...
Sistemas de Telecomunicações - Aula 11 - FHSS (Frequency Hopping Spread Spect...Sistemas de Telecomunicações - Aula 11 - FHSS (Frequency Hopping Spread Spect...
Sistemas de Telecomunicações - Aula 11 - FHSS (Frequency Hopping Spread Spect...
 
Glossário de Termos Técnicos em Redes de Computadores
Glossário de Termos Técnicos em Redes de ComputadoresGlossário de Termos Técnicos em Redes de Computadores
Glossário de Termos Técnicos em Redes de Computadores
 
Setup; bios; post.
Setup; bios; post.Setup; bios; post.
Setup; bios; post.
 
Modelo OSI - Camada de Rede
Modelo OSI - Camada de RedeModelo OSI - Camada de Rede
Modelo OSI - Camada de Rede
 
Apresentação sobre ipv6
Apresentação sobre ipv6Apresentação sobre ipv6
Apresentação sobre ipv6
 
Aula 1: Conhecendo o Arduino
Aula 1: Conhecendo o ArduinoAula 1: Conhecendo o Arduino
Aula 1: Conhecendo o Arduino
 

Destaque

DigitalHubGO: Search Engine Optimization - SEM
DigitalHubGO: Search Engine Optimization - SEMDigitalHubGO: Search Engine Optimization - SEM
DigitalHubGO: Search Engine Optimization - SEMAndré de Moraes
 
Condition monitoring case study
Condition monitoring case studyCondition monitoring case study
Condition monitoring case studyjam900
 
Google App Engine e Python
Google App Engine e PythonGoogle App Engine e Python
Google App Engine e PythonPeslPinguim
 
App Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasApp Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasOsvaldo Santana Neto
 
Game Engine Architecture
Game Engine ArchitectureGame Engine Architecture
Game Engine ArchitectureMichel Alves
 
Search Engine Marketing
Search Engine MarketingSearch Engine Marketing
Search Engine MarketingFromDoppler
 
FISL14 - Desmontando uma engine de física
FISL14 - Desmontando uma engine de físicaFISL14 - Desmontando uma engine de física
FISL14 - Desmontando uma engine de físicaAdriano Melo
 
PHPConf2010 - Introdução a Search Engine Optimization
PHPConf2010 - Introdução a Search Engine OptimizationPHPConf2010 - Introdução a Search Engine Optimization
PHPConf2010 - Introdução a Search Engine OptimizationRafael Capucho
 
liquid propellant rocket engine (Motor foguete Liquido) part6
liquid propellant rocket engine (Motor foguete Liquido) part6liquid propellant rocket engine (Motor foguete Liquido) part6
liquid propellant rocket engine (Motor foguete Liquido) part6Edgard Packness
 
Seo - Search Engine Optimization
Seo - Search Engine OptimizationSeo - Search Engine Optimization
Seo - Search Engine OptimizationHeric Tilly
 
Tendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container EngineTendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container EngineDaniel Costa Gimenes
 
Palestra Search Engine Marketing - Com foco nos resultados
Palestra Search Engine Marketing - Com foco nos resultadosPalestra Search Engine Marketing - Com foco nos resultados
Palestra Search Engine Marketing - Com foco nos resultadosECDD Infnet
 
Introdução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosIntrodução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosGabriel Giordano Medina
 
Notifications push avec Android
Notifications push avec AndroidNotifications push avec Android
Notifications push avec AndroidBouhdida Mahmoud
 
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...Michel Azevedo
 
Marketing online, SEM (Search Engine Marketing)
Marketing online, SEM (Search Engine Marketing)Marketing online, SEM (Search Engine Marketing)
Marketing online, SEM (Search Engine Marketing)Fundació Bit
 
Arduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas NuvensArduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas NuvensMarco Antonio Maciel
 
Criando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDKCriando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDKLeonardo Dalmina
 
Clés pour un meilleur référencement - OTC Evreux Normandie
Clés pour un meilleur référencement - OTC Evreux NormandieClés pour un meilleur référencement - OTC Evreux Normandie
Clés pour un meilleur référencement - OTC Evreux NormandieMarion Hossin Vuillermoz
 

Destaque (20)

DigitalHubGO: Search Engine Optimization - SEM
DigitalHubGO: Search Engine Optimization - SEMDigitalHubGO: Search Engine Optimization - SEM
DigitalHubGO: Search Engine Optimization - SEM
 
Condition monitoring case study
Condition monitoring case studyCondition monitoring case study
Condition monitoring case study
 
Google App Engine e Python
Google App Engine e PythonGoogle App Engine e Python
Google App Engine e Python
 
App Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasApp Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horas
 
Game Engine Architecture
Game Engine ArchitectureGame Engine Architecture
Game Engine Architecture
 
Roary Samsam
Roary SamsamRoary Samsam
Roary Samsam
 
Search Engine Marketing
Search Engine MarketingSearch Engine Marketing
Search Engine Marketing
 
FISL14 - Desmontando uma engine de física
FISL14 - Desmontando uma engine de físicaFISL14 - Desmontando uma engine de física
FISL14 - Desmontando uma engine de física
 
PHPConf2010 - Introdução a Search Engine Optimization
PHPConf2010 - Introdução a Search Engine OptimizationPHPConf2010 - Introdução a Search Engine Optimization
PHPConf2010 - Introdução a Search Engine Optimization
 
liquid propellant rocket engine (Motor foguete Liquido) part6
liquid propellant rocket engine (Motor foguete Liquido) part6liquid propellant rocket engine (Motor foguete Liquido) part6
liquid propellant rocket engine (Motor foguete Liquido) part6
 
Seo - Search Engine Optimization
Seo - Search Engine OptimizationSeo - Search Engine Optimization
Seo - Search Engine Optimization
 
Tendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container EngineTendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container Engine
 
Palestra Search Engine Marketing - Com foco nos resultados
Palestra Search Engine Marketing - Com foco nos resultadosPalestra Search Engine Marketing - Com foco nos resultados
Palestra Search Engine Marketing - Com foco nos resultados
 
Introdução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosIntrodução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de Jogos
 
Notifications push avec Android
Notifications push avec AndroidNotifications push avec Android
Notifications push avec Android
 
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
 
Marketing online, SEM (Search Engine Marketing)
Marketing online, SEM (Search Engine Marketing)Marketing online, SEM (Search Engine Marketing)
Marketing online, SEM (Search Engine Marketing)
 
Arduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas NuvensArduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas Nuvens
 
Criando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDKCriando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDK
 
Clés pour un meilleur référencement - OTC Evreux Normandie
Clés pour un meilleur référencement - OTC Evreux NormandieClés pour un meilleur référencement - OTC Evreux Normandie
Clés pour un meilleur référencement - OTC Evreux Normandie
 

Semelhante a Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)

Palestra Introdução ao Game Design
Palestra Introdução ao Game DesignPalestra Introdução ao Game Design
Palestra Introdução ao Game DesignLeonardo Zamprogno
 
A importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisA importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisKelvin Oliveira
 
Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2Fabio Moura Pereira
 
Horizon chase: Design para multiplayer local
Horizon chase: Design para multiplayer localHorizon chase: Design para multiplayer local
Horizon chase: Design para multiplayer localBruno Ferreira
 
Palestra Game Design
Palestra Game DesignPalestra Game Design
Palestra Game Designvincevader
 
É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?José Farias
 
Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1Fabio Moura Pereira
 
Introdução às Game Engines
Introdução às Game Engines Introdução às Game Engines
Introdução às Game Engines Jerry Medeiros
 
Introdução sobre desenvolvimento de games
Introdução sobre desenvolvimento de gamesIntrodução sobre desenvolvimento de games
Introdução sobre desenvolvimento de gamesRodrigo Rodrigues
 
Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013José Farias
 
Evolução dos games e introdução ao desenvolvimento com unity
Evolução dos games e introdução ao desenvolvimento com unityEvolução dos games e introdução ao desenvolvimento com unity
Evolução dos games e introdução ao desenvolvimento com unityAnderson Molina
 
Palestra (2009) - Introdução ao Desenvolvimento de Jogos
Palestra (2009) - Introdução ao Desenvolvimento de JogosPalestra (2009) - Introdução ao Desenvolvimento de Jogos
Palestra (2009) - Introdução ao Desenvolvimento de JogosKleber de Oliveira Andrade
 
Curso (2010) - Desenvolvimento de Jogos 2D com XNA
Curso (2010) - Desenvolvimento de Jogos 2D  com XNACurso (2010) - Desenvolvimento de Jogos 2D  com XNA
Curso (2010) - Desenvolvimento de Jogos 2D com XNAKleber de Oliveira Andrade
 

Semelhante a Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos) (20)

Comparativo entre Engines de Jogos em 3d
Comparativo entre Engines de Jogos em 3dComparativo entre Engines de Jogos em 3d
Comparativo entre Engines de Jogos em 3d
 
Projeto de Jogos
Projeto de JogosProjeto de Jogos
Projeto de Jogos
 
Palestra Introdução ao Game Design
Palestra Introdução ao Game DesignPalestra Introdução ao Game Design
Palestra Introdução ao Game Design
 
A importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisA importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos Digitais
 
Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2Desenvolvimento de Jogos - Mercado Parte 2
Desenvolvimento de Jogos - Mercado Parte 2
 
Curso Dia 02
Curso Dia 02Curso Dia 02
Curso Dia 02
 
Horizon chase: Design para multiplayer local
Horizon chase: Design para multiplayer localHorizon chase: Design para multiplayer local
Horizon chase: Design para multiplayer local
 
Palestra Game Design
Palestra Game DesignPalestra Game Design
Palestra Game Design
 
É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?É Hora de criar sua própria engine de jogos?
É Hora de criar sua própria engine de jogos?
 
Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1Desenvolvimento de Jogos - Mercado Parte 1
Desenvolvimento de Jogos - Mercado Parte 1
 
Introdução às Game Engines
Introdução às Game Engines Introdução às Game Engines
Introdução às Game Engines
 
Introdução sobre desenvolvimento de games
Introdução sobre desenvolvimento de gamesIntrodução sobre desenvolvimento de games
Introdução sobre desenvolvimento de games
 
Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013Playstation Mobile - Campus Party 2013
Playstation Mobile - Campus Party 2013
 
Inteligência Artificial em Jogos
Inteligência Artificial em JogosInteligência Artificial em Jogos
Inteligência Artificial em Jogos
 
Roadshow Canal AMD
Roadshow Canal AMDRoadshow Canal AMD
Roadshow Canal AMD
 
Evolução dos games e introdução ao desenvolvimento com unity
Evolução dos games e introdução ao desenvolvimento com unityEvolução dos games e introdução ao desenvolvimento com unity
Evolução dos games e introdução ao desenvolvimento com unity
 
Palestra (2009) - Introdução ao Desenvolvimento de Jogos
Palestra (2009) - Introdução ao Desenvolvimento de JogosPalestra (2009) - Introdução ao Desenvolvimento de Jogos
Palestra (2009) - Introdução ao Desenvolvimento de Jogos
 
Curso (2010) - Desenvolvimento de Jogos 2D com XNA
Curso (2010) - Desenvolvimento de Jogos 2D  com XNACurso (2010) - Desenvolvimento de Jogos 2D  com XNA
Curso (2010) - Desenvolvimento de Jogos 2D com XNA
 
Curso Unity3D
Curso Unity3DCurso Unity3D
Curso Unity3D
 
Inteligência Artificial em Jogos
Inteligência Artificial em JogosInteligência Artificial em Jogos
Inteligência Artificial em Jogos
 

Mais de Fabio Moura Pereira

05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - IFabio Moura Pereira
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - IIFabio Moura Pereira
 
Aula de Prolog 08 - Unificação
Aula de Prolog 08 - UnificaçãoAula de Prolog 08 - Unificação
Aula de Prolog 08 - UnificaçãoFabio Moura Pereira
 
Aula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de DadosAula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de DadosFabio Moura Pereira
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIFabio Moura Pereira
 
Programação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IProgramação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IFabio Moura Pereira
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaFabio Moura Pereira
 
Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - IntroduçãoFabio Moura Pereira
 
Aula Interface Gráfica do Usuário
Aula Interface Gráfica do UsuárioAula Interface Gráfica do Usuário
Aula Interface Gráfica do UsuárioFabio Moura Pereira
 

Mais de Fabio Moura Pereira (20)

Haskell - Introdução
Haskell - IntroduçãoHaskell - Introdução
Haskell - Introdução
 
05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - I
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
 
Aula de Prolog 08 - Unificação
Aula de Prolog 08 - UnificaçãoAula de Prolog 08 - Unificação
Aula de Prolog 08 - Unificação
 
Aula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de DadosAula de Prolog 07 - Estruturas de Dados
Aula de Prolog 07 - Estruturas de Dados
 
Aula Prolog 09 - Listas
Aula Prolog 09 - ListasAula Prolog 09 - Listas
Aula Prolog 09 - Listas
 
Aula de Prolog 06 - Recursão
Aula de Prolog 06 - RecursãoAula de Prolog 06 - Recursão
Aula de Prolog 06 - Recursão
 
Aula Prolog - 05
Aula Prolog - 05Aula Prolog - 05
Aula Prolog - 05
 
Prolog 04 - Regras
Prolog 04 - RegrasProlog 04 - Regras
Prolog 04 - Regras
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
 
Aula Prolog 03
Aula Prolog 03Aula Prolog 03
Aula Prolog 03
 
Aula Prolog 02
Aula Prolog 02Aula Prolog 02
Aula Prolog 02
 
Aula Prolog 01
Aula Prolog 01Aula Prolog 01
Aula Prolog 01
 
Programação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IProgramação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte I
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e Concorrência
 
Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - Introdução
 
Aula Persistência 01 (Java)
Aula Persistência 01 (Java)Aula Persistência 01 (Java)
Aula Persistência 01 (Java)
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
Aula Interface Gráfica do Usuário
Aula Interface Gráfica do UsuárioAula Interface Gráfica do Usuário
Aula Interface Gráfica do Usuário
 
Aula Java Swing
Aula Java SwingAula Java Swing
Aula Java Swing
 

Último

Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptxMarlene Cunhada
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasrfmbrandao
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*Viviane Moreiras
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...SileideDaSilvaNascim
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Centro Jacques Delors
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...marcelafinkler
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxFlviaGomes64
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfJuliana Barbosa
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfAutonoma
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)Centro Jacques Delors
 

Último (20)

Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 

Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)

  • 1. Arquitetura de Motores de Jogos Fábio Moura fabio.mpereira@uesb.edu.br
  • 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?
  • 6. MOTORES DE JOGOS DESENVOLVIMENTO DE JOGOS
  • 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
  • 14. CARACTERÍSTICAS DE GÊNEROS DE JOGOS DESENVOLVIMENTO DE JOGOS
  • 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
  • 18. Unreal Engine Gears of War – Third Person Shooter by Epic Games
  • 19. Unreal Engine Grimm – Jogo de Aventura By Spicy Horse
  • 20. Unreal Engine Speed Star – Jogo de Corridas Futurista by Acro Games
  • 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
  • 25. Jogos de Plataforma e Outros em Terceira Pessoa Donkey Kong
  • 26. Jogos de Plataforma e Outros em Terceira Pessoa Donkey Kong Crach Bandicoot
  • 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
  • 36. Jogos de Corrida Gran Turismo
  • 37. Jogos de Corrida Gran Turismo Cruisin’ USA
  • 38. Jogos de Corrida Gran Turismo Cruisin’ USA Need for Speed
  • 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.
  • 42. Estratégia em Tempo Real Dune II
  • 43. Estratégia em Tempo Real Dune II Warcraft
  • 44. Estratégia em Tempo Real Dune II Warcraft Age of Empires
  • 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
  • 49. Massively Multiplayer Online Games (MMOG) World of Warcraft
  • 50. Massively Multiplayer Online Games (MMOG) World of Warcraft Star Wars Galaxies
  • 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
  • 52. MERCADO DE MOTORES DE JOGOS DESENVOLVIMENTO DE JOGOS
  • 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
  • 55. Medal of Honor: Pacific Assault
  • 56. Medal of Honor: Pacific Assault
  • 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
  • 64. XNA Game Studio da Microsoft
  • 65. XNA Game Studio da Microsoft
  • 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
  • 72. Unity
  • 73. Unity
  • 74. Unity
  • 75. Unity
  • 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
  • 80. ARQUITETURA DE MOTORES DE JOGOS DESENVOLVIMENTO DE JOGOS
  • 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.
  • 124. FERRAMENTAS E LINHA DE PRODUÇÃO DE RECURSOS DESENVOLVIMENTO DE JOGOS
  • 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.
  • 126. Ferramentas para Criação de Conteúdo Digital
  • 127. Ferramentas para Criação de Conteúdo Digital
  • 128. Ferramentas para Criação de Conteúdo Digital
  • 129. Ferramentas para Criação de Conteúdo Digital
  • 130. Mundo do Jogo Objetos Objetos Objetos Modelos de Objetos Animações Materiais Texturas Sistema de Partículas Banco de Sons
  • 131. Arquitetura de Motores de Jogos Fábio Moura fabio.mpereira@uesb.edu.br