Você está na página 1de 30

Fast Game Language

Uma Linguagem Especfica de Domnio para configurao de Jogos de aventura na plataforma Android

Jimens Cndido Barbosa Lima1, Vinicius Cardoso Garcia2


1

Centro de Estudos e Sistemas Avanados do Recife C.E.S.A.R. EDU


2Centro

de Informtica Universidade Federal de Pernambuco


jimenslima@gmail.com, vcg@cin.upfe.br

Abstract: This paper explores the construction of a domain specific language for creating games using a paradigm that is being investigated in industry and aims to transform the current software development, based on a simple understanding language that solves a specific problem. A case study was conducted to check the viability of the language. The specified DSL seeks to simplify the creation of a game, showing that textual languages can be used in this context. Resumo: Este trabalho, explora a construo de uma Linguagem de Domnio Especfico para a criao de jogos, utilizando um paradigma que vem sendo investigado na indstria e que visa transformar o desenvolvimento de software atual, baseado numa linguagem de simples entendimento que resolve um problema especfico. Um estudo de caso foi conduzido visando analisar a viabilidade da linguagem. A DSL especificada procura simplificar a criao de um Jogo, demonstrando que linguagens textuais podem ser utilizadas neste contexto. 1. Introduo De acordo com a ESA (Entertainment Software Association) [1], a indstria de jogos digitais uma das mais bem-sucedidas do mundo, equiparando-se at mesmo s indstrias de cinema e msica [2]. Desde o surgimento das lojas virtuais de aplicativos como: Apple Store, Android Market e Windows Marketplace, as aplicaes geralmente

vendidas por US$ 0,99 impulsionaram este mercado. Como, exemplo, o jogo Cut the Rope [3], em apenas 10 dias, foi baixado mais de 1 milho de vezes1. Este trabalho aborda uma nova abordagem no desenvolvimento de software que vem sendo muito discutido na indstria dos games. Sero abordados alguns conceitos e a prtica de Domain Specific Languages (DSL). A Engenharia de Software e arquiteturas orientadas a objetos trouxeram vrios benefcios para o desenvolvimento de jogos, como o nvel de abstrao, que diminui a complexidade de se construir um novo jogo, bem como a utilizao de bibliotecas que auxiliam desenvolvedores que no possuem tanta experincia em construir jogos de forma mais rpida, com menos erros e seguindo um processo pr-definido [4]. 1.1. Caracterizao do Problema Segundo a ESA (Entertainment Software Association) [1], a criao de um Jogo no uma tarefa trivial, exigindo do desenvolvedor uma larga experincia e domnio de arquiteturas, plataformas, ferramentas e tecnologias envolvidas. H evidncias que o paradigma atual de desenvolvimento de software est perto do fim, e que um novo necessrio para apoiar os prximos passos da tecnologia. Na prxima dcada, a demanda global para produo de software vai crescer uma ordem de magnitude, impulsionada pela fora da economia global, pela integrao com as reas mdicas e sociais e pela reestruturao das plataformas voltadas a servios distribudos [5]. Sem um aumento de produtividade comparvel, a capacidade total de desenvolvimento de software parece destinada a estar muito aqum da demanda total. Isto , os mtodos e prticas de desenvolvimento de software tero que mudar drasticamente para tornar os desenvolvedores muito mais produtivos. Tendo como base os dados citados, surgiu a necessidade criar uma plataforma que facilitasse o dia a dia um desenvolvedor, e como exemplo de aplicao, por no possuir tantos detalhes, foi selecionado um Jogo do tipo aventura2 para dispositivos mveis.

1 2

http://mashable.com/2010/10/15/cut-the-rope/ http://pt.wikipedia.org/wiki/Jogo_eletronico_de_aventura

1.2. Objetivos O principal objetivo deste trabalho apresentar uma linguagem que ajude os desenvolvedores em geral que no possuam tanta experincia e conhecimento nas mais diversas plataformas de desenvolvimento a criar jogos de aventura de forma gil, com alta produtividade por meio da reduo do esforo do desenvolvimento e com a qualidade esperada pelo mercado de jogos. Para tal, ser apresentada uma DSL para criao de deste estilo de jogo, fazendo uso da plataforma de desenvolvimento Android 3 com a Game Engine (Andengine) e o projeto do Eclipse Xtext. O domnio escolhido foi um jogo de ao por ser simples de se desenvolver, sem tantas particularidades, e que atendesse aos objetivos propostos no trabalho. Os objetivos especficos so:

Disponibilizar um plugin para o ambiente de desenvolvimento do Eclipse que auxilie a configurao de Jogos do estilo Aventura para a plataforma Android. Com ele, ser possvel configurar os personagens do Jogo, definir quais sero seus inimigos, a pontuao que o jogador perder se o inimigo atingi-lo, etc.

Apresentar um estudo sobre as vantagens de se utilizar linguagens de domnio especfico (DSLs), na criao de jogos para dispositivos mveis.

1.3. Justificativa Atualmente, existe uma grande quantidade de ferramentas (Game Maker [6], RPG Maker VX [7], GakeKa [8] e engines para criao de Jogos para programadores e no programadores, porm, poucas se detm ao o comportamento real de criao de um jogo, tampouco que simplificam o entendimento necessrio para criao de jogos. Portanto, surge a necessidade de desenvolver uma linguagem que seja extensvel, de fcil adaptao, que agilizasse a configurao de um jogo, que entregue um produto de
3

http://www.android.com

qualidade e que levasse pouco tempo desde a fase de concepo at a entrega do jogo. 1.4. Contribuio A principal contribuio do trabalho a DSL que auxilia e acelera a construo de um jogo partindo do zero. Alm disso, a ferramenta faz reuso de componentes / frameworks, algo muito explorado na indstria de software. 1.5. Metodologia O estudo deste artigo foi realizado atravs de pesquisas de frameworks, dissertaes, sites de pesquisa, livros especializados no assunto abordado, tcnicas de desenvolvimento de software. A Tabela 1 descreve os itens pesquisados e suas justificativas.

Itens Pesquisados
Artigos e Livros

Justificativas
Embasamento na construo de uma linguagem de domnio especfico para o desenvolvimento de jogos, e de como acelerar a entrega dos mesmos.

Tecnologias

Demonstrar

como

linguagens

de

domnio

especfico (DSLs) ajudam no entendimento e resoluo de um problema especfico. Componentes Auxiliar os desenvolvedores de Games a criar jogos de uma forma efetiva e com qualidade numa nica plataforma de desenvolvimento. Ferramentas Utilizadas na criao, definio e modelagem do Jogo.
Tabela 1. Metodologia de pesquisa

2. Fundamentao Terica Como descrito por Terrance Parr [9], uma linguagem de domnio especfico (DSL) significa que a linguagem adaptada a um domnio de destino. Sendo uma DSL, a forma clara de se definir uma idia que deseja expor, um problema especfico a ser solucionado. Como exemplo, a NASA utiliza DSLs para criar os softwares que so utilizados nas misses espaciais, para melhorar a confiabilidade, reduzir os riscos, custos e aumentar a produtividade no desenvolvimento [4]. A vantagem da criao de uma linguagem especfica o aumento da abstrao do domnio que fornecido pela linguagem para aumentar a sua expressividade. Podemos compar-la com Linguagens de Propsitos Gerais (GPLS). Com uma DSL possvel expressar solues para problemas de domnio especfico fazendo um menor esforo. As DSLs podem variar em diversas formas, tanto na sintaxe quanto na semntica, e tambm na forma com que elas so criadas que podem ser por meios visuais ou textuais [10]. Uma DSL melhora a capacidade de leitura e escrita dos artefatos, permitindo que um grupo maior de pessoas com menos experincia em programao seja mais produtivo, alm disso, diminuio nos erros e tambm nos custos de manuteno. Ao focar na estrutura do domnio, a DSL torna uma representao mais legvel do que se trata o domnio. Quando o domnio mapeado em linguagens de programao comuns o cdigo possui vrios detalhes intrnsecos, que no so relevantes para o entendimento do domnio do problema, no entanto so imprescindveis para o desenvolvimento da soluo. Existem muitas DSLs no meio computacional, que utilizamos no nosso dia-a-dia sem mesmo percebermos. Exemplos dessas linguagens so HTML, XML, linguagens de banco de dados como SQL e PLSQL, estas possuem uma ligao direta com a plataforma que se destinam e criam uma maior familiaridade para o desenvolvedor que precisa desenvolver algum requisito para a mesma. Existem dois tipos de DSL, externas e internas. Uma DSL interna est totalmente ligada s linguagens de programao e podem ser similares quanto semntica e sintaxe. Uma DSL externa no est relacionada com linguagens de programao, tm a sua sintaxe personalizada e parsers para process-los. H uma tradio muito forte de fazer isso na comunidade Unix. Muitas configuraes XML acabaram como DSLs 5

externas, tal como o DTD (Document Type Definition), apesar da sintaxe XML no ser adequada para esta finalidade [10]. A produtividade e a manutenibilidade aumentada devido a um domnio apropriado e por ter uma linguagem especfica. Uma linguagem de domnio especfico (DSL) mais adequada para programadores que possuem um determinado foco, tal como: desenvolver algo para web, criar uma procedure no Oracle, etc. Os especialistas so capazes de entender, validar, modificar e desenvolver dentro da linguagem uma melhor legibilidade e uma maior abstrao. Os ganhos podem ser medidos quantitativamente e qualitativamente. A validao quantitativa das vantagens de uma DSL um campo em curso de investigao [11].

Figura 1: Domain-specific languages (Adaptado de MARJAN MERNIK, 2005).

A Figura 1, apresenta uma comparao dos custos da metodologia convencional de desenvolvimento de software (C1), com uma metodologia baseada em DSL (C2). O custo de criao inicial da (C2) mais alto, porm, no decorrer dos ciclos da construo do software, a (C1) se torna mais custosa, justamente por no utilizar tcnicas adotadas na metodologia (C2). O custo inicial para construo de uma nova linguagem est totalmente relacionado com a complexidade da mesma, bem como o tempo necessrio para deixa-la matura o suficiente para produzir um produto aderente ao que se prope.

2.1. A necessidade de um novo paradigma O instituto Standish Group [12], revela uma queda acentuada nas taxas de entrega de projetos: com (32%) entregues no prazo, dentro do oramento previsto e com todas as funcionalidades, (44%) com muito atraso, acima do oramento e / ou com poucas funcionalidades implementadas como prometidas e (24%) dos projetos falharam ou nunca foram utilizados. Embora as causas do fracasso estejam relacionados s tecnologias limitadas ou equipes desqualificadas, quase todas as causas reais esto relacionadas com a forma que os usurios e clientes esto envolvidos durante um projeto de desenvolvimento de software [4]. Algumas das principais causas de fracasso so: Falta de integrao entre ferramentas Separao entre negcio e Tecnologia Falta de rastreabilidade Falta de objetividade

Uma DSL procura resolver alguns dos itens acima citados, trazendo ao usurio da mesma maior clareza quanto ao que ser produzido. De acordo com Jack Greenfield [13], a maior parte dos softwares desenvolvidos hoje criada a partir do zero, e grande parte dos mesmos tendem ao insucesso. Para o desenvolvimento massivo de um software preciso aumentar tanto a capacidade de produo escalvel, quanto a reusabilidade de componentes pr-existentes. 2.2. Economia em escala e escopo A reutilizao sistemtica pode gerar economias de escala e escopo. Esses dois efeitos so bastante conhecidos em outras indstrias. Embora ambos reduzam tempo e custo, e aprimorem a qualidade do produto pela produo coletiva e no individual de diversos produtos, diferem na forma como produzem esses benefcios [13]. Segundo Andr Furtado (2006), para notar os benefcios do reuso, uma metodologia mais madura deve ser adotada. Esta deve envolver a identificao de subproblemas comuns em um determinado domnio e criar melhorias para o processo

proposto. A esta abordagem d-se o nome de reutilizao sistemtica, onde se espera aumentar o retorno sobre os investimentos com os artefatos criados a partir da metodologia definida. A economia em escala atingida quando projetos idnticos podem atender a diversos nichos, produzido em equipes distintas e no individualmente [2] [14].

Figura 2. Escala e economia [2]

A economia de escala surge quando vrios componentes idnticos de um nico projeto so produzidos coletivamente, e no individualmente, como ilustrado na Figura 2. 2.3. Utilizao de DSLs De acordo com Neighbors, J. M. (1984), DSLs abrangem vrios domnios, tais como: produtos financeiros, arquiteturas de software, bancos de dados, drivers de placas de vdeo, sistemas operacionais, computao nas nuvens, manipulao de imagem, animao 3D, telecom, protocolos de comunicao, simulao, agentes mveis, controles de robs, equaes diferenciais, etc [15]. A adoo de uma DSL envolve riscos e oportunidades. DSLs bem projetadas, conseguem encontrar as seguintes vantagens: Permitem que solues sejam expressadas numa linguagem de alto nvel de abstrao relacionada ao domnio do problema e, consequentemente, especialistas do domnio podem entender, discutir, validar, modificar, e muitas vezes at mesmo desenvolver DSLs; 8

Aumentam a produtividade, confiabilidade, facilidade de manuteno e a portabilidade [16] [17];

Se incorporam ao conhecimento do domnio, e assim permitem a conservao e reutilizao deste conhecimento;

Permitem a validao e otimizao no nvel do domnio [18,19, 20]; Em contrapartida, uma DSL no tem apenas vantagens, mas tambm falhas

potenciais. Uma desvantagem que inicialmente preciso um alto esforo de desenvolvimento necessrio para criao de uma nova linguagem. O desenvolvedor da DSL precisa ter menos experincia no propsito geral da linguagem e mais conhecimento sobre o domnio alvo, deixando de lado uma fase necessria no entendimento do modelo. Ele precisa encontrar um bom equilbrio entre uma GPL e uma DSL. A utilizao de DSLs algo relativamente novo e no existem muitas ferramentas, padres e processos que implementem todos os seus requisitos de forma completa. Outros problemas so as ferramentas, o custo do treinamento para os usurios. Apesar de linguagens de propsito gerais, como Java ou C #, terem vrias ferramentas para acelerar o desenvolvimento, IDEs como o Eclipse ou Visual Studio oferecem uma integrao profunda com estas linguagens como editores poderosos, anlise do cdigo, integrao avanada com os compiladores e depuradores. Criar um ambiente que se integre a uma ferramenta para a criao de uma DSL leva um determinado tempo, que dependendo da demanda pode se tornar demorado e aumentar os custos causados pela definio de uma nova linguagem. Todos os riscos de custos de formao do desenvolvedor, tempo de aprendizado e adaptabilidade da DSL, devem ser mitigados j no incio do planejamento do software.

2.4. Estratgias adotadas para criao da DSL para Games Inicialmente preciso identificar todos os pontos fracos para construo de um Jogo, quais os artefatos mais complexos de serem desenvolvidos, o tempo que cada artefato leva para ser produzido e elencar o que ser abordado pela linguagem. Marjan Mernik (2005), cita que na fase de anlise do desenvolvimento da DSL os problemas inerentes ao domnio precisam ser identificados e detalhados. Fontes de dados para criao da DSL tambm precisam ser explicitadas, tais como: documentos tcnicos, conhecimentos fornecidos pelos especialistas no domnio, cdigos e bibliotecas de propsito geral (GPLs). 2.5. Projeto Xtext: Para seleo da ferramenta adequada, os critrios de familiaridade e menor curva de aprendizado foram levados em considerao: nesse contexto, o projeto Eclipse Xtext[21] foi a alternativa selecionada, por possuir mecanismos que ajudam definir, validar e executar uma nova linguagem de domnio especfico (DSL). Desta forma, criar Jogos pode tornar-se uma tarefa no to rdua. Alm de aumentar a produtividade e abstrair alguns comportamentos da criao de um jogo, a DSL visa facilitar a forma que as aes ocorrem, embora em alguns casos Game Engines (Cocos2d [22], AndEngine [35]) atendessem a estes requisitos, a DSL que ser proposta aborda uma abstrao independente de uma Engine. O projeto Xtext surgiu da necessidade de se criar linguagens como DSLs, mas tambm pode ser adotado para criao de linguagens de propsito geral, GPLs. Com o Xtext possvel criar sua prpria linguagem num curto espao de tempo e totalmente integrada ao ambiente de desenvolvimento Eclipse. A empresa mantenedora do projeto 4, define o Xtext como um framework para desenvolvimento de linguagens. O Xtext prov um conjunto de DSLs para descrever diferentes aspectos da nova linguagem de programao, que se integram totalmente com a JVM5 e so reutilizveis.

4 5

Itemis http://www.itemis.com Java Virtual Machine

10

Os componentes do compilador de sua linguagem so independentes do Eclipse ou OSGi 6 e podem ser utilizados em qualquer ambiente Java. Eles incluem ferramentas como analisadores lxicos, sintticos, etc. Estes componentes de tempo de execuo so baseados no EMF (Eclipse Modeling Framework), que permite utilizar o Xtext integrado com outros diagramas como o GMF (Graphic Modeling Framework).

Figura 3. Eclipse Xtext

A Figura 3 descreve a utilizao de uma nova linguagem fazendo uso de recursos pr-existentes do Eclipse, tais como: auto-imports, beautifier, code-completion, codecoloring, outline. Estes recursos tornam a IDE adaptada nova linguagem e mais agradvel para o desenvolvedor. 2.6. Eclipse Modeling Framework Project (EMF) O projeto EMF um framework de modelagem que facilita a gerao de cdigo para diversas plataformas. O modelo de dados Ecore [23] utilizado para modelar e construir a arquitetura desejada como descrito na Figura 4. O EMF unifica as definies UML7, XML8 e Java. Estas definies so utilizadas para a criao de um meta-modelo. Por exemplo, imagine que se deseja construir uma aplicao para manipular alguma estrutura especfica XML. Provavelmente se comearia com um esquema de mensagem.
6 7

http://www.osgi.org http://www.uml.org/ 8 http://www.w3.org/XML/

11

Com o EMF possvel pressionar um ou dois botes, e obter um diagrama de classes UML, pressionar outro boto, e ter um conjunto de classes Java para manipular o XML [24].

Figura 4. Diagrama da Fast Game Language do tipo Ecore

A Figura 4 contm as definies do modelo utilizado para criao da linguagem FGL. Todos os atributos, relacionamentos e cardinalidades so definidos no Ecore. 3. Model Driven Develelopment (MDD) Segundo Douglas Schmidt (2006), MDD uma metodologia de desenvolvimento de software que est focada na criao de modelos ou abstraes. Assim, MDD est mais relacionada ao problema especfico que a conceitos computacionais. utilizada para aumentar a produtividade e a compatibilidade entre sistemas, simplificando o processo de design e facilitando a comunicao entre os stakeholders. O paradigma MDD s considerado eficaz se os seus modelos fizerem sentido para a implementao do software. Os modelos so desenvolvidos atravs da comunicao ampla entre os gerentes do produto, designers e desenvolvedores. Para que o MDD seja instanciado com sucesso preciso lidar com vrios aspectos de forma integrada [25].

12

3.1. Domain Specific Modeling Language (DSML) O principal intuito de uma DSML formalizar a estrutura e o comportamento de uma aplicao, as necessidades dentro de domnios especficos, tais como: servios de financiamento online, gerenciamento de data warehouse, ou at mesmo plataformas middleware. DSMLs so descritas usando meta-modelos que definem as relaes entre os conceitos de um domnio especfico. Desenvolvedores utilizam DSMLs para criar aplicaes que utilizam elementos que foram descritos no modelo [26]. 3.2. Aumentando a produtividade com MDD e DSLs Richard C. Gronback (2009) descreve que linguagens de domnio especfico (DSL) e o desenvolvimento dirigido ao modelo (MDD), oferecem aos desenvolvedores de software formas eficazes de melhorar a produtividade, a qualidade e isolar sistemas de mudanas tecnolgicas bruscas. As abstraes definidas no MDD tornam eficaz o modelo de desenvolvimento de uma DSL, sendo possvel trabalhar com uma arquiteturas desacopladas. No MDD, os modelos no so utilizados apenas como rascunhos, mas sim como artefatos primrios a partir dos quais, outros artefatos sero criados [27]. O grupo OMG9, que responsvel pela UML (Unified Modeling Language), que tambm se encarregou de definir os padres do MDD, criou a iniciativa MDA10 (arquitetura dirigida modelos). A MDA uma implementao da abordagem MDD. Conforme definido pelo OMG, MDA uma forma de organizar e gerenciar arquiteturas corporativas, apoiada por ferramentas e servios automatizados. A MDA possui trs objetivos principais: Portabilidade, Interoperabilidade e Reusabilidade [28]. 4. Engines de transformao e geradores O papel das engines analisar certos aspectos dos modelos e validar, em forma de restries lgicas (logical constraints), o que foi descrito pelo modelo, e em seguida, agrupar os demais tipos de artefatos, como cdigo fonte e arquivos de configurao. A capacidade de sintetizar artefatos a partir de modelos ajuda a garantir a consistncia
9 10

http://www.omg.org/ http://www.omg.org/mda/

13

entre implementaes do software e a anlise funcional dos requisitos de QoS (Quality of Service) capturado pelos modelos. O processo de transformao automtica muitas vezes referenciado como "correct-by-construction", que depende de dois pontos: a implementao estar de acordo com o modelo, ou seja, se o modelo contiver erros, a implementao herdar os mesmos, e outro mais crtico ainda, a engine de transformao tem que ser devidamente certificada caso contrrio pode gerar / introduzir erros no cdigo gerado automaticamente, em oposio ao processo convencional de desenvolvimento artesanal "construct-by-correction" que entediante e propenso a erros [29]. Uma caracterstica importante do modelo a que ele possa ser lido por uma mquina, de forma que seu contedo possa ser acessado de maneira automatizada. A leitura e interpretao do modelo so imprescindveis para que os artefatos necessrios possam ser gerados a partir do mesmo [30]. Em MDD os modelos no so usados apenas como diagramas e matrizes do projeto, mas como artefatos em que implementaes eficientes de software usando padres so geradas a partir de transformaes de modelos em cdigo ou outros artefatos. MDD permite uma automao que vai alm da gerao de cdigo. Fazendo uma analogia aos padres utilizados, podemos comparar o Human Work com um PSM (Platform Specific Model), pelo fato de um PSM conter parte do que seria escrito manualmente, ao invs do PIM (Platform Independent Model), que descreve quais sero os comportamentos dos casos de uso. A partir de um nico modelo possvel acelerar a criao e alterao de alguns tipos de artefatos, tais como: Documentao: Um dos grandes problemas em um ambiente tradicional de desenvolvimento documentao. Mant-la em dia com o projeto uma tarefa que demanda tempo e recursos que poderiam estar desenvolvendo outras tarefas para a evoluo do software. Ao adotar MDD possvel sincronizar o modelo de negcio com o projeto, pois ela pode ser gerada a partir do modelo. Toda e qualquer alterao precisar ser feita no modelo e replicada para a aplicao.

14

Casos de teste: possvel gerar de testes unitrios bsicos at testes de integrao, a partir dos modelos com suporte a frameworks reconhecidos como JUnit ou outros, dependendo de qual ferramenta de testes adotada pela empresa.

Scripts de build e implantao: Descritores da construo do software e de implantao tambm podem ser gerados, tirando mais um trabalho das mos dos desenvolvedores.

Camadas da aplicao: No ciclo de desenvolvimento existem vrias etapas como anlise, projeto e implementao, e para cada etapa usa-se um tipo de modelo diferente; tambm h modelos que representam as diferentes partes de um sistema, interface de usurio, lgica de negcio, administrao do sistema, e tambm h modelos que representam diferentes tarefas como testes e implantao. Dependendo do modelo possvel gerar sub-modelos, ou algum deles, a partir de parte do modelo original.

Aplicao de padres: Padres so solues comuns para problemas recorrentes na indstria de software. Com MDD possvel guiar a gerao para que certos padres sejam seguidos, resultando em um produto final que est de acordo com o padro escolhido. MDD tem um grande diferencial para as empresas de desenvolvimento de software, por poder melhorar bastante o processo de produo de software. Algumas das principais vantagens so: Manuteno: Mudanas tecnolgicas podem ser rapidamente resolvidas, pois a modelagem do sistema feita independente da plataforma final. Reuso: MDD permite o reuso de padres, arquitetura e componentes devido gerao de cdigo estruturada sempre da mesma forma e do uso de componentes necessrios para a aplicao. Adaptabilidade: Mudanas em funcionalidades e regras de negcio podem ser adaptadas mais facilmente, pois no necessrio alterar o sistema inteiro,

15

somente nos pontos onde se aplicam as regras, deixando as alteraes mais tcnicas por conta das transformaes de modelos. Consistncia: Executar alteraes manualmente uma prtica que pode levar a introduo de erros no sistema. Com MDD possvel diminuir a quantidade de erros e tornar o produto final mais consistente uma vez que tudo que se baseia no modelo sempre regerado. Melhoria na comunicao entre stakeholders: Com o uso de modelos de alto nvel, que retratem melhor o domnio e omitam os detalhes tcnicos, possvel criar uma linguagem nica entre os stakeholders do projeto [31]. Retardo na deciso sobre tecnologia: Muito do esforo na criao do projeto est presente na modelagem e na arquitetura do sistema, portanto decises tcnicas de qual tecnologia e plataforma sero usadas podem ser feitas mais adiante no processo [32]. 5. Trabalhos relacionados Nesta seo ser apresentada uma breve viso sobre o trabalho j realizado de quatro ferramentas para criao de Jogos baseadas no conceito de DSLs. Na seo 3.7 ser apresentado o projeto SharpLudus, uma DSL para criao e definio de Jogos, que utiliza os conceitos de DSL visual e textual. Na seo 3.8, ser apresentado o Game Maker, software escrito por Mark Overmars, que facilita a criao e modelagem de Jogos 2d. Na Seo 3.9 a DSL ViGL (Video Game Language), uma linguagem para criao de Jogos 2d e finalmente na Seo 3.10, a GameKA, uma ferramenta de jogos para no programadores. 5.1. Ferramentas para criao de Jogos O uso de APIs para desenvolver jogos requer alguns conhecimentos de programao e pode no ser uma tarefa trivial, especialmente para iniciantes. Com a inteno de simplificar o desenvolvimento do jogo e torn-lo mais acessvel a uma gama mais ampla de comunidades, ferramentas para criao visual de jogos se tornaram

16

populares. Elas visam a criao de jogos completos sem nenhuma programao. O usurio final auxiliado por interfaces grficas ricas em caractersticas do Jogo, sendo possvel definir o comportamento dos personagens, o fluxo jogo , adicionar sons, menus, etc. 5.2. AndEngine O primeiro passo para criao da linguagem foi a escolha de um framework para desenvolvimento de jogos que j agregasse caractersticas comuns para construo de um jogo, tais como: Sprites 11, tratamento de sons, cenrios, fsica, controles de coliso, etc. A AndEngine uma API para criao de Jogos 2D, foi construda na plataforma de desenvolvimento Java12 e possui licena GPL13. A API foi escolhida por ter pela familiaridade cuja plataforma foi implementada, encurtando a curva de aprendizado e acelerando o desenvolvimento da DSL. Com ela possvel criar jogos como descritos na Figura 5.

Figura 5. Jogos criados com a AndEngine [35].

11 12

http://en.wikipedia.org/wiki/Sprite_(computer_graphics) http://www.oracle.com/br/technologies/java/index.html 13 http://www.gnu.org/licenses/lgpl.html

17

5.3. SharpLudus O projeto SharpLudus [2] ilustra como a industrializao sistemtica de um software, orientada a previsibilidade e produtividade, pode ser aplicada em domnios caracterizados pela inovao, criatividade e dinamismo. O projeto explora a integrao entre o desenvolvimento de jogos, uma disciplina inerentemente criativa, com fbricas de software, que esto preocupadas com o paradigma de desenvolvimento de software, baseado em habilidade e com o processo de criao. Abrange: DSLs visuais, validadores semnticos e geradores de cdigo, fazendo com que os desenvolvedores e designers trabalhem de forma mais produtiva, com um maior nvel de abstrao e mais prximo do domnio da aplicao.

Figura 6. IDE SLGML (SharpLudus Game Modeling Language)

A Figura 6 ilustra o funcionamento do SharpLudus. Do lado esquerdo, os componentes GML (Graphic Modeling Language) do domnio do Jogo, que so utilizados para criao do Jogo em si, na parte inferior, caso exista algum erro no diagrama do diagrama, ser exibido com um cone vermelho com o aviso.

18

Figura 7. Jogo criado pelo SLGML [2].

O jogo Ultimate Berzerk (Figura 7) baseado no jogo Berzerk, criado para o console Atari 2600, onde o jogador controla um personagem principal que se move em torno de um labirinto composto por salas conectadas, cada uma contendo inimigos (robs) que podem ser atingidos pelo personagem principal [2].

5.4. Game Maker O projeto GameMaker [6], Figura 8, uma IDE para criao de Jogos 2D. Todos os elementos (som, imagens, grficos, etc) so integrados. Tambm utiliza o conceito de drag-and-drop. O GameMaker no focado num tipo especfico de Jogo. Alm das funcionalidades visuais disponveis, tambm fornecido uma linguagem de Scripts GML (Game Maker Language) para otimizao do jogo. Um jogo criado com o Game Maker, consiste em trs elementos principais: Dados: personagens, sons, backgrounds e fontes. Controle: Objetos, timelines, scripts e animaes. Nveis do jogo, ou como a equipe do Game Maker define, rooms.

O Game Maker utiliza o paradigma de Orientao a Objetos. Cada objeto pode ser herdado, modificado, todos eles representam objetos de um jogo real.

19

Figura 8. Game Maker [6].

5.5. ViGL ViGL (Video Game Language) uma DSL que tenta capturar os artefatos em comum entre diversos jogos 2d. Ela permite ao desenvolvedor prototipar rapidamente jogos 2d. O cdigo criado pela DSL pode ser reutilizado para criar outros jogos. A ViGL muito simples de se compreender, inicialmente os criadores optaram por defini-la totalmente baseada no XML, posteriormente, viram que com XML, no se podia lidar com todas as caractersticas de uma linguagem. Se decidiu criar um juno de XML (como uma linguagem declarativa) e um cdigo embarcado (a prpria DSL textual). A Tabela 2, descreve as funcionalidades implementadas no ViGL [33] [34].

20

Caractersticas Grficos Som Entrada de Dados Objetos Mundo Interao Controle do Usurio

Funcionalidades Carregar imagens, textos, etc. Carregando, Iniciar, Parar, Pausar. Mouse e Teclado Diferentes formas, tamanhos e posies. O mundo do jogo e as regras das formas no mundo. Interao entre os objetos e o mundo do jogo. A forma que o usurio interage com o mundo do jogo.

Tabela 2. Viso geral das funcionalidades da ViGL [19].

5.6. GameKa uma ferramenta de desenvolvimento de jogos para no programadores O recente estudo conduzido por Igor Augusto (2011) para a SBGames14 apresenta ferramentas que tem como objetivo viabilizar o desenvolvimento de jogos pelo pblico no programador. Diversas ferramentas de apoio foram criadas. Por meio destes softwares possvel criar um jogo mesmo que o usurio possua pouco ou nenhum conhecimento de programao, simplesmente arrastando objetos para um cenrio e determinando seus comportamentos atravs de menus [24]. Pode-se destacar que uma ferramenta para auxiliar no programadores possui ao menos trs funcionalidades: um editor de objetos, um editor de cenrios e um editor de eventos.

Figura 10. Gameka [24].

14

http://www.sbgames.org/

21

A ferramenta Gameka (Figura 10) um software de apoio ao desenvolvimento de jogos 2D voltado ao pblico no programador, cujas principais caractersticas so: open-source, multiplataforma e direcionada ao desenvolvimento de gneros diversos. A ferramenta possui um ambiente de desenvolvimento completamente visual e disponibiliza ao desenvolvedor diversas funcionalidades prontas para a criao dos mais variados gneros de jogos 2D, tais como aventura, shooter, nave, corrida e puzzle. 5.7. Matriz comparativa

Ferramentas
SharpLudus

Formato de Distribuio
Plugin do Visual Studio .NET Plataforma Prpia

Licena
Ms-PL

Plataforma
Windows

DSLs Implementadas
SharpLudus, Game Modeling Language (SLGML) Configurao,comportamento e aes dos personagens Configurao,comportamento e aes dos personagens

GameMaker

Paga(99.00)

Multiplataforma

ViGL GameKa GameSalad AndEngine

XML Plataforma Prpia Plataforma Prpia Bibliotecas

GPL GPL Paga(99.00) GPL

Multiplataforma

Multiplataforma Configurao, Edio de Cenrios Mac OSX Multiplataforma Configurao,comportamento e aes dos personagens N/A

Tabela 3. Matriz comparativa das ferramentas utilizadas e pesquisadas no trabalho.

6. Fast Game Language Criar um Jogo no uma tarefa trivial, alm da alta complexidade, no existe uma forma pr-estabelecida para se idealizar um. Apesar do nmero de ferramentas existentes para no programadores (GameSalad15, GameKa, Game Maker, etc), surge a necessidade de criar uma linguagem, auxiliando desenvolvedores que no possuem tanta experincia em ferramentas de desenvolvimento de jogos, e automatize a criao de componentes do jogo. Ela precisa ser simples, que seja familiar para os desenvolvedores

15

http://gamesalad.com/

22

Java e que num curto espao de tempo se possa criar um jogo de ao para a plataforma Android. A linguagem segue os seguintes critrios: Ser compatvel com a IDE Eclipse (por ser muito utilizada pela comunidade livre) Poder ser utilizada em qualquer Sistema Operacional.

AlexKid FGL Xtext AndEngine

Android
Figura 11. Tecnologias e ferramentas utilizadas na criao da linguagem.

A Figura 11 elenca as arquiteturas e frameworks utilizados para a criao da FGL (Fast Game Language). Para validao de conceito, um jogo de aventura foi criado na plataforma AndEngine [35]. A partir da FGL possvel configurar algumas particularidades do jogo, de forma a selecionar os personagens que vo interagir, bem como pontuao, orientao da tela, etc. 6.1. Definio textual da linguagem O primeiro passo para criao da linguagem ter em mente quais problemas sero resolvidos pela mesma. Fazendo uso do Eclipse Xtext [37], a linguagem textual do

23

FGL foi definida, de forma que apenas algumas particularidades do jogo sero controladas. As caractersticas da linguagem esto descritas nas Figuras 10 11.
grammar org.fgl.core.dsl.FGDsl with org.eclipse.xtext.common.Terminals generate fGDsl "http://www.fgl.org/core/dsl/FGDsl" Model: 'Game' name=STRING '{' (imports +=Import)* (elements += Type)* (configs += GameConfig)* '}';

GameConfig: 'config' name=ID '=>' configName=ConfigName ; ConfigName: ID ('.' ID)* ; Import : 'import' importURI=STRING; Type: SimpleType | Entity; SimpleType: 'type' name = ID; Entity : 'entity' name=ID ('extends' extends=[Entity]) ? '{' properties+=Property* '}'; Property: 'property'name=ID ':' type=[Type] (many?='[]')?;

Figura 10 Definio da linguagem textual FGL.

A Figura 10 descreve a gramtica textual utilizada na definio da linguagem FGL. A nomenclatura da linguagem est definida na prpria biblioteca do Xtext. Com ela possvel expressar detalhes internos do cdigo, tais como: o Jogo pode possuir N entidades, N configuraes, etc.

24

Item Game Config Type Entity Property

Descrio O nome do Jogo e suas propriedades. As configuraes do jogo, resoluo, cor de fundo, etc. Variveis que podem ser utilizadas no jogo. Entidades do Jogo. Propriedades do Jogo.
Tabela 4: Propriedades da Linguagem FGL

6.2. Linguagem FGL Aps a definio da linguagem, possvel execut-la na IDE de destino, no caso do Xtext, o Eclipse. Sendo possvel utilizar todos os recursos j disponveis na plataforma. Tais como: Outline, code-completion, code-coloring,problems etc.

Figura 11 Linguagem do FGL.

25

A Figura 11 a prpria implementao do jogo usando a FGL, com ela possvel definir os detalhes que sero utilizados para criao do jogo. A linguagem FGL utilizada como um Script para a Engine do Jogo, definindo as configuraes do mesmo. 6.3. Jogo criado a com a linguagem FGL Para criao do estudo de caso, a arquitetura de referncia para o jogo foi criada com o AndEngine, a FGL faz uso deste framework para configurar os personagens, bem como os recursos do jogo. A linguagem pode ser melhorada para suportar diversas caractersticas do jogo que no foram viabilizadas, tais como: Cenrios, Multi-touch, nveis, etc.

Figura 12. Jogo criado com auxlio da FGL.

26

A Figura 12 apresenta uma adaptao do Jogo AlexKid16, Sega Master System, 1986, com o intuito de validar a linguagem FGL. Observa-se que caractersticas como o nome do jogo, orientao da tela, personagens e inimigos foram definidos na Figura 11. 7. Consideraes finais Este artigo especifica uma linguagem para criao rpida de Jogos de forma simples, de fcil entendimento e manuteno, onde os artefatos que so gerados a partir dela, esto embarcados na prpria DSL sendo possvel modific-los sem muita complexidade. O propsito de construir uma DSL foi o de facilitar a vida de um desenvolvedor que deseja criar um determinado estilo de Jogo. As ferramentas apresentadas demonstram alguns de artefatos utilizados na criao de um jogo, porm algumas se detm um sistema operacional especfico e ao estilo de jogabilidade (ao, estratgia, rpg). Uma das que mais se destacou foi a engine SharLudos, por fornecer duas perspectivas de desenvolvimento (visual e textual) onde o desenvolvedor pode interagir com ambas. O objetivo deste estudo foi demonstrar a utilizao do projeto Eclipse Xtext juntamente com o framework AndEngine, que se uniram perfeitamente, por utilizarem a mesma base tecnolgica (Java) e permitir uma melhor extensibilidade dos componentes e a construo de outros. 7.1. Trabalhos futuros Em verses futuras da linguagem o objetivo criar famlias de jogos para dispositivos mobile como Angry Birds17, Mega Jump18, etc. Alm de permitir que a DSL seja especificada para diversas plataformas (iOS, Windows Mobile, etc) como descrito por Dean Kramer [36]. 7.2. Agradecimentos

16
17

http://pt.wikipedia.org/wiki/Alex_Kidd http://www.rovio.com/en/our-work/games/view/1/angry-birds 18 http://itunes.apple.com/us/app/mega-jump/id370398167?mt=8

27

A Deus, a Carol Vasconcelos, minha esposa, ao meu filho que est por vir (Luciano), ao meu orientador Vincius Cardoso Garcia, que me incentivou e me deu subsdios necessrios para realizao deste trabalho e a todos da minha equipe do mestrado (Marcela Oliveira, Walter Felipe, Richardson Oliveira, Cesar e Iber), que por e-mails, discusses e reunies, incentivaram e sugeriram melhorias para os trabalhos individuais. 8. Referncias Bibliogrficas
[1] ESA - Entertainment Software Association, Essential Facts about the Computer and Video Game Industry, 2005; Sharpludus: Improving Game Development Experience Through Software Factories And DomainSpecific Languages, Dissertao de Mestrado de Andr Wilson Brotto Furtado, 2006. Cut the Rope http://macmagazine.com.br/2010/10/14/cut-the-rope-e-um-game-fofo-inteligente-elucrativo-um-novo-angry-birds/ Acessado em 19/01/2012 Advantages of Rapid Application Development http://www.buzzle.com/articles/advantages-of-rapid-application-development.html Moving to Software Factories http://blogs.msdn.com/b/askburton/archive/2004/09/20/232021.aspx Game Maker - http://www.yoyogames.com/make - Acessado em 21/10/2011; 2010. RPG Maker VX: Role Playing Game Maker. http:// www.rpgmakerweb.com Gameka: Uma ferramenta de desenvolvimento de jogos para no programadores. Igor Augusto de Faria Costa, SBC - Proceedings of SBGames 2011. PARR, Terrance. The Definitive ANTLR Reference: Building Domain Specific Languages. Pragmatic Programmer, 2007

[2] [3] -

[4] -

[5] -

[6] [7] [8] -

[9] -

[10] - A model-driven framework for domain specific languages demonstrated on a test automation language http://karlsch.com/frodo.pdf Acessado em 17/02/2011 [11] - Marjan Mernik, Jan Heering, and Anthony M. Sloane. When and how to develop domain-specific languages. ACM Comput. Surv., 37(4):316344, December 2005. ISSN 0360-0300. http://portal.acm.org/citation.cfm?id=1118890.1118892 [12] - The Standish Group, 2009 Standish Chaos Report, http://www1.standishgroup.com/newsroom/chaos_2009.php - Acessado em 21/10/2011 [13] - O caso das fbricas de software - Jack Greenfield - Microsoft Corporation http://msdn.microsoft.com/pt-br/library/aa480032.aspx [14] - Eclipse Modeling Framework: A Developer's Guide - Addison Wesley. August 11, 2003

28

[15] - NEIGHBORS, J. M. 1984. The Draco approach to constructing software from reusable components. IEEE Trans. Softw. Eng. SE-10, 5 (Sept.), 564 574 [16] - Acelerando o processo de desenvolvimento de Software com Arquiteturas Dirigidas por Modelo (MDA). Monografia da Ps-Graduao em Tecnologia da Informao Jimens Lima 2009. [17] - Kieburtz, R. B.; McKinney, L.; Bell, M.; Hook, J.; Kotov, A.; Lewis, J.; Oliva, D. P.;

Sheard, T.; Smith, I.; Walton, L. A software engineering experiment in software component generation, in Proceedings of the 18th International Conference on Software Engineering, 1996;
[18] - Van Deursen, A.; Klint, P. Little languages: Little maintenance?, Journal of Software Maintenance, 1998; [19] - Menon, V.; Pingali, K. A case for source-level transformations in MATLAB, in Proceedings of the second USENIX Conference on Domain-Specific Languages, 1999; [20] - Bruce, D. What makes a good domain-specific language? APOSTLE, and its approach to parallel discrete event simulation, in First ACM SIGPLAN Workshop on Domain-Specific Languages, 1997; [21] - Eclipse Xtext - http://www.eclipse.org/Xtext/ [22] - Cocos2d - http://www.cocos2d-iphone.org/ [23] - Eclipse Modeling Framework Project (EMF) - http://www.eclipse.org/modeling/emf/ [24] - Addison Wesley, Eclipse Modeling Framework: A Developer's Guide - Captulo 5. Ecore Modeling Concepts Pgina 103. [25] - Model-Driven Product-Line Architectures for Mobile Devices - Douglas C. Schmid Vanderbilt University [26] - 4GT Four Generation Techniques http://en.wikipedia.org/wiki/Fourth-generation_programming_language [27] - Richard C. Gronback, Eclipse Modeling Project: A Domain-Specific Language (DSL) Toolkit. 2009 [28] - GARDNER, T.; YUSUF, L. Explore model-driven development (MDD) and related approaches: a closer look at model-driven development and other industry initiatives. v. 2008, 2006. http://www.ibm.com/developerworks/library/ar-mdd3 [29] - Domain-Specific Modeling http://www.visualmodeling.com/DSM.htm (Acessado em: 20/10/2011) [30] - Applying Model-Driven Development to Reduce Programming Efforts for Small Application Development http://sunsite.informatik.rwth -aachen.de/Publications/CEUR-WS/Vol-455/paper03.pdf [31] - GARDNER, T.; YUSUF, L. Explore model-driven development (MDD) and related approaches: a closer look at model-driven development and other industry initiatives. v. 2008, 2006. http://www.ibm.com/developerworks/library/ar-mdd3

29

[32] - Eric Evans. Domain-Driven Design: Tacking Complexity In the Heart of Software. AddisonWesley Longman Publishing Co., Inc., Boston, MA, USA, 2003. ISBN 0321125215. [33] - A. B. Sutman J. M. Schementi. Video game language. Masters thesis, Worcester Polytechnic Institute, 2005. [34] - Jeroen Dobbe, A Domain-Specific Language for Computer Games, Masters thesis, Department of Software Technology Faculty EEMCS. [35] - AndEngine - http://www.andengine.org/ - Acessado em 21/10/2011 [36] - Gameka: Uma ferramenta de desenvolvimento de jogos para no programadores. Igor Augusto de Faria Costa, SBC - Proceedings of SBGames 2011 [37] - MobDSL: A Domain Specific Language for multiple mobile platform deployment

30