Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Game Engine Developed: Unreal versão 4. 
Ciro Junior
Mestrado de Sistemas e Computação 
UNIFACS – Universidade Salvador
Salvador – BA 
cirofcjr@gmail.com
Carlos Rogério S. Aristides
Mestrado de Sistemas e Computação 
UNIFACS – Universidade Salvador
Salvador – BA 
rogerio_ti@mn.com
Robson Gonzaga Silva
Mestrado de Sistemas e Computação 
UNIFACS – Universidade Salvador
Salvador – BA 
robsongonzaga_820@yahoo.com.br
RESUMO
Neste trabalho, é apresentada uma visão geral sobre o desenvolvimento de aplicações gráficas interativas em tempo real usando a Unreal Engine 4. Inicialmente, é descrito à arquitetura da ferramenta e as principais características e classes que devem ser implementadas para o desenvolvimento de projetos usando a suíte do Unreal4. Adicionalmente, é detalhado algumas propriedades específicas da Engine Unreal como Blueprint Visual Scripting System e sua aplicação no desenvolvimento e gerenciamento de recursos necessários em aplicações 3D como: Regras de jogo, definição de luz e sombras, sistemas de movimentação, posicionamento de objetos, ângulos de câmera em cenas, elementos e materiais do cenário e procedimentos para a interação entre o usuário e os diferentes objetos inseridos no cenário.
Palavras-Chave: Game Engine; Motor de desenvolvimento de jogos; Unreal. 
ABSTRACT
In this work, an overview is presented on the development of real-time interactive graphical applications using Unreal Engine 4. Initially, it describes the architecture of the tool and the main characteristics and classes that should be implemented for the development of projects using the suite of Unreal4. In addition, we detail some specific properties of Unreal Engine such as Blueprint Visual Scripting System and its application in the development and management of necessary resources in 3D applications such as: Game rules, definition of light and shadows, movement systems, positioning of objects, angles of camera in scenes, elements and materials of the scenario and procedures for the interaction between the user and the different objects inserted in the scenario.
Keywords: Game Engine; Motor de desenvolvimento de jogos; Unreal. 
INTRODUÇÃO
Os jogos digitais tornaram-se muito populares por proporcionar diversão e entretenimento para seus utilizadores. Atualmente possuem milhões de usuários ao redor do mundo com faixa etária bastante variada, englobando desde crianças à adultos. Por esse motivo, o mercado dos jogos digitais vem atraindo cada vez mais desenvolvedores e empresas focados em pesquisas, desenvolvimento e comercialização. 
Devido ao surgimento de novas ferramentas (tais como motores de jogos), o desenvolvimento independentes de jogos vem se tornado uma realidade, e que objetiva simplificar a criação de jogos digitais e gerar concorrência numa área onde o acesso era bastante restrito, principalmente pelos custos operacionais na utilização de programas com propriedade de software.
Nesse contexto os motores de jogos ou Games Engines, são ferramentas que fornecem vários recursos para o desenvolvimento de aplicações 3D como jogos e ambientes de Realidade Virtual. Através dessas Engines é possível a simulação e o gerenciamento de características como simulação de propriedades da física (gravidade, peso, movimentação, velocidade e etc.) do jogo, Inteligência Artificial, aplicação de efeitos de sombra e iluminação, ângulos de câmera de cena e etc. Contudo, novas exigências têm surgido para desenvolvimento de jogos 3D, e a maioria dos motores tem sido desenvolvida para esse fim.
	As Games Engines simplificam o processo de produção ao abstrair toda a complexidade do desenvolvimento das aplicações para os desenvolvedores, proporcionando maior eficiência e produtividade. Uma Game Engine, comporta-se basicamente como uma camada intermediária entre as diferentes plataformas, os vários softwares agregados e o desenvolvedor [MACEDO et al, 2015].
Outra característica importante das Games Engines e a sua abrangência e funcionalidade que de acordo com [MACEDO et al, 2015], não são limitadas “somente ao desenvolvimento de jogos, sendo amplamente usadas para a síntese de uma vasta gama de aplicações gráficas” [MACEDO et al, 2015]. 
Este trabalho tem como objetivo a realização de um estudo bibliográfico sobre a ferramenta de desenvolvimento de jogos, conhecida como “Game Engine”, com ênfase no Unreal 4, apresentando suas principais características e possibilidade de utilização.
MATERIAIS E MÉTODOS
	A presente pesquisa constitui-se de uma revisão da literatura especializada, realizada entre outubro e novembro de 2017, no qual se realizou uma consulta a livros, periódicos e por artigos científicos selecionados através de busca no banco de dados do scielo, na internet, jornais e revistas. 
	Os critérios de inclusão para os estudos encontrados foram a abordagem de pesquisa cientifica dando ênfase às funcionalidades e características do motor de renderização Unreal 4. Foram excluídos os demais motores de renderização existentes.
Além desta Introdução e das Referências, este trabalho está estruturado com as seguintes seções: I – Jogos Eletrônicos; II-Realidade Virtual; III – Desenvolvimento Independente; IV – Unreal 4 e V – Considerações Finais.
JOGOS ELETRÔNICOS
historia
	Desde a civilização da Grécia antiga que as competições e jogos vem sendo realizadas como forma de entretenimento para a humanidade. A origem de tais jogos ocorreu na cidade de Olímpia, uma das cidades-estado da Grécia Antiga (ou Hélade), por volta do século VIII a.C. [FERNANDES, 2017]. 
	No meio eletrônico, os jogos surgem no fim da década de 50, em meados do ano 1958, com o pioneiro Willy com o Jogo Tennis for Two, e este funcionava em um osciloscópio, instrumento utilizado para medir sinais elétricos/eletrônicos que apresentava gráficos bidimensionais. Segundo [BATISTA, 1981], esse jogo foi criado pelo físico Willy Higinbotham e recebeu o nome de Tennis Programing, também conhecido como Tennis for Two. Ele era um jogo muito simples, jogado por meio de um osciloscópio, ilustrado na Figura 1, e processado por um computador analógico.
Figura 1: Osciloscópio [SOUZA e ROCHA, 2005].
	Este jogo era bem simples e simulava um jogo de tênis ou ping pong, mas inspirou muitos outros criadores que atualmente desenvolvem seus jogos para diversas plataformas e não apenas para consoles específicos.
	Em 1961, no Instituto de Tecnologia de Massachusetts, os pesquisadores criaram o jogo Spacewar!, cujo tema era uma guerra espacial, estando o jogador no controle de uma das naves que enfrentava naves inimigas. Esse jogo foi programado em Assembly (nome da linguagem de programação de baixo nível) e executado em um computador DEC – PDP 1 [SOUZA, 2005].
	Em 1971, surgiu o primeiro console da história, Nolan Bushbell desenvolveu uma nova versão de Spacewar!. Esse jogo não iria funcionar em um console, e sim em uma máquina que recebeu o nome de Computer Space, conhecida como o primeiro fliperama da história. Esse arcade vinha com um monitor acoplado e controles analógicos fixos para dois jogadores [SOUZA, 2005].
	Em 1972, foi lançado o primeiro jogo criado pela Atari, o Pong. Este jogo fez muito sucesso por causa de sua simplicidade e sua “jogabilidade”, ou seja, era fácil e intuitivo de se jogar, agradando, assim, a todo o público [CLUA, 2005].
	A partir de então os consoles e jogos foram se aperfeiçoando nas décadas seguintes ate que em 1993, a SEGA lançou o Virtua Fighter (Figura 2). Esse jogo foi uma revolução, pois utilizou um modelo de animação por objetos tridimensionais. Construções poligonais foram animadas levando em consideração a massa e a aceleração em tempo real de processamento. Como foram popularizados os recursos gráficos de gerenciamento geométrico e das placas de processamento gráfico, os jogos 3D foram adotados de forma unânime na produção.
Figura 2: Virtua Fighter [CLUA e BITTENCOURT, 2005].
	
	Os jogos eletrônicos estão em uma fase que vai além do entretenimento,eles também estão movimentando a economia e as empresas do ramo, tende registrado alta no crescimento nos últimos anos. Em janeiro de 2017 registrou um crescimento de 10% se comparado ao mesmo período de 2016. 
	Para este mercado crescente, faz-se necessário ferramentas com grande poder de criação e desenvolvimento para agilizar a produção de jogos eletrônicos mais atrativos e com gráficos mais realísticos, como são os jogos 3D ou em Realidade Virtual ou Avançada. Desta forma, surge a necessidade da utilização de um “Game Engine”. Na seção IV apresentaremos o Unreal 4, software do ramo que se destacou neste cenário.
REALIDADE VIRTUAL
	O termo Realidade Virtual (RV) foi inventado no final da década de 1980 por Jaron Lanier, cientista da computação e artista que conseguiu afluir dois conceitos antagônicos em um novo conceito diferenciando assim as simulações tradicionais feitas por computador de simulações envolvendo múltiplos usuários em um ambiente compartilhado [ARAÚJO, 1996]. Para [PIMENTA, 1995] afirma que a Realidade Virtual (RV) é o uso de alta tecnologia para convencer o usuário de que ele se encontra em outra realidade, provocando o seu envolvimento por completo.
	Outra definição é o uso de computadores e interfaces com o usuário para criar o efeito de mundos tridimensionais que incluem objetos interativos com uma forte sensação de presença tridimensional [BRYSON, 1996].
	A interface designa um dispositivo que garante a comunicação entre dois sistemas informáticos distintos ou um sistema informático e uma rede de comunicação. Nesta acepção do termo, a interface efetua essencialmente operações de transcodificação e de administração dos fluxos de informação [LÉVY, 1996].
	A realidade virtual busca garantir que o usuário se sinta imerso e possa interagir com o ambiente virtual, as tecnologias de entrada e saída de dados à RV objetivam estimular, eficientemente, a maior quantidade de sentidos e capturar com fidelidade os movimentos dos usuários.
DESENVOLVIMENTO INDEPENDENTE
	O avanço da computação nas décadas de 70 e 80 possibilitou trazer aos lares os computadores pessoais [BENIN, 2007], sendo assim as pessoas deixaram de ser apenas um consumidor e adotaram postura mais técnica e entusiasta. Nesse sentido, a computação pessoal levou à possibilidade de desenvolvimento de jogos eletrônicos que poderiam ser compartilhados e produzidos entre os usuários iniciantes como hobby.
	Outra barreira que vem sendo superada, está relacionada aos custos de implantação da tecnologia de Realidade Virtual (RV) que era proibitivo por muitos anos. Pois segundo [MACHADO, 1995], esta tecnologia existe há mais de duas décadas. O avanço tecnológico e o crescimento da indústria de computadores fizeram com que a RV deixasse de ser viável apenas para as grandes empresas e instituições de pesquisa. Atualmente, é possível encontrar software e hardware de baixo custo para o desenvolvimento de aplicações baseadas nesta tecnologia, que permite simular situações reais em um computador, podendo levar o usuário à sensação de “estar em outro lugar”.
	Segundo [LEMES, 2009] o desenvolvimento independente de jogos pode ser caracterizado por pequenos projetos, individuais ou constituído por equipes reduzidas de pessoas, cujo foco é o desenvolvimento por pura paixão ou com pretensões de se seguir a carreira no desenvolvimento de jogos a longo prazo. Outra característica é o desenvolvimento com baixo ou nenhum orçamento e até mesmo sem aportes financeiros de grandes empresas.
	Da mesma forma que os filmes de classe independente, o desenvolvedor independente hoje, preocupa-se menos com os aspectos tecnológicos, que encarece a produção e mais com os aspectos criativos do game [MACHADO, 1995]. Isso gera uma liberdade artística e criativa que em muitos casos falta em empresas que criam jogos com alto orçamento. A exemplo disso, o desenvolvimento independente trouxe à tona o saudosismo dos jogos 2D com aplicativos retrôs sob os paradigmas da tecnologia atual, ato que permitiu explorar novas formas criativas de se desenvolver jogos que por muito tempo não houve tal prática em empresas de porte maior.
UNREAL 4
Historia
	Segundo [DIAS, 2017], o Unreal teve sua primeira versão lançada em 1998, foi criada pela Epic Games, que em 1991 foi fundada originalmente sob o nome Potomac Computer Systems. Até o lançamento da engine, a empresa havia desenvolvido diversos jogos sob licença shareware, modelo no qual o jogador pode utilizar alguns recursos de um software gratuitamente, podendo pagar para ter acesso ao programa ou jogo completo.
	A Unreal foi utilizada pela primeira vez na criação do jogo de tiro em primeira pessoa (FPS) chamado Unreal.
Segundo [DIAS, 2017], na primeira versão, a Unreal 1, o programa trazia recursos para renderizar, detectar colisões, inteligência artificial, sistema de redes e sistema de arquivos. O que fez com que a engine se popularizasse nessa primeira versão foi seu suporte a uma linguagem para scripts, além de um sistema de cliente-servidor.
	Já a Unreal 2, lançada em 2002, teve seu código de sistema de renderização reescrito, além de ter acrescentado um level editor, a Unreal Ed. 2, e suporte para Dream Cast, PlayStation 2, Game Cube e Xbox [DIAS, 2017].
	A terceira versão (Unreal 3) da Game Engine teve sua estreia no jogo Gears of War, em 2005. Além dos sistemas já mencionados, o programa também acrescentou suporte para PlayStation 3, Xbox 360 e Wii [DIAS, 2017] e ganhou uma série de efeitos gráficos e recursos devido a parcerias feitas com empresas como NVidia.
	E mais de dez anos depois, em 19 de março de 2014, a mais recente versão do programa foi lançada, trazendo uma série de novidades interessantes, como o suporte à última geração de consoles, PCs e dispositivos Android. Um dos maiores destaques da Unreal Engine 4 foi seu sistema de iluminação global ampliada utilizando voxel cone tracing. Além disso, houve uma troca de algoritmo para que o programa não consuma tantos recursos do computador e prejudique seu funcionamento quando o jogo estiver em execução [DIAS, 2017].
Aplicação
	Segundo [MACEDO et al, 2015] a Engine Unreal 4 (UE4) é uma suíte completa que contempla desde ferramentas para o desenvolvimento de jogos 2D e 3D para dispositivos móveis até simuladores realistas e aplicações de realidade virtual. A UE4 também é multiplataforma, possibilitando a implementação de soluções para diferentes plataformas: Windows, MacOS, Linux, Xbox, Playstation, Steam OS, Android, iOS, etc. Oferece a alternativa de uso da Blueprint Scripting Language, porém, por ter um nível de abstração mais alto, produz uma sobrecarga computacional significativa em comparação ao uso do C++, sendo aproximadamente 10 vezes mais lenta. 
Características
	Uma característica interessante do Unreal é que possui um editor visual completo que permite ao desenvolvedor concentrar todo o processo produtivo em uma única ferramenta. Além disso, a Unreal Development Kit (UDK) introduz um sistema de programação baseado em um script próprio chamado Unreal Script.
	Dentre suas funcionalidades, podemos destacar: Cascade Visual Effects, para efeitos de partícula, incluindo volume e sombra; Material Pipeline, para a programação de materiais; Persona Animation, para o gerenciamento das animações, além de gerar um mecanismo eficiente para a programação de grafos da animação; Matinee Cinematics, para a produção de cutscenes ou filmes; Terrain & Foliage, para a modelagem de terrenos e flora; Realtime Debugging, para a depuração visual, em tempo de execução, das ferramentas integradas à suíte; e suporte ao PhysX em seu sistema de física, incluindo objetos articulados, simulação de tecidos e corpos rígidos, etc [MACEDO et al, 2015].
Plataformas
	A Unreal Engine permite criar jogos praticamente para todas as plataformas: desde smartphones até consoles e aparelhos que exploram a realidade virtual. Conforme podemos verificar abaixo alguns dos sistemas suportados [DIAS, 2017]:
Microsoft Windows, Linux e Mac OS
Dreamcast
GameCubeWii
Wii U
Xbox
Xbox 360
Xbox One
PlayStation 2
PlayStation 3
Playstation 4
Requisitos
Recomendações de hardware da Epic Games para começar a desenvolver jogos com a Unreal Engine 4 [DIAS, 2017].
Sistema Operacional: Windows 7 64-bit ou Mac OS X 10.9.2 ou mais atual
Processador: Quad-core Intel ou AMD, 2.5 GHz ou superior
Placa de vídeo: NVIDIA GeForce 470 GTX ou AMD Radeon 6870 HD series card ou superior
Memória: 8 GB RAM
Sistema de Renderização da Engine Unreal 4
	O sistema de renderização no Unreal Engine 4 é uma suite nova do DirectX 11 que inclui sombreamento diferido, iluminação global, translucidez de iluminação, e pós-processamento, bem como simulação de partículas GPU utilizando campos de vetores [UNREAL, 2017]. 	
Sombramento Diferido: Essa técnica, efetua em primeiro instante a “extração de alguns dados dos modelos de uma cena (como normais, cor difusa..) e salvá-los em buffers” [PASTOR, 2017]. Ainda de acordo com o autor, posteriormente é realizado o “processo de iluminação sobre estes buffers e finalmente combina-se as informações recém calculadas com as do primeiro passo para obter a imagem final”;
Translucidez de Iluminação: Permite trabalhar efeitos de iluminação em objetos com materiais translúcidos. De acordo com [UNREAL, 2017], esse recurso permite lançar efeitos de sombra e iluminação sobre superfícies opacas e translúcidas e;
Pós-Processamento: A Engine do Unreal 4 oferece uma variedade de efeitos de pós-processamento que possibilitam que os desenvolvedores e designers possam ajustar a aparência geral da cena, como oclusão de ambientes de mapeamento de tons [UNREAL, 2017].
Materiais
	Segundo [UNREAL, 2017] e [GOMES, 2015], “Um material é um ativo que pode ser aplicado a uma malha para controlar a aparência visual da cena”.
	Em termos mais técnicos, basicamente quando a luz é definida em uma cena atinge a superfície de um objeto, um material é utilizado para calcular a interação da luz com a superfície do objeto. Os cálculos são realizados utilizando os dados de entrada do material a partir de várias imagens (texturas), expressões matemáticas e várias configurações de propriedade inerentes ao próprio material [UNREAL, 2017] e [PASTOR, 2017].
	Na Engine do Unreal 4, os materiais não são construídos através de código, eles são definidos através de redes de nós utilizando script visual (chamado de Material Expression) dentro do Material Editor. 
A Figura 3 ilustra a configuração de um script visual para criação de material (tipo e cor).
Figura 3 Script Visual para configuração de material para objetos na Engine do Unreal 4 [UNREAL, 2017].
	Segundo [UNREAL, 2017], o Editor de Materiais é uma interface gráfica que utiliza o conceito de nó e permite a criação de shaders que podem ser aplicados aos objetos dentro da Engine do Unreal.
Iluminação e Cena
	A plataforma Unreal 4 conta com um sistema de iluminação sofisticado e dispõe de 4 tipos de luzes que podem ser definidas em uma cena, são elas: Directional, Point, Spot e Sky. [KARIS, 2013] e [PASTOR, 2017] definem esses tipos de luzes como:
Directional: As luzes direcionais são utilizadas como a principal luz em cenas ao ar livre ou em qualquer cena que necessite da definição de luz externa ou que trabalhe com distâncias infinitas. A Figura 4 ilustra a aplicação do tipo de luz direcional em um acena.
Figura 4 Iluminação do tipo Directional dentro da Engine Unreal 4 [UNREAL, 2017].
Point: As luzes de ponto são tipos clássicos (modelos utilizados para lâmpadas), esse tipo emite luz em todas as direções a partir de um ponto central. A Figura 5 ilustra a aplicação do tipo de luz Point em um acena.
Figura 5 Iluminação do tipo Point dentro da Engine Unreal 4[UNREAL, 2017].
Spot: Esse tipo de iluminação também emite luz em todas as direções, mas possui sua emissão limitada em forma de cone. A Figura 6 ilustra a aplicação do tipo de luz Spot em um acena.
Figura 6 Iluminação do tipo Spot dentro da Engine Unreal 4 [UNREAL, 2017].
Sky: Esse tipo de iluminação capta o fundo da cena e aplica como iluminação de malhas do nível do jogador. A Figura 7 ilustra a aplicação do tipo de luz Skyligth em um acena.
Figura 7 Iluminação do tipo Skyligth dentro da Engine Unreal 4 [UNREAL, 2017]
	Em Unreal 4, existem diversas formas de definir iluminação para a cena, entretanto, algumas propriedades são chaves e tem maior impacto na definição de luzes em uma cena [UNREAL, 2017].
	As características mais relevantes no sistema de iluminação no Unreal 4 são: o posicionamento da luz, a intensidade, sua cor, atenuação, fonte e comprimento. De acordo com [UNREAL, 2017], essas características são definidas da seguinte forma:
Posicionamento: Uma vez que uma luz é adicionada torna-se possível ajustar a posição e rotação da luz usando a posição ( W ) e rotação ( E widgets) como qualquer outro objeto. A Figura 8 ilustra os recursos de posicionamento e rotação de luz. 
Figura 8 Sistema de controle de posicionamento de iluminação da Engine Unreal 4 [UNREAL, 2017].
Intensidade: Determina o nível de energia de saída de uma luz para a cena;
Cor: Ajusta a cor da iluminação em uma cena;
Atenuação: Define o comprimento e objetos afetados pela iluminação da cena, e;
Fonte do Raio e Comprimento: Definem o tamanho dos realces especulares em superfície.
Sistema de Nevoeiro (Fog)
	A partir da versão 4.16 do Engine Unreal, foi implementado suporte para sistema de nevoeiro volumétrico (volumetric fog) em cenas. Este novo método calcula a densidade média e iluminação em cada ponto da câmera da cena, dessa forma trabalha em diferentes densidades e em qualquer número de luzes que afetam o nevoeiro [UNREAL, 2017], [GOMES, 2015] e [KARIS, 2013].
	As propriedades do nevoeiro podem ser configuradas em modo global, onde afeta toda a cena ou em modo local, onde afeta apenas determinados pontos predeterminados da cena.
	A Figura 9 ilustra o sistema de nevoeiro implementado na nova versão do Unreal 4.
Figura 9 Sistema de criação de nevoeiro baseado na luz da cena [UNREAL, 2017].
Sistema de Blueprints
	O script Blueprints é um sistema completo de programação de jogo que utiliza o conceito de interface baseada em nós para criar elementos de jogabilidade dentro do Editor do Unreal [UNREAL, 2017]. Esse processo é semelhante a outras linguagens que utilizam scripts para definir classes de objetos no paradigma Orientado a Objetos (OO). De forma simplificada, pode-se definir o Blueprints como uma forma visual de programação dentro da Engine do Unreal 4, pois aborda conceitos como variáveis, funções, vetores e entre outros recursos utilizados na lógica de programação de qualquer linguagem orientada a objetos (OO).
	Basicamente o Blueprints adiciona roteiros visuais ao game. “Ao ligar os nós e eventos, funções e variáveis com as linhas virtuais, é possível criar elementos de jogabilidade complexos” [UNREAL, 2017].
	De acordo com [MACEDO et al, 2015] e [UNREAL, 2017], esse sistema é extremamente flexível e poderoso, uma vez que proporciona para os designers, a capacidade de utilizar praticamente toda a gama de ferramentas geralmente disponíveis apenas para programadores.
	A Unreal Engine agregou um benefício diferenciado para um grupo mais amplo de desenvolvedores de aplicações gráficas interativas, substituindo o UnrealScript (UDK) pelo Blueprint Visual Script [MACEDO et al, 2015], [UNREAL, 2017] e [KARIS, 2013], uma vez que essa nova interface é voltada para usuários com pouco ou nenhum conhecimentos de programação baseada em código.
	A Figura 10 ilustra respectivamente um script Blueprints gerado definição de controle de jogo utilizando o teclado (W, A, S, D). 
Figura 10 Visualização do Sistema de Script Blueprint para configuração de input (teclado) [GOMES, 2015].
Níveis de Blueprints
	O Nível de Blueprint é um tipo especializado de que atua como um gráfico global de eventos de grande nível. Cada nível do seu projeto tem seu próprio Nível de Blueprint criado por padrão que pode ser editadono Editor de Unreal, entretanto novos Níveis de Blueprints não podem ser criados através da interface do editor [UNREAL, 2017].
	Segundo [UNREAL, 2017], cada jogo pode especificar a classe padrão de Nível Blueprint no arquivo de configuração DefaultGame.ini. Está classe será utilizada para criar níveis de Blueprints para todos os novos mapas do jogo, permitindo adições específicas e funcionalidades.
	A Figura 11, apresenta a tela do editor gráfico para criação e manipulação de níveis de Blueprints na Engine do Unreal 4. 
Figura 11 Editor gráfico de Bluepints [KARIS, 2013].
Configuração de Controles e Interação
	De acordo com [MACEDO et al, 2015], [UNREAL, 2017] e [KARIS, 2013], na plataforma Unreal 4, a modelagem da interatividade e da mecânica da aplicação apresentada é feita via scripts Blueprints, que possibilita a utilização de três tipos de dispositivos de entrada: teclado, mouse e joystick.
	A Engine Unreal 4, trata a entrada de comandos (Input), através de uma classe chamada de PlayerInput (UObject), disponível no PlayerController. Essa classe é responsável pelo tratamento das entradas realizadas pelos usuários.
	Segundo [MACEDO et al, 2015] e [KARIS, 2013] a classe PlayerInput possibilita a criação de dois tipos de mapeamentos de entradas: ActionMappings e AxisMappings, onde:
ActionMapings: Representa as ações referentes as ações de “pressionar e soltar as teclas do teclado e os botões do mouse ou do joystick [MACEDO et al, 2015];
AxisMAppings: Representa a geração de eventos relacionados a todo frame. É utilizado para tipos de entrada nos quais é necessária a verificação de uma variação de valores a todo momento. “A alavanca do joystick é um típico exemplo, já que dependendo da intensidade do movimento, pode-se incrementar a velocidade de um elemento da aplicação” [MACEDO et al, 2015]. 
	
	A Figura 12 ilustra o script Blueprints utilizado para programar o evento de salto duplo no personagem do game, através do pressionar dos botões do controle baseados na classe PlayerInput.
Figura 12 Script Blueprint para configuração de salto duplo de personagem [GOMES, 2015].
Sistema de Movimentação
	A configuração do personagem é definida através de um Blueprit a partir da classe Character. Tal classe já possui “diversos comportamentos de movimentos e física implementada [MACEDO et al, 2015]. 
	A classe Character foi desenvolvida para representar personagens que ser programados para andar, correr, pular, nadar e voar. Essa classe já possui um conjunto de componentes para ajudar neste objetivo [GOMES, 2016].
	De acordo com [UNREAL, 2017] e [GOMES, 2016] Blueprints baseados na classe Character herdam três componentes principais: CapsuleComponent, ArrowComponent, Mesh e CharacterMoviment, onde:
CapsuleComponent: É utilizado para testes de colisão;
ArrowComponent: Indica a direção atual do character;
Mesh: Representação visual de um character;
CharacterMoviment: Define propriedade para os diversos tipos de movimentação (andar, pular, voar e nadar).
	A Figura 13 ilustra a configuração dos componentes de colisão, direcionamento, malha (Mesh) e movimentação de um character do game.
 
Figura 13 Sistema de criação de nevoeiro baseado na luz da cena [UNREAL. 2017].
	Em relação a rotação da câmera do jogo, [MACEDO et al, 2015] afirma que as propriedades que possibilitam essa manipulação são os inputs LookUp e LookRigth que rotacionam, respectivamente o pitch e o yaw da câmera. 
Coordenadas (Locais e de Mundos)
	No Unreal 4 assim como em outras engines de desenvolvimento 3D, o espaço é representado em três eixos: X, Y e Z. Existem diversas formas de organizar esses eixos no espaço, Segundo [UNREAL, 2017], a Unreal Engine usa a forma que segue na Figura 14:
Figura 14 Sistema de coordenadas utilizadas por padrão na Engine Unreal 4 [GOMES, 2015].
	
	As posições no espaço 3D da Unreal Engine são representadas utilizando “um conjunto de valores X, Y e Z, que indica a posição em cada um dos eixos. Estes valores ficam armazenados na variável “Location” de um Ator e são conhecidas como coordenadas de mundo” [UNREAL, 2017] e [GOMES, 2016].
	Os valores das coordenadas (“Locations”) podem ser utilizados e manipulados nos Blueprints, bastando apenas a aplicação de três funções básicas: GetActorLocation, SetActorLocation e AddActorWorldOffset.
GetActorLocation: Retorna à posição atual do ator;
SetActorLocation: Define uma nova posição para o ator, e;
AddActorWorldOffset: Modifica a posição atual do ator de acordo com os parâmetros de Delta Location.
	A Figura 15 ilustra a representação das funções de localização dentro do Blueprint,
Figura 15 Funções de localização da Engine Unreal 4
 [UNREAL, 2017].
	O outro tipo de coordenadas disponível no Unreal Engine são as coordenadas locais. Essas são fazem referência à posição relativa dos objetos. Basicamente um objeto Root determina o posicionamento de outro objeto secundário, onde as coordenadas X, Y e Z desse objeto secundário são dependentes do posicionamento do objeto Root. 
	A Figura 16 ilustra de forma clara o conceito de posicionamento relativo entre os objetos, onde objeto achatado posicionado abaixo é o Root e o objeto acima é o secundário. Nesse exemplo, o posicionamento do Objeto secundário depende e sofre influência do posicionamento do Objeto Root.
	De acordo com [GOMES, 2015], quando o objeto Root tiver o posicionamento alterado, as coordenadas do objeto secundário também serão alteradas de forma relativa ao posicionamento do Root.
Figura 16 Sistema de Posicionamento relativo entre objetos [UNREAL, 2017].
Uma aplicação (número de usuários simultâneos, especificação das transições entre as Cenas, momento do encerramento aplicação, etc.). Essa arquitetura permite o reuso de componentes e mecânicas escolhendo-se o Game Mode, para alterar as regras de funcionamento da aplicação e reutilização destes elementos. A interação com os usuários é feita a partir do Player Controller, o qual é específico de cada Game Mode e obrigatório, mesmo que a aplicação não apresente nenhuma interação específica [LÉVY, 1996].
CONSIDERAÇÕES FINAIS
	Atualmente as pesquisas e investimentos na produção de Games Engines vem aumentando consideravelmente, gerando maior acessibilidade às ferramentas para desenvolvimento de aplicações como jogos 3D e simulação de ambientes de Realidade Virtual. O surgimento e popularização das Games Engines viabilizaram o desenvolvimento de jogos por produtores autônomos, uma vez que tais ferramentas são disponibilizadas com baixo custo ou totalmente grátis.
	Nesse contexto, o mercado de produção de jogos 3D e desenvolvimento de aplicações de Realidade virtual, tem atraído cada vez mais desenvolvedores e pesquisadores, que buscam nas Games Engines, o suporte necessário para a produção de aplicações 3D de forma mais eficiente e com baixo nível de complexidade.
	No contexto das Games Engines, surge como alternativa para os desenvolvedores a suíte Unreal 4, que conta uma poderosa ferramenta para produção de Jogos 3D e aplicações de Ralidade Virtual. O Unreal 4 fornece aos desenvolvedores a possibilidade de produzir aplicações 3D manipulando características (iluminação, sombreamento, inteligência artificial, movimentação, ângulo de câmera e etc.) essenciais para proporcionar uma maior imersão dos jogadores. 
	A Engine mais recente da Epic Games, a Unreal 4, passou a ser distribuída gratuitamente, sendo cobrado porcentagens e taxas apenas em casos de desenvolvimento de aplicações com fins comerciais. Essa estratégia acabou contribuindo para aumentar a popularização da ferramenta na comunidade dos desenvolvedores de aplicações 3D. 
	Fica evidente que o futuro das pesquisas e do mercado voltados para os jogos em 3D e as aplicações de Realidade Virtual, vem avançando rapidamente devido às Games Engines e suas facilidades e observa-se que tais ferramentas continuam em constante evolução focadas em abstrair cada vez mais o nível de complexidade, compatibilidade com diversas plataformas e aintegração com ferramentas externas e outros motores, buscando manter o foco do desenvolvedor na produtividade objetiva das aplicações e aspectos mais centrados em experiência do usuário.
REFERÊNCIAS
[1] MACEDO, Daniel Valente de, SERPA Yvens Rebouças, RODRIGUEs, Maria Andréia Formico. Desenvolvimento de Aplicações Gráficas Interativas com a Unreal Engine 4, 2015.
[2] FERNANDES, Cláudio. "Origem dos Jogos Olímpicos"; Brasil Escola. Disponível em <http://brasilescola.uol.com.br/educacao-fisica/origem-dos-jogos-olimpicos.htm>. Acesso em 30 de outubro de 2017.
[3] BATISTA, Mônica de Lourdes Souza et al. Um estudo sobre a história dos jogos eletrônicos. Revista Eletrônica da Faculdade Metodista Granbery-http://re. granbery. edu. br-ISSN, p. 0377, 1981.
[4] SOUZA, M. V. O., ROCHA, V. M. Um estudo sobre o desenvolvimento de jogos eletrônicos. João Pessoa, 2005.
[5] CLUA, E., BITTENCOURT, J. Desenvolvimento de Jogos 3D: Concepção, Design e Programação. Anais da XXIV Jornada de Atualização em Informática do Congresso da Sociedade Brasileira de Computação, pp. 1313-1356, São Leopoldo, Brasil, Julho de 2005.
[6] ARAÚJO, R. B. Especificação e análise de um sistema distribuído de realidade virtual, São Paulo, Junho, Tese (Doutorado), Departamento de Engenharia de Computação e Sistemas Digitais, Escola Politécnica da Universidade de São Paulo, 1996.
[7] BRYSON, S. Virtual reality in scientific visualization, Communications of the ACM, p. 62-71, vol. 39, n. 5, May,1996.
[8] LÉVY, Pierre. O que é virtual? Trad. Paulo Neves. São Paulo: Ed.34, 1996.
[9] MACHADO, L. S. Conceitos básicos da realidade virtual, Monografia, INPE-5975- PUD/025, Instituto Nacional de Pesquisas Espaciais, São José dos Campos/SP, novembro. Disponível on-line em: http://www.lsi.usp.br/~liliane/conceitosrv.html, 1995. [Acessado 02 Nov. 2017].
[10] DIAS, Rafael. Unreal Engine – Guia Completo para Iniciantes. Disponível em https://producaodejogos.com/unreal-engine/. [Acessado em 02 Nov. 2017].
[11] UNREAL. Unreal Engine. User Guide, 2017. Disponível em: https://docs.unrealengine.com/latest/INT/. [Acesso em 18 de outubro de 2017].
[12] PASTOR, Thiago. D, Diferred Shading Parte1. PontoV, 2017. Disponível em: http://www.pontov.com.br/site/xna/70-shaders/312-deferred-shading-parte-1. [Acesso em 23 de outubro de 2017]. 
[13] GOMES, R, Romero Blueprints. RomeroBlueprints.com, 2015. Disponível em: http://romeroblueprints.blogspot.com.br/. [Acesso em 23 de outubro de 2017].
[14] KARIS, B. Real Shading in Unreal Engine 4. Epic Games, 2013. Disponivel em: https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf. [Acesso em 28 de outubro de 2017].
[15] ZAMBIASI, Saulo Popov; BENIN, Max Ricardo. Proposta de uma Ferramenta Focada no Ensino do Desenvolvimento de Jogos Eletrônicos.

Mais conteúdos dessa disciplina