2.7 DESENVOLVIMENTO DE JOGOS UBÍQUOS
2.7.1 Unity
Além das engines específicas para jogos ubíquos, também podem ser utilizadas aquelas que permitem a extensão de seus recursos através de plugins e bibliotecas. Dentre essas engines, a Unity4 pode ser estendida de forma a permitir que jogos ubíquos possam ser produzidos através dela. Além disso, através do Asset Store5, que é um repositório de plugins e recursos áudio visuais, a produtora da Unity permite que a comunidade possa colaborar e produzir conteúdo que venha a contribuir com o projeto de outros desenvolvedores.
A Unity é uma engine para desenvolvimento de jogos digitais, criado pela Unity Technologies, que oferece além do suporte a criação de jogos 3D, também possibilita desenvolver jogos 2D. Os principais pontos positivos da engine estão na
4 https://unity3d.com/pt
38
disponibilização multiplataforma dos jogos criados, vasta documentação existente, mesmo para as versões mais novas da engine, e também a possibilidade de extensão da mesma, podendo ser adaptada a necessidade do desenvolvedor. Bartneck (2015) lista alguns recursos da Unity, que foram utilizados em seu trabalho, mas que competem a este também, sendo eles citados a seguir:
a) Uma interface gráfica para fácil manipulação de objetos e controle de interações
b) A possibilidade de comunicar-se com hardware externo; c) A possibilidade de processar dados multimídia;
d) Ser disponibilizado gratuitamente em sua totalidade para uso de pesquisa e educação;
e) Oferecer suporte para diferentes sistemas operacionais.
Além dos recursos citados, o autor cita que a Unity foi escolhida para seu trabalho devido a comunidade de desenvolvedores ser bastante ativa, tanto nos fóruns oficiais da plataforma como nas redes sociais. Além disso, oferecendo uma extensibilidade através da criação de plugins, que atualizam não só a sua interface, mas também os recursos e a comunicação com o hardware externo, facilitando o trabalho do desenvolvedor.
Pensando em aliar as características da engine Unity com a proposta deste trabalho, a engine foi escolhida para servir como base do framework FJSU, onde foi verificado que os recursos de extensibilidade e funções permitem simplificar a criação de jogos sérios ubíquos.
2.8 FRAMEWORKS PARA JOGOS UBÍQUOS
A utilização de um framework no domínio da engenharia de software fornece ao desenvolvedor uma estrutura modular específica para um contexto, que permite o reuso de componentes e o acoplamento de novas tecnologias, gerando uma nova aplicação (BRAGA, 2002). No mesmo sentido, Johnson & Foote (1988) tratam um
framework como um conjunto de classes que possuem soluções relacionadas a
problemas de um mesmo contexto, possibilitando a reutilização de componentes em um nível alto de granularidade. Já Fayad (1999) cita o framework como um programa
39
semipronto, criado por uma organização ou para um domínio específico, e a partir dele podem ser desenvolvidos outros programas customizados conforme a necessidade, facilitando o reuso.
Os componentes reusáveis de um framework para jogos ubíquos podem ser desde uma estrutura de classes, a implementação de uma classe contendo métodos reusáveis por herança, ou até mesmo a instanciação de um objeto completo do jogo. Esse objeto instanciado é tratado pelas engines como prefab, que segundo Xie (2012), são elementos pré-fabricados, formados por elementos gráficos e audiovisuais, além da implementação de scripts que trazem a interação com os demais elementos. Um exemplo de prefab pode ser um inimigo, que possui características visuais próprias, e códigos, que permitem suas interações e movimentos com o jogador e demais objetos do jogo.
De acordo com Kubo (2006) “um framework para jogos não é um conjunto de funções, ou uma API, relativas a um determinado objetivo. Ele também não é um produto pronto.” Portanto, a ideia de utilizar um framework está na possibilidade de um desenvolvedor não se deter aos aspectos que seguem um padrão, e simplesmente desenvolver o design do jogo.
Para que o reuso do software seja viável, é preciso que o framework tenha a característica de flexibilidade, sendo ela trazida pelos pontos variáveis da estrutura, também chamados de hot spots. Estas alternativas que trazem a flexibilidade ao
framework desenvolvido representam padrões que podem ser substituídos por outros,
ou que são opcionais, fazendo com que o desenvolvedor possa definir aquela estrutura que mais cabe ao seu jogo. Os hot spots são genéricos, podendo ser adaptados conforme a necessidade da aplicação, seu uso não é necessário em todas as aplicações, já os pontos fixos, ou frozen spots, definem os componentes básicos da arquitetura geral de um sistema e suas ligações, que são imutáveis em qualquer aplicação desenvolvida a partir do framework (BRAGA, 2002).
Seguindo os conceitos de Taligent (1994), os frameworks podem ser classificados em três tipos quanto a dimensão da sua utilização, sendo eles de aplicação, suporte e domínio.
● Frameworks de Aplicação: São aqueles que englobam as competências necessárias para serem aplicadas a uma grande variedade de tipos de programa, não limitando-se a um modelo específico, no entanto, resolve
40
apenas uma fatia desse problema. Os frameworks para desenvolvimento de interface gráfica são considerados de aplicação. ● Frameworks de Suporte: Irão prover os serviços de sistema operacional,
como a gerência de drivers, acesso de arquivos e suporte à computação distribuída.
● Frameworks de Domínio: Aqueles que são relacionados a um domínio específico, englobam boa parte das soluções necessárias para criar um programa completo relacionado a uma área específica, como um framework para aplicações multimídia.
Partindo dos princípios apresentados, o produto desenvolvido neste estudo está classificado como um framework de domínio, visto que está relacionado a um domínio específico, no caso o desenvolvimento de jogos sérios ubíquos, e busca abranger boa parte das soluções necessárias para o desenvolvimento de uma aplicação desse tipo.