SlideShare une entreprise Scribd logo
1  sur  131
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Refresh what you know about AssetDatabase.Refresh()- Unite Copenhagen 2019
Refresh what you know about AssetDatabase.Refresh()- Unite Copenhagen 2019Refresh what you know about AssetDatabase.Refresh()- Unite Copenhagen 2019
Refresh what you know about AssetDatabase.Refresh()- Unite Copenhagen 2019Unity Technologies
 
Initial Architectural Design (Game Architecture)
Initial Architectural Design (Game Architecture)Initial Architectural Design (Game Architecture)
Initial Architectural Design (Game Architecture)Rajkumar Pawar
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect AndromedaElectronic Arts / DICE
 
Initial design (Game Architecture)
Initial design (Game Architecture)Initial design (Game Architecture)
Initial design (Game Architecture)Rajkumar Pawar
 
Mobile Game Development in Unity
Mobile Game Development in UnityMobile Game Development in Unity
Mobile Game Development in UnityHakan Saglam
 
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"Ryo Suzuki
 
Optimizing the graphics pipeline with compute
Optimizing the graphics pipeline with computeOptimizing the graphics pipeline with compute
Optimizing the graphics pipeline with computeWuBinbo
 
Game Development with Unity
Game Development with UnityGame Development with Unity
Game Development with Unitydavidluzgouveia
 
전투 시스템 기획(Canvas 스터디 1차)
전투 시스템 기획(Canvas 스터디 1차)전투 시스템 기획(Canvas 스터디 1차)
전투 시스템 기획(Canvas 스터디 1차)Chanman Jo
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>エピック・ゲームズ・ジャパン Epic Games Japan
 
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプラインRYUTARO OSAFUNE
 
Game playing in artificial intelligent technique
Game playing in artificial intelligent technique Game playing in artificial intelligent technique
Game playing in artificial intelligent technique syeda zoya mehdi
 
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...Gerke Max Preussner
 
Debugging with EMUX - RIngzer0 BACK2WORKSHOPS
Debugging with EMUX - RIngzer0 BACK2WORKSHOPSDebugging with EMUX - RIngzer0 BACK2WORKSHOPS
Debugging with EMUX - RIngzer0 BACK2WORKSHOPSSaumil Shah
 
Optimize your game with the Profile Analyzer - Unite Copenhagen 2019
Optimize your game with the Profile Analyzer - Unite Copenhagen 2019Optimize your game with the Profile Analyzer - Unite Copenhagen 2019
Optimize your game with the Profile Analyzer - Unite Copenhagen 2019Unity Technologies
 
UniRx - Reactive Extensions for Unity(EN)
UniRx - Reactive Extensions for Unity(EN)UniRx - Reactive Extensions for Unity(EN)
UniRx - Reactive Extensions for Unity(EN)Yoshifumi Kawai
 
06. Game Architecture
06. Game Architecture06. Game Architecture
06. Game ArchitectureAmin Babadi
 
Introduction to Game Engine: Concepts & Components
Introduction to Game Engine: Concepts & ComponentsIntroduction to Game Engine: Concepts & Components
Introduction to Game Engine: Concepts & ComponentsPouya Pournasir
 
Taking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationTaking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationGuerrilla
 

Tendances (20)

Refresh what you know about AssetDatabase.Refresh()- Unite Copenhagen 2019
Refresh what you know about AssetDatabase.Refresh()- Unite Copenhagen 2019Refresh what you know about AssetDatabase.Refresh()- Unite Copenhagen 2019
Refresh what you know about AssetDatabase.Refresh()- Unite Copenhagen 2019
 
Initial Architectural Design (Game Architecture)
Initial Architectural Design (Game Architecture)Initial Architectural Design (Game Architecture)
Initial Architectural Design (Game Architecture)
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
 
Initial design (Game Architecture)
Initial design (Game Architecture)Initial design (Game Architecture)
Initial design (Game Architecture)
 
Mobile Game Development in Unity
Mobile Game Development in UnityMobile Game Development in Unity
Mobile Game Development in Unity
 
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
CG 論文講読会 2013/2/12 "A reconstruction filter for plausible motion blur"
 
Optimizing the graphics pipeline with compute
Optimizing the graphics pipeline with computeOptimizing the graphics pipeline with compute
Optimizing the graphics pipeline with compute
 
Game Development with Unity
Game Development with UnityGame Development with Unity
Game Development with Unity
 
전투 시스템 기획(Canvas 스터디 1차)
전투 시스템 기획(Canvas 스터디 1차)전투 시스템 기획(Canvas 스터디 1차)
전투 시스템 기획(Canvas 스터디 1차)
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1 <Shader Compile, PSO Cache編>
 
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン
【CEDEC2014】アセットパイプラインを構築する上で重要な事~映像業界⇔ゲーム業界双方の視点から見た本質的なパイプライン
 
Game playing in artificial intelligent technique
Game playing in artificial intelligent technique Game playing in artificial intelligent technique
Game playing in artificial intelligent technique
 
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DDUE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
 
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
 
Debugging with EMUX - RIngzer0 BACK2WORKSHOPS
Debugging with EMUX - RIngzer0 BACK2WORKSHOPSDebugging with EMUX - RIngzer0 BACK2WORKSHOPS
Debugging with EMUX - RIngzer0 BACK2WORKSHOPS
 
Optimize your game with the Profile Analyzer - Unite Copenhagen 2019
Optimize your game with the Profile Analyzer - Unite Copenhagen 2019Optimize your game with the Profile Analyzer - Unite Copenhagen 2019
Optimize your game with the Profile Analyzer - Unite Copenhagen 2019
 
UniRx - Reactive Extensions for Unity(EN)
UniRx - Reactive Extensions for Unity(EN)UniRx - Reactive Extensions for Unity(EN)
UniRx - Reactive Extensions for Unity(EN)
 
06. Game Architecture
06. Game Architecture06. Game Architecture
06. Game Architecture
 
Introduction to Game Engine: Concepts & Components
Introduction to Game Engine: Concepts & ComponentsIntroduction to Game Engine: Concepts & Components
Introduction to Game Engine: Concepts & Components
 
Taking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationTaking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next Generation
 

En vedette

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
 

En vedette (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
 

Similaire à Arquitetura Motores 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
 

Similaire à Arquitetura Motores Jogos (20)

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
 
Apresentação TCC Games
Apresentação TCC GamesApresentação TCC Games
Apresentação TCC Games
 

Plus 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
 

Plus 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
 

Dernier

LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.HildegardeAngel
 
Linguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLinguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLaseVasconcelos1
 
Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?MrciaRocha48
 
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptx
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptxQUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptx
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptxAntonioVieira539017
 
O guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfO guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfErasmo Portavoz
 
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdfProfGleide
 
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptTREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptAlineSilvaPotuk
 
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...nexocan937
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxacaciocarmo1
 
Junto ao poço estava eu Quando um homem judeu Viu a sede que havia em mim
Junto ao poço estava eu Quando um homem judeu Viu a sede que havia em mimJunto ao poço estava eu Quando um homem judeu Viu a sede que havia em mim
Junto ao poço estava eu Quando um homem judeu Viu a sede que havia em mimWashingtonSampaio5
 
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxPOETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxJMTCS
 
Mini livro sanfona - Diga não ao bullying
Mini livro sanfona - Diga não ao  bullyingMini livro sanfona - Diga não ao  bullying
Mini livro sanfona - Diga não ao bullyingMary Alvarenga
 
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZA
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZAAVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZA
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZAEdioFnaf
 
Orientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxOrientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxJMTCS
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxconcelhovdragons
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...Martin M Flynn
 
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...LuizHenriquedeAlmeid6
 
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptxSlides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptxLuizHenriquedeAlmeid6
 
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxFree-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxkarinasantiago54
 
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbyasminlarissa371
 

Dernier (20)

LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
 
Linguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLinguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdf
 
Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?
 
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptx
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptxQUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptx
QUIZ – GEOGRAFIA - 8º ANO - PROVA MENSAL.pptx
 
O guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfO guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdf
 
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do  3ANO fundamental 1 MG.pdfPLANEJAMENTO anual do  3ANO fundamental 1 MG.pdf
PLANEJAMENTO anual do 3ANO fundamental 1 MG.pdf
 
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.pptTREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
TREINAMENTO - BOAS PRATICAS DE HIGIENE NA COZINHA.ppt
 
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
Minha Luta (Mein Kampf), A História do País que Lutou contra a União Soviétic...
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptx
 
Junto ao poço estava eu Quando um homem judeu Viu a sede que havia em mim
Junto ao poço estava eu Quando um homem judeu Viu a sede que havia em mimJunto ao poço estava eu Quando um homem judeu Viu a sede que havia em mim
Junto ao poço estava eu Quando um homem judeu Viu a sede que havia em mim
 
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptxPOETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
POETAS CONTEMPORANEOS_TEMATICAS_explicacao.pptx
 
Mini livro sanfona - Diga não ao bullying
Mini livro sanfona - Diga não ao  bullyingMini livro sanfona - Diga não ao  bullying
Mini livro sanfona - Diga não ao bullying
 
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZA
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZAAVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZA
AVALIAÇÃO INTEGRADA 1ª SÉRIE - EM - 1º BIMESTRE ITINERÁRIO CIÊNCIAS DAS NATUREZA
 
Orientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxOrientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptx
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
 
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
 
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptxSlides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
Slides Lição 3, CPAD, O Céu - o Destino do Cristão, 2Tr24,.pptx
 
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxFree-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
 
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 

Arquitetura Motores 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