quarta-feira, 2 de março de 2016

Game Engine: framework para desenvolvimento de jogos digitais

Os jogos digitais são fascinantes porque apresentam a potencialidade de experiência que uma hipermídia pode atualmente oferecer. É um encontro da aplicação do conhecimento de várias áreas como a arte (e neste campo entra a música, cinema e suas outras vertentes); o design e a computação gráfica; bem como o desenvolvimento de software para criar um universo mimético, que copia as características do que conhecemos no mundo físico, ou mesmo um universo imaginário, fantasmagórico. Um mundo onde o limite é uma questão de tempo.

Neste post vamos conhecer os principais motores de jogos, conhecidos também do inglês por game engine. Mas antes de apresentá-los é importante entender o que caracteriza o jogo e suas especificidades no ambiente digital.

O jogo existe muito antes do advento da tecnologia digital, mesmo antes de Aristoteles que viveu de 385-322 a.C. e como algo comum nas civilizações. Em Heródoto, em sua obra “A História”, cita que o povo da Lídia foi o criador dos jogos há cerca de 2500 anos e de alguns elementos como o dado (McGonigal, Jane. Palestra no TED). O jogo, para Aristóteles, além uma forma de preparar a criança para a vida adulta, caracterizava-se também como uma forma de “descanso para o espírito” (CASTRO, Escola Brasil).

Segundo Tracy Fullerton (2008), Gamer Designer e professora da USC (University of Souther California), o jogo é uma forma de interação social, uma forma de entretenimento humano e não é intrínseco a nenhuma tecnologia ou meio, mas à experiência dos jogadores.

O jogo digital permite ir além das regras, permite criar cenários ricos e envolventes. Por meio dos recursos tecnológicos é possível a sensação de imersão no mundo virtual criado. E o digital, por ser um conjunto de zeros e uns, o limite é de fato a criatividade e o desafio constante é criar novas tecnologias e combiná-las de forma que permitam criar as experiências almejadas.

Em um processo de criação e desenvolvimento de um jogo digital, existem as etapas de criação, produção, distribuição e divulgação. No momento de criação é quando são definidos os elementos estruturais, como: narrativa, regras, procedimentos e orçamento.

Na fase de produção, temos a edição de áudio, criação de gráficos, modelagem e animação de objetos e o desenvolvimento.

É importante perceber que o desenvolvimento é uma execução daquilo que foi planejado e produzido em etapas anteriores. Criar um jogo não é algo simples ou rápido. Os jogos triplo A (AAA), que tiveram grandes investimentos de produção, foram desenvolvidos por uma equipe grande de pessoas e, mesmo assim, pode durar anos para chegar à distribuição, ou seja, tornar acessível para as pessoas jogarem a versão final.

Se a boa experiência ao jogar e a diversão são premissas para que um jogo seja aceito, muitas vezes os desenvolvedores optam por utilizar um motor de jogo já disponível ou então criar um novo que possua os recursos suficientes para o projeto. Mesmo alguns motores já existentes podem ser modificados em seu código fonte para adaptar os recursos ao projeto. Para que essa decisão seja tomada, é importante conhecer os recursos existentes e o justificaria o desenvolvimento de um novo motor de jogos, visto que torna o custo mais elevado e o tempo mais demorado para a produção do jogo.

Mas o que é um motor de jogos? Quais são suas características?

Podemos considerar um motor de jogos um framework, ou seja, um sistema estrutural que permite a criação e desenvolvimento de jogos.



Segundo Roberts e Johnson, professores da Universidade de Illinois, frameworks são projetos reutilizáveis. Representam o todo ou parte de um sistema de software descrito por uma série de classes abstratas e da forma que suas instâncias colaboram uma com as outras. Um bom framework pode reduzir o custo de desenvolvimento de uma aplicação por ordem de magnitude porque ele permite reusar o design e o código. Não requer novas tecnologias porque pode ser implementado com as linguagens de programação orientadas a objeto existentes.

Do inglês:
Frameworks are reusable designs of all or part of a software system described by a set of abstract classes and the way instances of those classes collaborate. A good framework can reduce the cost of developing an application by an order of magnitude because it lets you reuse both design and code. They do not require new technology, because they can be implemented with existing object-oriented programming languages. (Don Roberts, Ralph Johnson, disponível em http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/frame/evolve.html)

Para Jacques Sauvé, professor da UFCG, um framework dever ser reusável. Para isso ele tem que ser bem documentado, fácil de usar e deve ser extensível. O framework contém funcionalidade abstrata  (sem implementação) que de ser completada. Deve ser de uso seguro, o desenvolvedor de aplicações não pode destruir o framework e deve endereçar o domínio do problema pretendido, no nosso caso, o domínio de jogos digitais.

Para Alan Thorn, desenvolvedor de jogos e autor do livro Game Engine Design and Implementation, arquiteturamente falando, um motor de jogo comum é dividido pelo programador em vários componentes chamados de gerenciadores ou subsistemas e cada gerenciador é responsável por determinadas características relacionadas a uma outra por tipo. Exemplo: o gerenciador de física é responsável por garantir que as leis da física são aplicadas aos objetos do jogo, garantindo que a gravidade puxa os objetos para baixo e pára na superfície; e que a colisão entre objetos são detectados para prevenir que qualquer objeto sólido passe através de paredes ou de outros objetos sólidos cujo comportamento não é o esperado.

Segundo ele, um jogo possui conteúdo que se relaciona com as ferramentas que estão disponíveis no motor do jogo. O motor, por sua vez, é comum que tenha os seguintes subsistemas: gerenciador de áudio, gerenciador de render, gerenciador de entradas, gerenciador de erros, gerenciador de recursos, gerenciador de física, gerenciador de cena e gerenciador de scripting.



Existem vários motores de jogos, como por exemplo: Torque (TGE), Blender, LumberYard, Unreal Engine (UDK), CryEngine e Unity3D.

O Unreal Engine, CryEngine e Unity3D são os principais motores de jogos e possuem algumas funcionalidades específicas. Porém, vale a pena citar que o recente LumberYard da Amazon veio uma abordagem transmídia, que permite criar uma comunidade de fãs, com o recurso de integração com o Twicth, que é um site de streaming de jogos.

1- Unreal Engine

Atualmente está na versão 4. O UDK  (Unreal Development Kit) era a versão gratuita do Unreal Engine 3. Hoje o Unreal Engine 4 é gratuito, sendo pagos apenas comissão em cima da venda dos jogos.

Jogos: Gear of War, X-men Origins
Framework:


2- CryENGINE

O CryENGINE está na versão 3 e não é mais gratuito, para desenvolvedores independentes (Indies) o custo é de R$ 19,90 mensais, porém é royalt-free. É comprado e instalado via Steam, plataforma de comercialização de jogos. Existe uma versão educacional, mas é necessário enviar os dados para verificação.

Jogos: Crysis, Codename Kingdoms, Warface
Framework:


3- Unity3D


O Unity está na versão 5, possui uma versão paga e outra gratuita. A gratuita cobra comissão em cima da venda dos jogos.

Jogos: Deus Ex: The Fall pelo N-Fusion / Eidos Montreal, Chop Chop Runner por Gamerizon e Zombieville USA por Mika Mobile, Inc.

Framework :



Opinar sobre qual dos três games engines é melhor não é tarefa fácil porque depende muito da estrutura do jogo porque tudo depende da estrutura narrativa, regras, procedimentos e orçamento de um jogo.




Compartilhar:

2 comentários: