As frameworks são atualmente uma ferramenta bastante vantajosa na criação de aplicações, tal como concluído no Capítulo 2. A sua utilização é atualmente uma mais-valia para os cri- adores de jogos. Desta forma, um sistema para acrescento de funcionalidades a jogos deve ser desenvolvido de forma a ser integrado noutros sistemas, principalmente em frameworks.
O Unity é atualmente uma das frameworks mais utilizadas no desenvolvimento de jogos para dispositivos móveis [46] [90]. As características enunciadas no Capítulo 2 fazem desta fra-
meworkuma ajuda bastante desejada na criação de jogos. Não apenas pela framework em si,
mas também por todas as ferramentas incluídas no ambiente. O Unity fornece aos progra- madores um ambiente suficiente para permitir desenvolver qualquer tipo de jogo, de forma rápida e simples.
O Unity Editor é o editor gráfico incluído nesta framework e permite editar o jogo a nível visual. Todos os elementos no jogo são manipulados neste editor visual, desde texturas, modelos em três dimensões, emissores de som, partículas, etc. O editor suporta ainda a construção de animações e configuração de sistemas de estados de forma totalmente visual. De forma a auxiliar e agilizar a criação de jogos, o editor suporta ainda a execução direta do jogo, assim este executa diretamente no editor e é possível observar o estado de todos os elementos do jogo e até mesmo efetuar alterações durante a execução. O editor permite ainda configurar as várias opções do jogo, incluindo opções de exportação para as platafor- mas alvo, sendo a exportação do jogo para as várias plataformas realizada também no editor.
O Unity é assim uma framework que de forma utilitária fornece uma ferramenta bastante poderosa para a criação de jogos, o Unity Editor. Incluído no pacote vem ainda o editor de código MonoDevelop. Este editor é utilizado para realizar a edição e depuração do código necessário para controlar os elementos presentes nos jogos.
Em comparação com outras frameworks, o Unity fornece todas estas características numa versão gratuita e com suporte a exportação de jogos para múltiplas plataformas móveis. Estes atributos tornaram o Unity bastante popular no desenvolvimento de jogos para plata- formas móveis, o Unity é atualmente uma das frameworks mais utilizadas por empresas e programadores singulares para a criação de jogos.
Os motivos apresentados levaram à escolhida do Unity como framework base para a imple- mentação do sistema LiNGS. As características do Unity permitem o desenvolvimento de jogos de forma ágil e a popularidade desta framework permite que a implementação do sis- tema LiNGS fique disponível para uma grande parte do mercado. O funcionamento interno do Unity e dos seus elementos é de seguida explicado.
5.3.1
Funcionamento Interno do Unity
Os jogos são um tipo de aplicação que normalmente tem um nível de complexidade elevado devido à quantidade enorme de possíveis estados de cada elemento presente no jogo. É ne- cessário processar entradas de vários dispositivos (Teclado, Controladores, etc.) e distribuir essa informação para cada elemento de jogo, que por sua vez utiliza essa informação para alterar o seu estado. Depois de todo este processamento é necessário ainda enviar as respe- tivas saídas para os dispositivos associados, que podem ser de componente audiovisual ou
outros como por exemplo dispositivos de feedback por vibração. Tendo em conta que os jogos podem ter milhares de elementos com uma variedade enorme de estados é necessário um sistema para estruturar toda a arquitetura constituinte de um jogo de forma organizada e eficiente.
De forma a criar uma separação lógica de todos os elementos de um jogo o Unity proporciona uma granularidade de 4 níveis, Figura 5.1:
• Scenes
• Game Objects • Components • Scripts
As Scenes representam o estado global do jogo, por exemplo: Cada menu e cada nível de um jogo são Scenes. Apenas uma Scene pode estar aberta simultaneamente sendo que a transição do estado do jogo é normalmente representada pela transição entre Scenes. Dentro de cada Scene estão contidos todos os elementos representados na mesma.
Os Game Objects são todos os objetos que estão instanciados no jogo, podendo estes serem visuais ou apenas objetos de lógica que trabalham em segundo plano, podendo ainda estar desativados, sem realizar processamento. Estes objetos estão inseridos nas Scenes e podem ser inseridos estaticamente, através do editor visual do Unity, o Unity Editor, ou podem ser carregados dinamicamente. Os Game Objects por sua vez contêm Components.
Os Components são anexos que dão vida aos Game Objects. Estes são os elementos que re- alizam as operações necessárias para processar e representar o estado de cada Game Object. Os Components são agregados aos Game Objects, que por sua vez estão contidos nas Scenes, e fornecem-lhes uma capacidade específica de acordo com o seu desígnio, por exemplo: um
Componentdo tipo “GUI Text” anexado a um Game Object permite representar texto 2D no
ecrã de jogo, por sua vez um “GUI Texture” permite mostrar uma textura.
O Unity fornece um enorme conjunto de Components que realizam uma vasta gama de tare- fas [91]. No entanto, cada jogo é diferente e de forma a criar a lógica para estes é necessário utilizar Scripts. Os Scripts são Components criados e programados pelos programadores que
seguem regras estabelecidas pelo Unity [52] de forma a efetuarem operações nos Game Ob- jectonde estão anexados ou noutros Game Objects no jogo. A programação destes Scripts é feita no editor MonoDevelop utilizando a linguagem C#, JavaScript ou BOO.
A base para a construção dos Scripts é a Mono Framework [64] que por sua vez é baseada na .NET Framework [24]. A .NET Framework é uma framework genérica utilizada maio- ritariamente em sistemas Microsoft. A popularidade desta framework levou a que fossem criadas frameworks em si baseadas, mas para outros sistemas. Nesta caso o Unity utiliza a Mono Framework. A utilização desta framework como base de programação dos Scripts fornece um vasto conjunto de funcionalidades úteis para o desenvolvimento de jogos. Estas funcionalidades representam auxílios na construção dos jogos fornecendo aos programado- res formas de gestão de objetos, gestão de memória automática, acesso a ficheiros e a outros dispositivos de IO (Input/ Output), etc.
Desta forma, o Unity, como framework, permite manter uma gestão eficiente de todos os elementos que compõem um jogo. A separação dos elementos por granularidade permite um encapsulamento flexível e simples.
Figura 5.1: Estrutura dos elementos que compõem um jogo em Unity.
A Figura 5.1 representa a organização dos elementos que constituem um jogo realizado no Unity, Tal como em cima referido, a estrutura de um jogo decompõe-se em 4 granularidades, sendo assim possível administrar com facilidade os elementos que devem estar no jogo em
cada estado deste. À exceção dos Scripts, todos os elementos de um jogo do Unity são geridos no Unity Editor. Este editor fornece aos seus utilizadores uma representação plena de cada elemento.
Figura 5.2: Unity Editor com as zonas de configuração de elementos de jogo realçadas.
A Figura 5.2 realça as várias zonas do editor Unity Editor onde os utilizadores podem gerir os elementos de jogo. Neste caso o editor tem uma Scene aberta e a representação visual da mesma está realçada na zona A, onde é possível obter uma representação visual de cada
Game Object que tenha forma de se desenhar. Na zona B estão enunciados todos os Game
Objects que se encontram na Scene atual. É possível adicionar e remover estes objetos do
jogo no editor ou então programaticamente. Na zona representada pela letra C encontram-se as propriedades do Game Object selecionado. São mostrados os vários Components, inclu- sive Scripts, que o Game Object tenha e todas as propriedades destes. Aqui o utilizador pode configurar o Game Object alterando os componentes e as propriedades respetivas de cada componente.
O Unity fornece assim uma excelente base para o desenvolvimento de jogos e até mesmo ou- tros tipos de aplicações. As funcionalidades do Unity em conjunto com as funcionalidades da integrada .NET Framework serve de plataforma para a criação de jogos de forma rápida e precisa. As ferramentas incluídas no pacote Unity são também uma grande ajuda na criação de jogos e permitem a utilização da framework e dos seus componentes de forma visual o que permite um desenvolvimento mais rápido e dinâmico.
Com a framework base, Unity, definida e analisada segue-se no próximo capítulo a demons- tração e análise da implementação do sistema LiNGS.