RPGEDU: Estudo de caso da aplicação de linguagens de script em jogos educativos

Documentos relacionados
Algoritmos e Programação

Algoritmos e Programação

Algoritmos e Programação

Linguagem de Programação e Compiladores

Capítulo 4. Arquitetura e Linguagens para Jogos 34 decisão, entre outros [48]. A função da Física é calcular o movimento, rotações e resposta de colis

Linguagens de Domínio Específico

AULA 1 INTRODUÇÃO AO JAVA

Powered by. Tiago Bockholt

Métodos de implementação de linguagens. Kellen Pinagé

2.1 NesC Seguem alguns dos principais desafios impostos à linguagem NesC:

Linguagens de Programação. Introdução. Carlos Bazilio

Fundamentos de Programação 1

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Obs.: para realizar estas atividades tenha certeza de que já tenha instalado no sistema operacional o Java JDK e o NetBeans.

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Informática Parte 15 Prof. Márcio Hunecke

Desenvolvimento de Software I

Técnico em Informática. Web JavaScript. Profª Ana Paula Mandelli

Tutorial sobre o uso da ferramenta de autoria A Ferramenta de Autoria - Célula

Programação de Computadores

Linguagens de Programação

Game Renascença na disciplina de Literatura Portuguesa no curso superior de Letras

Programação de Computadores

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Linguagens de Programação

VISEDU: JOGO DE REALIDADADE AUMENTADA DE LETRAS COM CONTEÚDO DINÂMICO

Aula 11 Introdução ao Java Script

ara entender os Sistemas Gerenciadores de Banco de Dados é importante conhecer

Programação de Computadores

Noções de sistemas de computação

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação

Capítulo 1. Aspectos Preliminares

COMPUTAÇÃO PARALELA E DISTRIBUÍDA

Manual de Operação do MGV 5. Manual de Operação do MGV5. Módulo Gerenciador de Vendas. Toledo

por parte dos usuários dos sistemas de computação se tornou menos necessária e a popularidade desse tipo de linguagem diminuiu. Mais recentemente, a

Bruno da Silva de Oliveira. Hydra: Compilação Distribuída de código fonte

Introdução à plataforma Java

SOFTWARE. Disciplina: Informática Professor: Gustavo Sabry

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Introdução à Computação

IrrRPG Builder Uma Ferramenta Livre Para Desenvolvimento de Jogos Eletrônicos de RPG

3. Linguagem de Programação C

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

DESENVOLVIMENTO DE UM APLICATIVO EM REALIDADE VIRTUAL PARA MODELOS ÓSSEOS ATRAVÉS DO UNITY

Desenvolvimento de um Jogo de Xadrez em Java

Linguagens de Domínio Específico

Figura 16 Niagara - Visão de grupos de notas.

Sistema Computacional

Nomes, vinculações e escopos

Computação I - Python Aula 1 - Teórica: Introdução

Instalação JDK. Joyce França. Professora de Ciência da Computação - IFNMG

Como as aplicações de entretenimento (em especial jogos digitais) têm enfrentado um constante crescimento, tanto em tamanho quanto em complexidade,

INTRODUÇÃO. Prof. Msc. Luis Filipe Alves Pereira 2015

1/ 36. Computação 1 - Python Aula 1 - Teórica: Introdução

Sistemas Operacionais. Estrutura do Sistema Operacional

Trabalho Final de SISTEMAS INTEGRADOS DE MANUFATURA

Laboratório de Programação 1 Algoritmos e a Lógica de Programação

Projeto de Sistemas para Internet

Weby - O Gerenciador de Conteúdo Web para IFES

Manual de instruções. Botão Esquerdo. Botão Direito. Scroll. Avançar. Escolha DPI. Retroceder

Instalação JDK 10/03/2017

Linguagem de Programação I

Aspectos preliminares

Introdução a Programação Orientada a Objetos

Expressões e sentença de atribuição

3 Sistema Operacional Scriptável

Linguagens de Programação. Marco A L Barbosa

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

14. CONEX Produto Resumo Expandido - ISSN

ENTRUST: SOLUÇÃO E APRESENTAÇÃO GRÁFICA DE FUNÇÕES 1

CP Introdução à Informática Prof. Msc. Carlos de Salles

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

SCALA! Mariah Barros Cardoso Ruann Magalhães Homem Rudá Martinez Pimentel Deeke Yuri Pereira Constante

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

Fiery Command WorkStation 5.8 com Fiery Extended Applications 4.4

Introdução à Programação de Computadores Fabricação Mecânica

Sistemas Operacionais II. Linux - Introdução

Introdução ao IDE Netbeans (Programação Java)

TRIGGERS Temas abordados

Prof. Me. Sérgio Carlos Portari Júnior

Modelo de Desenvolvimento Software Tema Wordpress

Novidades da Plataforma de suporte remoto 3.0

Nomes, vinculações e escopos

Servidores. Um Servidor, em redes de computadores, nada mais é que um host da rede capaz de oferecer um determinado serviço a outros hosts da redes.

Linguagem de Programação Lua

Laboratório 01 NetBeans

PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.

Aula 4 TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I. Marcelo Henrique dos Santos

1 Introdução à Programação O que é? Para que serve?... 1

API - Lista de Compras

Projeto Lógico de Computadores. Profa. MSc. Carolina Melo Santana

MANUAL DE INSTALAÇÃO. LSoft Gestão Empresarial

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador

INFORMÁTICA. 04. Pode-se dizer que tanto o Windows, quanto o Linux possuem o kernel aberto, podendo ser facilmente customizados pelos usuários.

UMA INTERFACE DE GERENCIAMENTO DE REDES DEFINIDAS POR SOFTWARE

DESENVOLVIMENTO DE UM APLICATIVO EM REALIDADE AUMENTADA PARA O ENSINO DE ANATOMIA

Sistema Gerenciador de Conteúdo. Maria de Fátima de Freitas Bueno Marcílio

Transcrição:

RPGEDU: Estudo de caso da aplicação de linguagens de script em jogos educativos Heitor Adão Júnior., Rudimar Luiz Scaranto Dazzi Grupo de Inteligência Aplicada Universidade do Vale do Itajaí (UNIVALI) Itajaí SC Brasil heitoradao@gmail.com, rudimar@univali.br Abstract. The use of languages of script comes increasing in the development of games and the educative games also follow this movement. The maintenance and magnifying of the educative games are important to keep the interest of the students in the game and the languages of script can facilitate this process significantly. This article describes the main characteristics of the languages of script and as they become related with the development of educative games to create flexible games with structures and contents, presenting examples of implemented pedagogical activities with languages of script. Resumo. A utilização de linguagens de script vem aumentando consideravelmente no desenvolvimento de jogos e os jogos educativos também seguem esse movimento. A manutenção e ampliação dos jogos educativos são importantes para manter o interesse dos alunos no jogo e as linguagens de script podem facilitar sensivelmente esse processo. Este artigo descreve as principais características das linguagens de script e como elas se relacionam com o desenvolvimento de jogos educativos para criar jogos com estruturas e conteúdos flexíveis, apresentando exemplos de atividades pedagógicas implementadas com linguagens de script. 1. Introdução Atualmente, um problema enfrentado por professores e pedagogos na utilização de softwares educativos é a pouca flexibilidade dos sistemas disponíveis. Podemos observar na maioria dos jogos educativos disponíveis no mercado, um conteúdo estático e uma estrutura rígida. Os jogos educativos com conteúdo estático agem em um contexto específico e uma vez que o usuário aprende o conteúdo que o software apresenta, o jogo deixa de fornecer desafios ao jogador e perde a diversão. Este trabalho vem propor uma solução para este problema, utilizando linguagens de script para tornar as aplicações mais flexíveis e dinâmicas, permitindo assim sua fácil modificação e extensão. 1.1 RPGEDU Esta proposta surgiu após experiências na integração de um sistema de scripting para o projeto RPGEDU, um projeto de pesquisa cujo objetivo é o desenvolvimento de um jogo didático do tipo Role Playing Game (RPG) em terceira dimensão. Esse projeto tem como público alvo os alunos de 5ª a 8ª séries do ensino fundamental. O conteúdo pedagógico aborda várias disciplinas diferentes.

No desenvolvimento do projeto, utilizou-se a engine Ogre3D para a renderização de imagens, Crazy Eddie's GUI System (CEGUI) para o desenvolvimento da interface com o usuário, a biblioteca OPAL para a detecção de colisão, a biblioteca OpenAL para a sonoplastia, a linguagem C++ no desenvolvimento do núcleo do jogo e a linguagem de script LUA para o desenvolvimento das atividades pedagógicas e implementação do comportamento dos Non Player Characteres (NPC). Foi usada também a biblioteca LuaBind para facilitar a integração com o script. O foco deste artigo é mostrar os benefícios proporcionados pelo uso de linguagens de script em jogos educativos. Na seqüência será apresentada uma visão geral sobre linguagens de script, seus benefícios e algumas características de algumas das linguagens disponíveis. Em seguida serão apresentados exemplos de utilização de linguagens de script em atividades pedagógicas, e por fim as conclusões do artigo. 2. Linguagens de script Linguagens de script são linguagens de programação desenvolvidas com o objetivo de facilitar a extensão de aplicativos e sistemas, permitindo que qualquer pessoa possa alterar o comportamento de uma parte do programa sem a necessidade de re-compilação e usando uma linguagem de alto-nível de abstração [Valente 2005]. A diferença entre linguagens de script e as linguagens de programação tradicionais compiladas é que os scripts são interpretados em tempo de execução, ao passo que nas linguagens de programação tradicionais, o código-fonte é transformado em código de máquina em tempo de compilação pelos projetistas do sistema e a partir desse momento não pode mais ser alterado. É essa característica que permite que uma única aplicação contenha diferentes tipos de configurações e comportamentos, dependendo exclusivamente do script que está sendo executado por ela. Os scripts podem ser executados em um interpretador embarcado em uma aplicação ou em uma máquina virtual depois de pré-compilados para bytecode. Quando executado em uma máquina virtual, o script está limitado ao conjunto de instruções nela programadas. Quando executado por meio de um interpretador embarcado, torna-se possível a criação de novos conjuntos de instruções para serem utilizados no script. [Valente 2005] Atualmente existem várias linguagens de script disponíveis, dentre estas, pode-se citar as linguagens Lua, Ruby, Python, AngelScript, GameMonkey, Squirrel e JavaScript. Para o projeto RPGEDU, a linguagem Lua foi escolhida por ser de alto nível, possuir sintaxe simples e de fácil aprendizado, possui código aberto e um alto desempenho comparada às outras linguagens [Debian 2007]. Lua também é distribuída gratuitamente. Tabela 1. Características das principais linguagens de script Característica Multi- Garbage Orientação Dinamicamente Error Multiplataforma Linguagem Thread Colector a Objetos tipada Handling Lua x x x x Ruby x x x x x Python x x x A maioria dos jogos usam uma forma de apresentar conteúdo diferente da que é fornecida pelo sistema operacional, com o objetivo de apresentar as informações de forma mais lúdica. É possível acrescentar novas funções e estruturas de dados à linguagem lua. Utilizando a biblioteca externa LuaBind, é possível também, compartilhar classes de objetos. Utilizando estes recursos é possível fazer com que o script controle subsistemas peculiares da aplicação. Isso pode permitir que o script mostre informações de acordo com o padrão do jogo, por exemplo.

2.1 Ruby Script Ruby é uma linguagem de script orientada a objetos. Seu criador, Yukihiro Matsumoto, mesclou partes das suas linguagens favoritas (Perl, Smalltalk, Eiffel, Ada, e Lisp) para formar uma nova linguagem que balanceia programação funcional com programação imperativa (MATSUMOTO, 2007). Ruby é uma linguagem popular no Japão, por este motivo a maior parte da documentação está disponível no idioma japonês. O RPGMaker é uma ferramenta para desenvolvimento de jogos do tipo RPG em 2D (Enterbrain). Ele possui um sistema de script integrado utilizando a linguagem Ruby. Esse sistema permite que você altere o comportamento interno do engine. Uma grande vantagem de utilizar a linguagem de script Ruby seria que, mantendo uma compatibilidade entre o RPGEDU e RPG Maker XP (RMXP), poderíamos desenvolver as atividades pedagógicas e comportamento dos agentes no RMXP, concomitantemente ao motor principal do RPGEDU. Depois que o motor estivesse pronto, só precisaríamos portar as atividades pedagógicas e os agentes. Outra vantagem é que os jogos feitos para o RMXP poderia ser portados com mais facilidade para o RPGEDU, caso a linguagem Ruby fosse utilizada. Figura 2. Exemplo de código que faz a integração entre as linguagens Ruby e C. 3. Benefícios proporcionados com o uso de scripting em jogos O Jogo do Milhão é um exemplo de um jogo com conteúdo estático. Ele possui um conjunto de perguntas que não pode ser modificado, não é possível acrescentar novas perguntas e nem excluir as perguntas já existentes. Poucos jogos educativos permitem uma parametrização de seu conteúdo. Permitir parametrizar o conteúdo, no exemplo acima seria o mesmo que permitir ao usuário inserir novas perguntas e remover ou modificar as perguntas já existentes. Apenas a parametrização do conteúdo não é a melhor solução. O ideal é que o jogo possua uma estrutura flexível que permita que o usuário modifique não apenas o conteúdo, mas também o comportamento do jogo.

Essa estrutura deve permitir ao script processar os eventos gerados e exibir respostas adequadas ao evento. No contexto do RPGEDU, cada atividade pedagógica está associada a um arquivo de script que contém instruções responsáveis pela construção, apresentação e também avaliação da solução. Quando o jogador colide com um NPC, este poderá disparar um evento que está associado a um script de atividade, depois de ativado, o script apresenta uma atividade ao usuário. O RPGEDU é um exemplo de jogo que possui uma estrutura flexível, isso significa que suas atividades podem ter comportamentos diferentes. Entre suas atividades pedagógicas, podese encontrar perguntas de múltipla escolha, tarefas de associação com mouse entre imagem e significado, tarefas de ordenação de imagens utilizando o mouse, mas não se limitando a somente esses tipos. 4. Exemplo de atividade pedagógica utilizando scripting No contexto do RPGEDU, antes de o usuário iniciar uma atividade, o sistema verifica se a atividade está disponível ou se já não foi realizada, podendo então executá-la em caso afirmativo. Atividade de múltipla escolha. As atividades pedagógicas são desenvolvidas utilizando alguns componentes de formulários fornecidos pela biblioteca CEGUI como radio buttons, buttons e check boxes. Dentro da atividade, quando o usuário pressiona um botão do mouse, o núcleo do sistema verifica se o usuário clicou em cima de algum componente e comunica ao script o nome do componente, para que este determine a ação que deve ser tomada.

Trecho do script executado quando um determinado evento é disparado. Atividade usando o conceito de associação Cada script associado a uma atividade pedagógica deve conter uma função especial denominada de update(). Essa função é responsável por responder aos eventos gerados pela interação do usuário com a interface da atividade. Essa função deve saber qual componente da interface disparou o evento para responder adequadamente, mostrando mensagens, alterando estados de componentes, etc. O núcleo do RPGEDU trata as atividades como se fossem iguais. Para o núcleo não importa se a atividade em questão é uma atividade de múltipla escolha ou de associação. O tratamento diferenciado é feito totalmente pelo script.

5. Idéias para o futuro Outra atividade usando o contexto de associação. A utilização de linguagens de script viabiliza o desenvolvimento de jogos mais flexíveis e com capacidade de múltiplos conteúdos. Entretanto, esta solução ainda colide com a necessidade do usuário possuir conhecimentos em programação, algo indesejável para muitos projetos. Uma das possíveis soluções pra contornar este problema, é o desenvolvimento de front-ends e/ou editores que geram automaticamente os parâmetros para esses scripts, apresentando assim uma interface amigável ao usuário, não necessitando que ele tenha conhecimentos em programação para poder alterar as atividades existentes ou incluir suas próprias. Outra alternativa é fazer com que o jogo verifique através da internet, se os scripts que possui já são atualizados ou não e atualizar aqueles que forem necessários. Com essa abordagem, a atualização dos scripts do jogo é facilitada ainda mais, permitindo que o professor ou pedagogo atualize uma atividade pedagógica em todos os jogos de seus alunos, desde que estes estejam configurados para buscar atualizações em um mesmo servidor, definido pelo pedagogo. 6. Conclusão O uso de linguagens de script mostrou-se eficiente no desenvolvimento das atividades pedagógicas e trouxe uma maior agilidade no desenvolvimento por sua flexibilidade, praticidade e simplicidade. Uma das maiores vantagens da utilização de linguagem de script é a possibilidade de fazer alterações (adaptações, expansões, etc) nos jogos sem precisar recompilar todo o projeto, pois para tal, basta fazer os ajustes nos arquivos dos scripts que o jogo já estará com as modificações efetuadas. Embora ainda seja necessário um conhecimento de programação para que se possa alterar a estrutura de um jogo que usa script, os custos de manutenção deste jogo são reduzidos substancialmente e qualquer pessoa pode fazer essas alterações, pois não é necessário ter conhecimento sobre o funcionamento interno do jogo e nem acesso aos códigos-fonte. A alteração do conteúdo do jogo pode ser feita por qualquer pessoa, mesmo que não possua conhecimento em programação. Mas é necessário que os desenvolvedores da estrutura da atividade forneça meios para isto, através de front-ends e/ou editores de conteúdo com interfaces amigáveis, por exemplo.

Referências Debian (2007). The Computer Language Benchmarks Game, http://shootout.alioth.debian.org, Abril. Gutshcmidit, Thomas (2003). Game Programming with Python, Lua and Ruby. Premier Press. Ierusalimschy, R., Figueiredo, L. H. & Celes W. (2006), http://www.lua.org/manual/5.1/manual.html, Janeiro. Matsumoto, Y (2005) RUBY: What s Ruby, http://www.rubylang.org/en/20020101.html, Julho. PUC-RIO (2007), The Programming Language Lua, http://www.lua.org, Janeiro. Valente, L. (2006). Guff: Um Framework para Desenvolvimento de Jogos, (Mestrado), Programa de Pós-Graduação em Computação da Universidade Federal Fluminense, Niterói.