Frameworks e Engines para desenvolvimento de games.

Publicado dia 01 de Junho de 2020 por Nathan Munis

Dicionário de termos

     O mercado dos jogos tem crescido muito nos últimos anos, consequentemente a produção dos jogos tem se tornado cada vez mais complexas, que demandam muito tempo de desenvolvimento e alta lucratividade. Dessa maneira, começaram a surgir ferramentas que possam otimizar e auxiliar as desenvolvedoras na produção dos seus games, como os FRAMEWORKS e ENGINERS (Motores)

     Frameworks são um conjunto de técnicas, ferramentas ou conceitos pré-definido para resolver um problema de um software ou domínio especifico. São basicamente uma estrutura de trabalho que atua com uma função pré-estabelecida que se adaptam a situação.

     Existem dois tipos de frameworks os “conceituais” que tem como principal objetivo ser uma representação de alto nível do escopo do projeto, seus relacionamentos, propriedades etc. O segundo tipo são os frameworks de implementação que consiste em ser um conjunto de classes abstratas, que possuem funcionalidades genéricas que auxiliam os programadores no desenvolvimento do projeto. Dessa forma, eles ajudam a minimizar a codificação de problemas já solucionados e maximizar a reutilização de código já testado para outros programadores.

     Todos os frameworks possuem um conjunto de métodos e funções bem definidos, para gerenciar o ciclo de vida da aplicação em funcionamento. Os métodos utilizados pelos frameworks para gerenciar tudo isso são: O método de inicializar, Carregar, Atualizar, Renderizar, Descarregar.

     O método INICIALIZAR, inicia todos os recursos necessários para o funcionamento do jogo, recursos de fontes, recursos de áudio e vídeo, listeners de comandos, recursos para renderização na tela e recursos de câmera.

     O método CARREGAR é responsável por carregar as imagens, vídeos, sprites, cenários, áudio etc. Todos esses recursos ficam salvam na memória para posteriormente serem exibido ao jogador.

     O método RENDERIZAR será chamado uma vez por segundo e desenhara na tela todos os objetos dentro do método.

     O método ATUALIZAR é responsável por receber toda a lógica do jogo. Esse método será executado constantemente dentro do looping do jogo, ele que irar exibir cenários, músicas. Além disso, ele irar ficar esperando determinadas comandos do jogador para executar alguma ação, tais como pular, correr, atirar ou interagir com o cenário.

     Por último no método descarregar serão retirados todos os objetos não utilizados pelos métodos de atualizar e renderizar. Isso é feito para alocar espaço na memória visando melhorar a performance do jogo.

     Alguns exemplos de framework de implementação seriam: Corona SDK, onde os desenvolvedores iram escrever o código-fonte em script lua; Cocos2d-x, framework OPENSOURCE onde a linguagem utilizada é o C/C++. Já os frameworks conceituais não existem nenhum que se destaque muito no mercado, mas na literatura existem algumas propostas, como o PLAYEDUC e o JEIS.

     Uma Game enginer (motor de game) é um programa de computador formado por um conjunto de bibliotecas, para criar um nível de abstração na hora do desenvolvimento dos games. Funcionalidades tipicamente fornecida por uma enginer são: Um motor gráfico para renderizar gráficos 2d e ou 3d, um motor de física, suporte a animação, sons, inteligência artificial. Além disso, ele também e responsável pela gerencia de memorias, arquivos, linha de execução e o suporte a uma linguagem de script.

     As enginers normalmente são distribuídas em formas de API, mas as enginers mais conhecida, principalmente pelos desenvolvedores indies, são distribuídas em formas de ferramentas. Essas ferramentas são conhecidas como Middlewere, pelo fato de encapsular em único software diversos softwares. Como exemplos, temos a Unity, CryEnginer, Unreal Engine.

     Uma enginer pode ser divida em dois gêneros: Graphics enginers (Motores gráficos) e Physics enginer (Motores de física). As graphics enginers lidam com os gráficos, sendo responsável em processar todos os dados abstraídos de alto nível (imagens, sprite etc.) e gerar dados de baixo nível que possam ser compreendidos pelos hardwares, alguns exemplos seriam: OGRE, Crystal Space e OpenSceneGraph. Já as physics enginer, são responsáveis em simular as forças do mundo real e ações, através de variáveis como gravidade, massa, atrito, força, colisão. Alguns exemplos seriam: Havok, Bullet, ODE.

     Percebe-se que Frameworks e Enginers são ferramentas com uma grande distinção, mas a principal diferença entre essas tecnologias é que enginers são ferramentas completas, ao contra ponto que frameworks são apenas bibliotecas para um nicho especifico.

     Utilizando uma enginer os desenvolvedores não teriam que se preocupar pra qual plataforma estão desenvolvendo pois a enginer possue suporte para deploy para qualquer plataforma. Além disso, não teriam que se preocupar em qual hardware o jogo irá roda, pois novamente as enginers já possuem suporte para tal problema. Entretanto, ao utilizar um framework o desenvolvedor perde esses benefícios, mas ganham a “liberdade criativa” para construir o seu game, podendo usar os frameworks que lhe convém para lidar com gráficos, física etc, ou até mesmo criar o seu próprio framework. Dessa maneira, o jogo pode ter uma fluidez e performance melhor quando comparada a um enginer.

     Revista Gestão em Foco, FRAMEWORKS PARA DESENVOLVIMENTOS DE JOGOS: UMA ABORDAGEM VANTAJOSA NO DESENVOLVIMENTO DE JOGOS ELETRÔNICOS, - Edição nº 9 – Ano: 2017.

     Oliveira, Rháleff; Cardoso, Rodrigo; Braga, Juliana; Campos, Rafaela (2018), Frameworks para Desenvolvimento de Jogos Educacionais: uma revisão e comparação de pesquisas recentes, Universidade Federal do ABC (UFABC).

     CANTERI, RAFAEL (2019), JEIS - FRAMEWORK CONCEITUAL E FERRAMENTA DE AUTORIA PARA A CONSTRUÇÃO DE JOGOS DIGITAIS PARA EDUCAÇÃO INFANTIL DE SURDOS, UNIVERSIDADE FEDERAL DO PARANÁ.

     Barbosa, Jorge (2018), PlayEduc: um framework conceitual para desenvolvimento de jogos educacionais digitais, Instituto Metrópole Digital – IMD, Universidade Federal do Rio Grande do Norte – UFRN.

     https://www.mcvuk.com/development-news/12-alternative-game-engines/205547/.