MESTRADO EM SISTEMAS E COMPUTAÇÃO
EUPAT for WoW
:
Uma Ferramenta de
Assistência à Programação por Usuário
Final
Marcelo de Barros Barbosa
Marcelo de Barros Barbosa
EUPAT for WoW
: Uma Ferramenta de
Assistência à Programação por Usuário
Final
Dissertação de Mestrado apresentada ao Departamento de Informática e Matemática Aplicada do Centro de Ciências Exatas e da Terra da Universidade Federal do Rio Grande do Norte como requisito parcial para a obtenção do grau de mestre em Sistemas e Computação.
Orientador
Prof. Dr. Jair Cavalcanti Leite
Universidade Federal do Rio Grande do Norte – UFRN
Departamento de Informática e Matemática Aplicada – DIMAp
Dissertação de Mestrado sob o título EUPAT for WoW: Uma Ferramenta de Assistência à Programação por Usuário Final apresentada por Marcelo de Barros Barbosa e aceita pelo Departamento de Informática e Matemática Aplicada do Centro de Ciências Exatas e da Terra da Universidade Federal do Rio Grande do Norte, sendo aprovada por todos os membros da banca examinadora abaixo especificada:
__________________________________________ Prof. Dr. Jair Cavalcanti Leite
Orientador
Universidade Federal do Rio Grande do Norte – UFRN
Departamento de Informática e Matemática Aplicada – DIMAp
__________________________________________ Prof. Dr. Leonardo Cunha de Miranda
Universidade Federal do Rio Grande do Norte – UFRN
Departamento de Informática e Matemática Aplicada – DIMAp
__________________________________________ Profa. Dra. Simone Diniz Junqueira Barbosa
Pontifícia Universidade Católica do Rio de Janeiro – PUC-Rio
Departamento de Informática – DI
EUPAT for WoW
: Uma Ferramenta de Assistência à
Programação por Usuário Final
Autor: Marcelo de Barros Barbosa Orientador: Prof. Dr. Jair Cavalcanti Leite
R
ESUMO
Neste trabalho, apresentamos uma ferramenta cujo intuito é auxiliar não-programadores, jogadores de videogame, na criação de extensões na
forma de Add-ons para World of Warcraft, o jogo online. Nele, o usuário pode
criar extensões customizando completamente sua interface, de forma a reinventar a sua experiência de jogo e melhorar sua jogabilidade. A criação de extensões para aplicativos e jogos surgiu da crescente necessidade de fornecer aos usuários mecanismos eficientes de Programação por Usuário Final, permitindo que os mesmos preenchessem suas necessidades singulares através da criação, customização e especificação de extensões em software. Em World of Warcraft mais especificamente, os Add-ons exploram um tipo de extensão na qual os jogadores passam a programar sua própria interface de usuário ou a fazer uso de interfaces criadas por outros usuários. No entanto, realizar a programação dessas extensões - os Add-ons - não é
uma tarefa fácil. Dentro deste contexto, desenvolvemos a ferramenta EUPAT
for WoW (do inglês, End-User Programming Assistance Tool for World of Warcraft) que oferece assistência à criação de Add-ons. Além disso, investigamos como usuários jogadores com e sem conhecimento de programação são beneficiados. Os resultados desta pesquisa permitiram refletir sobre as estratégias de assistência de programação por usuário final no contexto de jogos.
Palavras-chave: Linguagem de programação visual, ambiente de
EUPAT for WoW:
An End-User Programming
Assistance Tool
Author: Marcelo de Barros Barbosa Advisor: Prof. Dr. Jair Cavalcanti Leite
A
BSTRACT
In this work, we present a tool whose purpose is to assist
non-programmer gamers in creating Add-on program extensions for World of
Warcraft, the online game. In World of Warcraft, players not only create extensions, they reinvent their entire gaming experience, improving gameplay and completely customizing their user interface. Development of extensions for games and applications emerged from the need to offer users efficient ways of End-User Programming, allowing them to fulfill their singular needs through the creation, customization and specification of application extensions in software. In World of Warcraft, more precisely, Add-ons encompass a kind of extension where players start to program their own user interface or make use of other player's user interfaces. However,
programming World of Warcraft extensions - the Add-ons - isn't an easy task.
In this context, we developed EUPAT for WoW (End-User Programming
Assistance Tool for World of Warcraft) whose purpose is to help end-users on
creating their own Add-ons. Furthermore, we investigate how end-user
gamers with and without programming knowledge benefit from EUPAT for
WoW. The results from our research allow us to ponder assistance strategies
for end user programming in games.
Keywords: Visual programming language, novice programming environment, education, making games, end-user programming, human-computer
Lista de Abreviaturas
API Application Programming Interface AWT Abstract Window Toolkit
EUP End-User Programming
EUPAT End-User Programming Assistance Tool MMORPG Massive Multiplayer Online Role-Playing Game NPC Non-Player Character
RPG Role-Playing Game UI User Interface
Lista de Figuras
Figura 1. Azeroth o mundo de World of Warcraft. ... 24
Figura 2. Escolhendo um Realm em World of Warcraft. ... 26
Figura 3. Criando um personagem em World of Warcraft. ... 27
Figura 4. Quests (ou missões) em World of Warcraft são geralmente recebidas de NPCs. ... 28
Figura 5. Grupo em World of Warcraft após derrotar um desafio. ... 28
Figura 6. Interface de Usuário básica em World of Warcraft. ... 32
Figura 7. Elementos de Interface. ... 32
Figura 8. Interface de Usuário modificada por Add-ons em World of Warcraft. ... 33
Figura 9. Elementos de Interface modificados. ... 33
Figura 10. Exemplo de criação de Add-ons. ... 34
Figura 11. Código fonte do exemplo de criação de Add-ons. ... 35
Figura 12. Áreas de edição do EUPAT for WoW. ... 52
Figura 13. Construindo um Add-on simples usando o EUPAT for WoW. Criando variáveis.. ... 55
Figura 14. Construindo um Add-on simples usando EUPAT for WoW. Criando um condicional IF. . 56
Figura 15. Construindo um Add-on simples usando EUPAT for WoW. Criando um Frame e adicionando variáveis ao mesmo. ... 57
Figura 16. Exemplo de Add-on sendo construído no EUPAT for WoW ... 59
Figura 17. Exemplo de Add-on sendo construído no EUPAT for WoW. ... 60
Figura 18. Exemplo de Add-on simplificado. ... 61
Figura 19. Exemplo de Add-on construído em Lua. ... 63
Figura 20. Diagrama de classes simplificado da EUPAT for WoW. ... 67
Figura 21. Os participantes levaram significativamente menos tempo utilizando a ferramenta (esquerda) do que utilizando apenas Lua (direita). ... 97
Figura 22. Os participantes precisaram de ligeiramente menos tentativas utilizando a ferramenta (esquerda) do que utilizando apenas Lua (direita). ... 98
Figura 24. Os participantes precisaram de uma quantidade relativamente parecida de tentativas
Lista de Tabelas
Tabela 1. Listagem de técnicas aplicadas a critérios. ... 45
Tabela 2. Relação Ferramentas x Critérios ... 46
Tabela 3. Relação dos participantes do Grupo 1. ... 82
Tabela 4. Desempenho dos participantes do Grupo 1 para a primeira parte da Tarefa. ... 82
Tabela 5. Desempenho dos participantes do Grupo 1 para a segunda parte da Tarefa. ... 83
Tabela 6. Relação dos participantes do Grupo 2. ... 85
Tabela 7. Relação dos participantes do Grupo 3. ... 86
Tabela 8. Desempenho dos participantes do Grupo 3 para a Tarefa. ... 86
Tabela 9. Resumo de desempenho para a avaliação. ... 88
Tabela 10. Desempenho dos programadores (não-Lua) para a criação de Add-ons com EUPAT for WoW. ... 96
Tabela 11. Desempenho dos programadores (não-Lua) para a criação de Add-ons sem a ferramenta (utilizando Lua). ... 97
Tabela 12. Desempenho dos programadores Lua para a criação de Add-ons com a ferramenta. ... 98
Tabela 13. Desempenho dos programadores Lua para a criação de Add-ons sem a ferramenta (utilizando Lua). ... 99
Tabela 14. Desempenho dos participantes não-programadores. ... 105
Tabela 15. Desempenho dos participantes não-programadores. ... 114
Sumário
1. Introdução 14
1.1 Motivação 15
1.2 Objetivos 17
1.3 Trabalhos Realizados 18
1.4 Organização do trabalho 20
2. Fundamentação 21
2.1 Programação por Usuário Final 21
2.2 Programação em World of Warcraft 24
2.2.1 O jogo 24
2.2.1.1 Iniciando em World of Warcraft 25
2.2.1.2 Jogando World of Warcraft 27
2.2.2 Criação de extensões em World of Warcraft 29
2.2.3 Os Add-ons e as Dificuldades da Programação em World of Warcraft 30
3. Estratégias para Criação de Extensões 37
3.1 Requisitos da EUP 37
3.2 Ferramentas de Auxílio à Programação por Usuário Final 41
3.3 Comparativo 45
3.4 Conclusão 47
4. A EUPAT for WoW 50
4.1 Sobre a EUPAT for WoW 50
4.2 O Ambiente da EUPAT for WoW 51
4.2.1 A Área de Exibição de Comandos 51
4.2.2 A área Comandos do Usuário 52
4.2.3 A Tela de Exibição 52
4.3.1 Exemplo 1 53
4.3.2 Exemplo 2 57
4.4 Facilidades da EUPAT for WoW 60
4.5 Limitações da EUPAT for WoW 64
4.6 Implementação 65
4.6.1 Instalação e Uso 66
4.6.2 Visão geral da arquitetura e principais componentes 67
4.6.2.1 EUPAT 67
4.6.2.2 Janela 67
4.6.2.3 Componente 68
4.6.2.4 Abas 68
4.6.2.5 Comandos 68
4.6.2.6 RotuloCustom 69
4.6.2.7 ShowTooltips 69
4.6.2.8 SalvarAddon 69
4.6.2.9 Filtro 70
5. Estudos Realizados 71
5.1 Primeiro Estudo 71
5.1.1 Metodologia 72
5.1.1.1 Perfil dos Participantes 73
5.1.1.2 Tarefas dos participantes 73
5.1.2 Resultados do Uso exploratório 78
5.1.3 Resultados da Construção de Add-ons 81
5.1.3.1 Grupo 1 - Programadores (Não-Lua) 82
5.1.3.2 Grupo 2 – Programadores (Lua) 84
5.1.3.3 Grupo 3 86
5.1.4 Análise Geral do estudo 88
5.2.1 Metodologia 91
5.2.1.1 Perfil dos participantes 91
5.2.1.2 Tarefas dos participantes 92
5.2.2 Resultados do Uso Exploratório 95
5.2.3 Resultados da Construção de Add-ons 96
5.2.3.1 Grupo 1 - Programadores (Não-Lua) 96
5.2.3.1 Grupo 2 - Programadores (Lua) 98
5.2.4 Análise Geral do estudo 100
5.3 Terceiro Estudo 101
5.3.1 Metodologia 102
5.3.1.1 Perfil dos participantes 102
5.3.1.2 Tarefas dos participantes 102
5.3.2 Resultados do Uso Exploratório 104
5.3.3 Resultados da Construção de Add-ons 105
5.3.4 Análise Geral do estudo 106
5.4 Quarto Estudo 107
5.4.1 Metodologia 107
5.4.1.1 Perfil dos Participantes 108
5.4.1.2 Tarefas dos participantes 108
5.4.2 Resultados do Uso Exploratório 113
5.4.3 Resultados da Construção de Add-ons 113
5.4.4 Resultados da Avaliação de Aprendizado 119
5.4.5 Análise Geral do Estudo 120
6. Considerações Finais 122
Referências 127
Anexo 4 - Respostas Grupo 1 140 Anexo 5 - Respostas Grupo 2 142 Anexo 6 - Respostas Grupo 3 144
Anexo 7 - Avaliação 146
Anexo 8 - Roteiro de Entrevista 2 150
1.
Introdução
Em muitas aplicações hoje em dia é possível fazer extensões para personalização através de mecanismos de programação pelo usuário final. A
Programação por Usuário Final (do inglês, End-User Programming ou EUP) é
a intenção de um usuário final de desenvolver um programa para alcançar determinado resultado primariamente para uso pessoal ao invés de público (Ko et al., 2010), independente da identidade desse usuário. Um exemplo clássico de EUP é a configuração de parâmetros em editores de texto comerciais ou navegadores para Internet, através do mecanismo de extensão por construção via wizards (Barbosa, 1999). Permitir a elaboração dessas extensões é um fator relevante. Segundo da Silva, “possibilitar a um usuário final personalizar suas tarefas certamente aumenta o potencial de
aplicabilidade e de usabilidade de uma aplicação” (Da Silva, 2001).
Existem vários outros exemplos de Programação por Usuário Final. Um deles é a gravação de macros no Microsoft Office, que permite aos usuários ativarem um gravador de instruções que registra e armazena cada passo de interação dentro de uma sequência de comandos (Frye, 2003). Outro exemplo é o Chickenfoot, uma extensão do Mozilla Firefox que permite ao usuário escrever scripts que manipulam páginas e automatizam o processo de navegação (Chickenfoot, 2007).
Existem várias estratégias para o ensino de conceitos e técnicas básicas de programação a usuários finais, sem a necessidade de cursos especializados (Antunes et al., 2006). Entretanto, aprender programação pode se tornar uma tarefa frustrante para o usuário inexperiente, visto que muitas vezes este não consegue enxergar resultados imediatos para o que está desenvolvendo.
Em paralelo, existem diversas ferramentas que buscam auxiliar o usuário ao facilitar o processo de programação, como por exemplo o Scratch (Scratch, 2009) e o Alice (Alice, 2009). Essas ferramentas foram desenvolvidas com o intuito de permitir que usuários finais sem conhecimento em programação consigam construir programas reduzindo seu esforço semântico, a partir de contextos motivacionais e linguagens visuais, e de sintaxe através de ambientes interativos de desenvolvimento.
Este trabalho investiga um caso específico de EUP onde a criação de
extensões requer programação através de linguagens de textos
convencionais (como C++, Lua, Java). Nosso intuito é verificar quais as dificuldades que os usuários finais encontram nessa atividade e como podemos auxiliá-lo no processo através de um estudo de caso da criação de extensões para o jogo World of Warcraft.
Para isso, este trabalho apresenta a EUPAT for WoW (do inglês, End-user Programming Assistance Tool for World of Warcraft) uma ferramenta que permite a construção de scripts em Lua que alteram a interface e o comportamento do jogo World of Warcraft (popularmente conhecido por seu acrônimo WoW).
1.1 Motivação
interessados. A adoção do uso de extensões em jogos já pode ser vista em alguns títulos no mercado, principalmente os que envolvem múltiplos jogadores online, como Second Life e Open Croquet (Antunes et al., 2006).
Ambos os exemplos citados são importantes na literatura por se tratarem de ambientes virtuais livres de imposições narrativas, os quais possibilitam a total criação e utilização de conteúdo por educadores (Antunes et al., 2006) a fim de serem moldados em ambientes virtuais educativos, destinados ao uso no ensino de conceitos básicos de programação a iniciantes.
Entre usuários, o exemplo mais popular na área de criação de extensões para interface é o jogo World of Warcraft. O World of Warcraft (popularmente conhecido por seu acrônimo, WoW) é um MMORPG (do inglês, Massively Multiplayer Online Role-Playing Game) da produtora Blizzard Entertainment - famosa também por títulos como Starcraft e Diablo - e apresenta um dos maiores públicos do mundo: mais de 12 milhões de jogadores (Guiness, 2009).
O uso de Programação por Usuário Final (EUP) em World of Warcraft nasceu a partir de uma tendência crescente no ramo de jogos. A quantidade exacerbada de usuários gerava um desafio: como construir uma interface que agradasse à grande diversidade de usuários espalhados por todo o mundo? A solução encontrada foi simples: deixar que eles mesmos construíssem suas próprias interfaces. Através da Programação por Usuário Final os jogadores passaram a possuir total liberdade de implementação: a interface do jogo passou a ser customizável, modificável e extensível. Tal solução tinha em vista não só a usabilidade do indivíduo, como usuário, como também do grupo de indivíduos, como comunidade de usuários que possuem a necessidade de expandir a sua experiência de jogo.
Como a criação de extensões para WoW nem sempre é uma tarefa fácil, exigindo do usuário-jogador conhecimentos de técnicas e linguagens de
programação, esperamos que, ao apresentar ferramentas como a EUPAT for
WoW, possamos auxiliar esses usuários a atingirem seus objetivos.
Um dos motivos para termos escolhido o jogo World of Warcraft é que
consideramos que os jogadores estão sempre ansiosos por obter vantagens no jogo que apenas são possíveis através da construção de extensões para o programa, de modo que esses usuários finais estão mais motivados e estimulados a produzirem software.
Em uma pesquisa realizada (Anexo 9) com 229 estudantes entre 15 e 19 anos, 201 (92%) afirmaram que, caso possível, gostariam de utilizar ferramentas que lhe oferecessem vantagens no jogo e 175 (80%) afirmaram que se sentiriam interessados a obter esse tipo de vantagem mesmo que precisassem programar. Entre eles, um número ainda maior – 208 (95%) – afirmam que se sentiriam motivados caso existisse uma forma de facilitar essa programação.
O desafio de facilitar e auxiliar a EUP de usuários finais que necessitam programar, tendo como foco o uso de EUP em jogos é o que motiva este trabalho. Nosso desafio é avaliar se a construção de uma ferramenta associada ao jogo World of Warcraft, a EUPAT for WoW, ajuda esses usuários finais a serem bem sucedidos na construção de programas,
mais especificamente, na construção de extensões em forma de Add-ons
para o jogo.
1.2 Objetivos
O objetivo deste trabalho é apresentar a ferramenta EUPAT for WoW e
O EUPAT for WoW é uma ferramenta interativa que facilita e auxilia a criação de Add-ons para World of Warcraft. Através dele, o usuário pode criar e salvar projetos, aprender um pouco mais sobre a linguagem Lua e técnicas de programação, ou exportar projetos de código completos no formato de Add-ons para WoW.
Neste trabalho, a construção de extensões (Add-ons) para World of Warcraft é um caso específico que será tomado como estudo de caso para explorar as dificuldades encontradas durante a EUP. Sabemos que usuários finais têm dificuldades em criar extensões quando é necessário programar em uma linguagem de programação. Identificamos os problemas enfrentados por esses usuários finais e, para eliminar essas barreiras e facilitar o processo, propusemos a criação de um ambiente de programação visual integrado ao jogo que permite a construção de extensões.
Nesse contexto, nosso objetivo é verificar se a EUPAT for WoW se apresenta como uma solução para auxiliar EUP no estudo de caso selecionado. O trabalho, juntamente com estudos realizados, vai permitir avaliar as vantagens e desvantagens dessa estratégia, e futuramente comparar com outras soluções. O estudo visa analisar também se é possível identificar características para desenvolver ferramentas que auxiliem usuários finais a resolverem ou minimizarem seus problemas de EUP.
1.3 Trabalhos Realizados
A EUPAT for WoW: Uma Ferramenta de Assistência à Programação por Usuário Final é um trabalho que vem sendo realizado ao longo da graduação e pós-graduação do discente. Desde então, o projeto se preocupou em realizar diversas avaliações - totalizando 4 (quatro) estudos - que refletiram em alterações tanto para a ferramenta desenvolvida quanto para a própria
pesquisa. Além dessas avaliações, a própria ferramenta EUPAT for WoW
versões diferentes, que refletiram tanto as mudanças apontadas por esses estudos como os requisitos de usabilidade levantados durante os mesmos.
A ferramenta EUPAT for WoW foi reportada também em forma de artigo
resumido submetido ao IX Simpósio Brasileiro de Jogos e Entretenimento
Digital (SBGames) sobre o título EUPAT for WoW: uma ferramenta para criação de extensões em Lua (Barbosa e Leite, 2010). Este artigo apresenta
uma versão inicial da EUPAT for WoW, apontando seu funcionamento e
possíveis aplicações. No entanto, no momento o qual foi submetido, ainda não haviam sido realizados nenhum dos estudos com a ferramenta.
Tais estudos começaram a ser preparados em um momento posterior. Durante o Trabalho de Conclusão de Curso (TCC), requisito para obtenção do diploma de graduação, foi apresentada a monografia sobre título EUPAT for WoW: um estudo sobre Programação por Usuário Final e Interfaces Programáveis em Jogos. Nessa monografia, foi reportada uma pesquisa sobre programação por usuário final com foco na criação de extensões em
interfaces para jogos e o primeiro estudo realizado com a ferramenta EUPAT
for WoW.
Já nesta dissertação, foram organizadas as pesquisas realizadas durante o período de graduação e pós-graduação, aprofundando o foco da pesquisa nas dificuldades de se realizar EUP de forma geral e nas metodologias e estratégias que poderiam ser aplicadas para facilitar essa programação em casos que o usuário iniciante precisa programar em linguagem de texto.
Além disso, durante o período da pós-graduação, foram realizados 3
(três) novos estudos com a ferramenta EUPAT for WoW. Esses estudos foram
úteis para apontar modificações a serem realizadas na ferramenta,
melhorias na metodologia de pesquisa e verificar se a EUPAT for WoW atingia
seu objetivo. Após cada estudo foi gerada uma nova versão da ferramenta, totalizando: uma versão inicial, três versões para refletir as sugestões dos
1.4 Organização do trabalho
O Capítulo 2, “Fundamentos Teóricos”, aborda as complicações e
dificuldades encontradas durante a criação de extensões para WoW, e apresenta algumas nuances da programação por usuário final. No Capítulo 3, “Estratégias para Criação de Extensões”, apresentamos possíveis soluções para contornar as dificuldades enfrentadas por usuários finais na criação de extensões. No Capítulo 4, “A EUPAT for WoW”, descrevemos a ferramenta que
desenvolvemos para esta pesquisa, a EUPAT for WoW, e alguns exemplos de
uso. Mais adiante, no Capítulo 5, apresentamos estudos realizadas com a
ferramenta EUPAT for WoW que contribuíram diretamente para a avaliação e
2. Fundamentação
Esse capítulo apresenta os conceitos e as dificuldades para se realizar EUP. Em seguida, descrevemos as dificuldades para se construir extensões no WoW com motivação para o nosso estudo de caso.
2.1 Programação por Usuário Final
Construir um software que contemple todos os detalhes do trabalho que o usuário final pretende realizar com a aplicação é uma tarefa bastante difícil. Muitos desenvolvedores de softwares aplicativos buscam projetar interfaces genéricas com um enorme número de funcionalidades. Devido à complexidade cada vez maior dessas aplicações, esta solução, no entanto, implica grandes desafios de usabilidade (Barbosa, 1999). Exemplos deste problema é que, provavelmente, a maioria dos usuários nunca irá utilizar grande parte das funcionalidades e funcionalidades específicas para certo perfil de usuário podem não existir. O desafio é permitir que o usuário possa ajustar a aplicação de acordo com as suas necessidades e interesses.
A EUP surgiu como uma alternativa para não sobrecarregar o software com excesso de funcionalidades de uso infrequente, oferecendo a oportunidade de preencher as necessidades singulares de cada usuário sem majorar o número de funções padrões do programa.
ferramenta totalmente customizada.
A EUP ocorre quando se faz necessário aplicar conceitos e técnicas de
programação – como sequência de instruções, tomadas de decisão e
repetições – aos elementos do comportamento da interface ou comandos do
usuário.
Por exemplo, o Chickenfoot é uma extensão do Firefox que permite ao usuário escrever scripts que manipulam páginas e automatizam o processo de navegação. No Chickenfoot, os códigos são escritos em um ambiente de programação - anexo ao navegador - que trabalha com um superconjunto do Javascript, com funções específicas para tarefas na web.
Já existem algumas técnicas de EUP para personalização de aplicações. Alguns exemplos são a Gravação de Macros e a Configuração de Parâmetros. A Gravação de Macros permite aos usuários ativarem um gravador de instruções que registra e armazena cada passo de interação dentro de uma sequência de comandos (Barbosa, 1999), como visto no editor de texto da Microsoft Corporation, o Microsoft Word. A Configuração de Parâmetros, também analisada por Barbosa, consiste na apresentação de diversas alternativas predefinidas que o usuário seleciona de acordo com sua preferência, como podemos observar no iGoogle.
Além do âmbito da customização de interfaces, a programação por usuário final surgiu como uma nova tendência no mundo da programação.
Existem milhões de pessoas desenvolvendo diariamente sites com Javascript,
escrevendo simulações em MATLAB (Gulley, 2006), prototipando interfaces em Flash (Myers et al., 2008), e usando incontáveis outras plataformas para
dar suporte a seu trabalho ou hobbies. A programação de computadores,
tanto quanto o próprio uso do computador, está se tornando uma prática bastante difundida (Ko et al., 2010).
programador profissional, usuários finais encontram muitos dos desafios da produção de software que todo programador esbarra.
Por exemplo, muitas vezes eles precisam escolher APIs, bibliotecas, e funções para utilizarem (Ko et al., 2004), ou verificar se seus programas
contém erros (Panko, 1998), ou testá-los, verificá-los ou realizar o debug de
seu programa(Ko et al., 2010).
Os usuários finais, assim como os programadores profissionais, enfrentam as mesmas dificuldades (e frustações) apresentadas com erros e falhas em seus programas. A EUP, por sua vez, é pouco realizada em muitos domínios devido às dificuldades que a maioria desses usuários finais tem com as técnicas básicas de programação (Nardi, 1993).
Para escrever um programa em uma linguagem de propósito geral, o usuário precisa digitar o programa em um editor de texto, compilar o programa, consertar erros de sintaxe, gerar o programa e então executá-lo. Para um usuário final sem experiência, essa tarefa pode ser desgastante, e o tempo e esforço envolvido em fazer alterações no programa desencoraja a experimentação.
Uma das soluções apontadas é tornar a programação mais concreta,
introduzindo construtos de programação através do controle do
comportamento de atores ou objetos (Kelleher e Pausch, 2003). Os sistemas nesta categoria integram o ambiente no qual o usuário escreve programas com o ambiente no qual o usuário executa o programa, permitindo ao usuário focar mais na lógica e nas estruturas envolvidas na programação ao invés de se preocupar com as mecânicas da escrita de programas (Kelleher e Pausch, 2003).
2.2 Programação em World of Warcraft
Para compreender as dificuldades da programação em World of Warcraft, precisamos entender melhor o que é esse jogo e como é realizado o processo de EUP dentro do mesmo.
2.2.1 O jogo
World of Warcraft é o primeiro MMORPG e o quarto lançamento do
universo de fantasia Warcraft, introduzido originalmente com Warcraft: Orcs
& Humans, jogo de estratégia lançado em 1994 pela Blizzard Entertainment. O universo de Warcraft é um ambiente que mistura vários estilos, contendo elementos tradicionais da fantasia, do steampunk, do horror e da ficção científica. World of Warcraft nada mais é do que uma representação 3D desse universo na qual os jogadores podem interagir através de seus personagens.
O jogo é uma sequência direta dos outros títulos da série Warcraft,
estando ambientado no mundo de Azeroth (Figura 1), aproximadamente
quatro anos após a conclusão dos eventos do jogo anterior.
Figura 1. Azeroth o mundo de World of Warcraft.
O título World of Warcraft foi lançado em Novembro de 2004, no décimo aniversário da franquia Warcraft. O jogo possui quatro expansões (atualizações para o jogo), tendo a última sido lançada no segundo semestre de 2012.
No começo de 2012, o jogo ganhou ainda uma versão oficial Brasileira (com assistência técnica em português e mensalidade paga em moeda local), somando o Brasil às localizações já existentes: América Latina, Estados Unidos e Oceania, além das variadas versões europeias.
2.2.1.1 Iniciando em World of Warcraft
Como a maioria dos MMORPGs, em World of Warcraft o jogador
controla um avatar virtual em terceira ou primeira-pessoa que pode ser utilizado para explorar paisagens, lutar contra monstros, completar missões,
e interagir com outros personagens não-jogadores (do inglês, non-player
characters ou NPCs) ou mesmo com outros jogadores.
Para entrar no jogo, o jogador deve primeiro escolher um servidor, ou Realm, que atua como uma cópia individual do mundo do jogo. Os Realms podem ser divididos por nacionalidade, oferecendo suporte in-game (dentro do jogo) em diversas línguas. Os jogadores podem fazer novos personagens
em qualquer dos Realms (Figura 2) e também é possível mover personagens
Figura 2. Escolhendo um Realm em World of Warcraft.
Fonte: World of Warcraft.
De acordo com o enredo dos jogos anteriores da série Warcraft, ao criar um novo personagem os jogadores devem escolher entre uma das duas facções opostas: Horda ou Aliança.
Selecionada uma facção, o jogador deve escolher dentre 10 (dez) raças, sendo 5 (cinco) pertencentes a Aliança, como Anões e Humanos, e 5 (cinco) à Horda, como os Orcs e Trolls. Depois de selecionada uma raça, o jogador deve também escolher uma classe para seu personagem, com opções como Mage (mago), Warrior (guerreiro) ou Priest (sarcedote).
Figura 3. Criando um personagem em World of Warcraft.
Fonte: World of Warcraft.
2.2.1.2 Jogando World of Warcraft
A maior parte do jogo de World of Warcraft consiste na realização de Quests (Missões), como podemos ver na Figura 4 (abaixo). As Quests são
geralmente recebidas dos NPCs (personagens não-jogadores) e, ao
completá-las, o jogador é recompensado com uma combinação de itens, dinheiro do
jogo e pontos de experiência. É através dessas Quests que a maior parte da
história do jogo é contada, tanto pelo texto da Quest em si quanto pelas
Figura 4. Quests (ou missões) em World of Warcraft são geralmente recebidas de NPCs.
Fonte: World of Warcraft.
Em World of Warcraft, o jogador pode optar por andar sozinho ou formar grupos com outros jogadores, no intuito de enfrentar conteúdos mais desafiadores. Dessa forma, a maior parte do conteúdo final do jogo foi modelado de maneira que seus desafios possam ser superados apenas através do trabalho em grupo.
Figura 5. Grupo em World of Warcraft após derrotar um desafio.
Os grupos de jogadores em World of Warcraft podem ir de 5 (cinco)
personagens (o necessário para enfrentar uma Dungeon - ou Caverna -
comum) até o número de componentes necessários para compor uma Raid,
que pode reunir de 10 (dez) a 40 (quarenta) personagens para enfrentar desafios ainda maiores, como pode ser visto na Figura 5 (acima).
2.2.2 Criação de extensões em World of Warcraft
A criação de extensões para o jogo World of Warcraft não é uma tarefa
simples. O primeiro obstáculo está nas dificuldades encontradas a partir da própria natureza do jogo. Apesar de feito para um público maduro, ele é um jogo simples. Porém, entender, trabalhar e mapear suas nuances e peculiaridades é um exercício que se mostra bastante complexo. Uma forma de medir essa complexidade é a partir da API - ou Interface de Programação de Aplicativos (do inglês, Application Programming Interface) - do jogo. São mais de 2.500 (duas mil e quinhentas) funções divididas em quase 100 (cem) categorias.
A criação de extensões esbarra ainda nas dificuldades encontradas na maioria das ferramentas que oferecem recursos para Programação por Usuário Final: a maioria dos usuários não tem tempo ou interesse em aprender a utilizar as ferramentas específicas para realizar essa tarefa ou mesmo possuem a habilidade de um programador profissional (Goodell e Traynor, 1997). Devido à complexidade dessas extensões, a maioria dos usuários não tem interesse em realizar a sua própria programação, ficando a mercê do conteúdo disponibilizado por outros usuários. O que pode ocorrer é que muitas vezes projetos de grande porte são abandonados por seu autor original e acabam deixando de ser atualizados por falta de interesse da comunidade em dar continuidade ao mesmo (devido, novamente, à complexidade requisitada para se retomar a programação de uma extensão de tal porte).
possam criar e adicionar suas próprias extensões a Interfaces de Usuário em Jogos é incorporar ao cliente do mesmo uma linguagem de script, permitindo que o jogo passe a interpretar e executar diretamente scripts naquela linguagem.
O jogo World of Warcraft, que possui seu motor de jogo desenvolvido em C++, implementa toda a sua interface em Lua (Ierusalimschy, 2003) e incorpora em seu próprio cliente o interpretador dessa mesma linguagem.
O jogo fornece ainda uma API específica também criada em Lua. Através dessa API, o usuário constrói seus programas utilizando XML, para a incorporação de elementos gráficos, e Lua. As extensões de usuário final
criadas nesse contexto, ou seja, desenvolvidas para o jogo World of Warcraft,
são denominadas Add-ons.
Os desenvolvedores que constroem Add-ons para World of Warcraft
eventualmente acabam se tornando famosos na comunidade (do jogo),
muitas vezes chamando atenção da própria Blizzard, que por sua vez
periodicamente incorpora os Add-ons mais solicitados e utilizados por
usuários à própria interface padrão de WoW.
2.2.3 Os Add-ons e as Dificuldades da Programação em World of Warcraft
Um Add-on e uma User Interface Modification (popularmente, UI Mod) são - por natureza - basicamente a mesma coisa. A diferença entre eles está
meramente em seus nomes. Geralmente a palavra Mod tende a ser usada
quando referimos pequenas modificações nas funcionalidades já existentes
da interface de usuário, enquanto Add-ons tendem a adicionar novas
funcionalidades à mesma. O mais famoso Mod da história dos jogos evoluiu
para o jogo Counter-Strike, que se tornou best-seller em seu gênero.
Originalmente um Mod do jogo Half-Life, Counter-Strike, depois de
comercializado, abriu expectativas de que as APIs fornecidas pelos jogos
poderiam permitir o modding (a criação de Mods) nessa área (Nardi e
Criar Add-ons para World of Warcraft requer boas noções de programação, incluindo domínio sobre Lua, XML e sobre a própria API do
jogo. Para entender um pouco como funcionam os Add-ons é necessário que
sejam introduzidos alguns conceitos básicos, como o de Comandos de Barra
(do inglês, Slash Commands) e comandos /script.
Para entender o que são os comandos /script, precisamos primeiro entender o que são Comandos de Barra. Dentro do universo do jogo, World of Warcraft permite que o usuário forneça comandos simples em forma de barra (/) seguido pelo nome da ação a ser executada. Existem vários tipos de ações que podem ser traduzidas em comandos de barra. Algumas são ações do próprio jogador (como por exemplo, /follow [seguir], /assist [ajudar], /cast [usar habilidade]), outras são ações relacionadas à janela de conversação (como /yell [gritar], /chatlist [mostrar lista de canais]) e outras que fornecem informações sobre o jogo ou jogadores (como o /who [mostra
informações de outros personagens]). Além também de emotes, como o
/laugh [rir] e o /dance [dançar].
Por fim, existe um comando em barra especial: o /script. O /script é um comando dado ao jogo que permite ao usuário inserir um ou mais códigos Lua válidos em tempo de execução. Vejamos esse exemplo ilustrativo, dado o código Lua abaixo:
if (LiderDoGrupo()) then
janelaChat1:Mensagem("Eu sou o líder do meu grupo!"); end
O simples comando /script representado por: /script if (LiderDoGrupo()) then
janelaChat1:Mensagem("Eu sou o líder do meu grupo!"); end
Imprime a mensagem “Eu sou o líder do meu grupo!” na Janela de Conversação (Chat) 1 se o jogador for o líder do seu grupo.
Em World of Warcraft, os Add-ons abrangem todo o escopo estético (alterações gráficas) e de usabilidade da Interface de Usuário do jogo, nesse
caso, da jogabilidade do usuário (incremento e expansão de funções).
A Figura 6 representa a Interface de Usuário básica do jogo, sem uso de extensões ou sem qualquer alteração nas configurações básicas. Já a Figura 7 descreve os elementos visíveis da interface.
Figura 6. Interface de Usuário básica em World of Warcraft. Fonte: World of Warcraft.
Figura 7. Elementos de Interface.
A Figura 8 apresenta um exemplo de Interface de Usuário modificada, com o acréscimo de Add-ons que modificam os elementos já existentes e Add-ons que incluem novas funções ao jogo.
Figura 8. Interface de Usuário modificada por Add-ons em World of Warcraft. Fonte: World of Warcraft.
A Figura 9 descreve as alterações realizadas e quais funções foram acrescentadas.
As possibilidades de extensão em World of Warcraft são inúmeras. Sua API e a transparência fornecida pela própria implementação da interface do jogo permitem que o usuário passe a ter consciência e onisciência sobre toda a interface do programa e seus elementos, criando, expandindo e modificando livremente, segundo sua vontade e, é claro, sua habilidade de programação.
Para entender melhor como funciona a interface de World of Warcraft e
como seria a criação de um Add-on, vamos a um exemplo ilustrativo.
Figura 10. Exemplo de criação de Add-ons. Fonte: World of Warcraft adaptado por Barbosa.
Para construirmos o Add-on responsável por mostrar a latência do jogo
no canto inferior da tela, precisamos adotar a seguinte linha de raciocínio:
1. Criar um Frame e ajustar as suas configurações;
2. Posicionar o Frame no canto inferior da tela; 3. Popular o Frame criado com uma nova String;
4. Recuperar o valor de latência do jogo usando a função da API e atribuir à String criada anteriormente;
5. Ajustar as configurações de posição da String no Frame;
6. Ajustar o Add-on para ser exibido quando o usuário entrar no jogo;
A partir dessa estratégia, teríamos o seguinte código-fonte em Lua:
Figura 11. Código fonte do exemplo de criação de Add-ons.
Porém este é apenas um pequeno exemplo. Add-ons em World of
Para um usuário iniciante, criar o exemplo da Figura 11 pode se tornar uma tarefa complexa. Desenvolver um código como esse envolve
desde a criação de frames e elementos de interface ao conhecimento sobre as
3. Estratégias para Criação de Extensões
Uma das estratégias frequentemente adotadas para amenizar ou solucionar as dificuldades inerentes da prática da EUP na qual o usuário final precisa programar é a criação de ambientes interativos de desenvolvimento que auxiliem esse usuário na programação de suas extensões. Esses ambientes interativos de desenvolvimento são ferramentas que têm por objetivo dar assistência ao usuário final em atividades do desenvolvimento de programas, como a construção de código, a verificação de erros ou mesmo o entendimento do problema.
Muitas vezes o usuário final, que não possui conhecimento em programação, pode se deparar com a necessidade de criar extensões utilizando linguagens textuais convencionais, tais como C++, Lua, Java, dentre outras. Entretanto, o aprendizado de programação é uma prática complexa, principalmente quando lidamos com os diferentes níveis de conhecimento em computação. A própria natureza da programação torna esse processo de aprendizado complicado: programar é difícil, e não existe uma bala de prata (Brooks, 1975).
Aprender a programar pode se tornar uma tarefa muito difícil para usuários finais iniciantes, de todas as idades. Além dos desafios de aprender a formar soluções estruturadas para problemas e entender como os programas são executados, iniciantes em programação também precisam aprender sintaxes rígidas e comandos rígidos que podem ter nomes aparentemente arbitrários ou talvez confusos. Encarar todos esses desafios simultaneamente pode ser desgastante e muitas vezes desanimador para o programador iniciante (Kelleher e Pausch, 2003).
3.1 Requisitos da EUP
ferramentas que auxiliem o processo de desenvolvimento sem prejudicar o desempenho do usuário (gastando muito tempo ou esforço). Nesse sentido, várias ferramentas se propõem a auxiliar o usuário final, que não possui ou possui conhecimento limitado em programação, a realizar suas tarefas de uma forma menos “dolorosa”.
Para tanto, essas ferramentas devem ser desenvolvidas pensando-se em evitar certos conflitos (Conway, 1997), como por exemplo:
Uso de semântica não intuitiva;
Utilização de abstrações fracas (ocultar detalhes de implementação
para reduzir o fardo cognitivo do programador);
Fraca distinção de atividades (separar o que deve ser feito por artistas
do que deve ser feito pelo programador);
Fraca escolha de padrões (o comportamento padrão do programa deve
auxiliar o programador que não está familiarizado com a API da ferramenta); dentre outros.
Existem diversas linguagens de programação, como Smalltalk (Goldberg e Robson, 1989) e Logo (Papert, 1980), voltadas especificamente para o ensino de programação a esse tipo de usuário iniciante. A aplicação dessas linguagens comprovou que os usuários obtinham bons resultados de programação (Conway, 1997), se eles estivessem suficientemente motivados e as ferramentas fossem suficientemente avançadas, com uma linguagem cuidadosamente desenvolvida que modelasse, através de abstrações fortes, um domínio específico.
Essa programação por usuários iniciantes, ou leigos, ainda de acordo com Conway, pode ser auxiliada por três fatores:
Os conceitos de programação (nesse contexto) só devem ser explorados quando há necessidade (motivação) para tal. Por exemplo: enquanto não é necessário que o usuário utilize uma repetição não existe motivação suficiente para que ele aprenda a noção de loops; enquanto ele não precisar desenvolver scripts que necessitem de tomada de decisão, não será efetivamente necessário ensinar o conceitos do Se .. Então.
2- Ferramentas que deem o suporte adequado: As pessoas se concentram melhor na tarefa da aplicação se elas possuírem um poderoso ambiente que ajude a amenizar gradualmente a tarefa de programação.
3- Exploração segura: Um ambiente de programação que encoraje exploração e perguntar “e se” é uma poderosa ajuda em fazer com que não-programadores se comportem mais como programadores. Para isso, uma opção de Undo (desfazer) é crucial em permitir ao usuário perguntar “e se” de forma segura.
Já segundo (Kelleher e Pausch, 2003), e não muito diferente, a programação pode se tornar mais acessível a esses usuários finais em três caminhos:
1- Simplificando os mecanismos de programação. 2- Fornecendo suporte ao aprendizado.
3- Fornecendo motivação para programar.
Ainda de acordo com (Kelleher e Pausch, 2003), essas ferramentas ou ambientes interativos voltados para a programação por usuários iniciantes podem ainda ser divididas em dois grupos: o de sistemas que tentam ensinar programação por si só e o de sistemas que tentam dar suporte ao uso de programação em auxílio a outro objetivo, como comumente visto em soluções de EUP.
remover sintaxe desnecessária, desenvolver linguagens mais parecidas com a linguagem natural, introduzir conceitos de programação em contextos visíveis (como a programação de ou em jogos) ou explorar alternativas para a escrita do código. Deste modo, permitindo que os usuários se concentrem na parte lógica e nas estruturas envolvidas ao invés de se preocupar com a mecânica da escrita de programas.
No que diz respeito às barreiras sociológicas, os sistemas podem abordar dois pontos: o da falta de contexto social (na ausência de um suporte para interação social) e o da falta de um contexto apelativo (falta de razões, motivação para o usuário programar). Uma solução aplicável seria fornecer contextos motivacionais ao usuário, como a própria imersão na criação de jogos (construção de robôs para batalha, percorrer labirintos através de comandos, etc.) ou na criação de animações e histórias. No geral, o desenvolvimento dessas ferramentas tem sido realizado com o intuito de encorajar iniciantes a manterem atitudes positivas sobre a computação (Meerbaum-Salant, 2010).
Ainda nesse contexto, Ko et al. (2004) reafirmam que uma das principais e mais significantes barreiras abordadas por essas ferramentas é a sintaxe utilizada para a resolução do problema, devido principalmente às dificuldades que os usuários encontram em entender e memorizar as complexas regras de codificação e a própria gramática das linguagens (Ko et al., 2004). Muitas dessas ferramentas buscam facilitar a construção de
programas (codificação) seja reduzindo a sobrecarga de memorização da
linguagem utilizada, seja evitando erros de sintaxe ou mesmo fornecendo mecanismos que permitam ao usuário manipular elementos gramaticais ao invés de memorizá-los.
aprendizado que facilitem o entendimento do problema tratado pelo usuário ou que minimizem a sobrecarga de navegação (utilização) do sistema.
Segundo (Ryder et al., 2005), de uma forma geral, muitas dessas
ferramentas adotam ainda o formato de ambientes visuais de
desenvolvimento, utilizando de programação visual para minimizar tanto problemas de construção de código quanto representação (e entendimento) de problemas.
A Programação Visual diz respeito a qualquer sistema que permite que os programas sejam especificados em duas (ou mais) expressões dimensionais, tais como diagramas, ícones, color coding, anotações multi-dimensionais e/ou mesmo ações gráficas (Burnett e McIntyre, 1995). Em geral, o propósito da Programação Visual é reduzir o fardo cognitivo dos programadores humanos, através de mecanismos que reduzam o esforço mental necessário para acessar ou tomar senso das informações disponíveis (Ryder et al., 2005). Com o advento da programação por usuário final, as pesquisas em Programação Visual foram ao longo do tempo combinadas com as pesquisas em expressões visuais, técnicas de aprendizado de máquina, pesquisas emergentes em IHC e Engenharia de Software para usuário final (Burnett et al., 2003), com o intuito de desenvolver novas metodologias de engenharia de software para auxiliar esses usuários no desenvolvimento de suas aplicações além do estágio de codificação.
3.2 Ferramentas de Auxílio à Programação por Usuário Final
Das ferramentas mais citadas na literatura, dentre aquelas voltadas especificamente para o aprendizado de programação por usuários iniciantes, podemos destacar o Alice (Alice, 2009) e o Scratch (Scratch, 2009).
usuários se sintam mais motivados a aprender conceitos fundamentais de programação utilizando como contexto a criação de histórias animadas e jogos simples. No Alice, objetos 3D habitam um ambiente virtual e o papel do usuário é criar programas, em forma de scripts, para animar esses objetos.
O Scratch, assim como o Alice, é um ambiente de desenvolvimento para a linguagem de programação educacional homônima, desenvolvida com o propósito de auxiliar no aprendizado de conceitos matemáticos, lógicos e de computação, idealmente para pessoas que ainda estão começando a programar. No entanto, diferente do Alice, o Scratch é voltado para a criação de imagens, animações e ambientes interativos em 2D.
As linguagens do Scratch e Alice são mais acessíveis que a maioria das outras linguagens por se utilizarem de artífices gráficos que são mais atrativos por buscar usar uma representação visual para os conceitos abstratos de programação. O Scratch, por exemplo, utiliza uma interface gráfica que permite que programas sejam montados como blocos - lembrando o brinquedo LEGO. Cada bloco da linguagem representa um comando em separado. Esses comandos podem ser então agrupados livremente - caso se encaixem - ou modificados através de menus.
Tanto o Alice quanto o Scratch tem sido utilizados por universidades em cursos e disciplinas introdutórias de computação. O uso do Alice foi comprovado como forma de melhorar a atitude de estudantes em relação a computação (Moskal et al., 2004) e de aumentar a motivação e a disposição de estudantes a passarem mais tempos envolvidos com o computador (Kelleher et al., 2007).
aprenderem inicialmente Scratch - a transição dos estudantes para Java ou C aparenta ser mais fácil (Wolz et al., 2009).
Além dessas duas ferramentas, podemos encontrar também na literatura referências ao Greenfoot (Greenfoot, 2004; Utting et al., 2010). O GreenFoot é a combinação entre um framework para criação de animações bi-dimensionais (2D) com um ambiente de desenvolvimento integrado (que dá suporte a toda a linguagem Java) voltado principalmente para usuários iniciantes em programação. O aplicativo tem como foco o desenvolvimento de exercícios de programação com elementos visuais, onde os elementos de programação são representados através da visualização e interação de objetos.
Ainda podemos destacar outras quatro ferramentas que se propõem a ensinar programação e conceitos de lógica computacional a usuários finais sem experiência, são elas: o Processing, o Squeak, o StencylWorks e o Phrogram.
O Processing (Processing, 2003) também é um ambiente de
programação para a linguagem homônima voltada para a criação de imagens, animações e interações, 2D e 3D. Inicialmente o Processing foi desenvolvido para servir como um sketchbook e ensinar fundamentos de programação dentro de um contexto visual, porém o aplicativo acabou evoluindo para uma ferramenta para desenvolvimento de sistemas complexos. Hoje em dia, o aplicativo é utilizado por estudantes, artistas, designers e pesquisadores para tanto aprender, quanto prototipar e produzir imagens e animações mais elaboradas.
scripts visuais, permitindo modelar sistemas de coordenadas, criar animações hierárquicas ou conectar objetos para a formação de diagramas baseados em script.
O StencylWorks (Stencyl, 2010) é um ambiente de programação para a criação de jogos 2D. O aplicativo é composto por um conjunto de toolkits intuitivos que são integrados em um só sistema. O foco principal é a criação de jogos flash e a colaboração e compartilhamento de componentes (blocos). O sistema de blocos do StencylWork é como uma extensão do sistema de block-snapping do Scratch, onde o usuário utiliza uma interface interativa drag and drop para conectar blocos pré-existentes até finalizar seu projeto. No StencylWorks, os blocos podem ser pré-montados ou desenvolvidos pelo próprio usuário.
Por fim, o Phrogram (Phrogram, 2006) é um ambiente de desenvolvimento para a linguagem homônima que introduz aos usuários como escrever, testar e depurar código. O objetivo do Phrogram é ensinar e introduzir programação a usuários não-programadores. A proposta do Phrogram, em oposto a de outros aplicativos como o Scratch e o Alice, é permitir que o usuário construa programas maiores, e de propósito geral, utilizando uma linguagem de programação textual, porém com comandos mais simples de usar e entender.
Temos ainda a EUPAT for WoW (Barbosa e Leite, 2010), ambiente
visual de desenvolvimento criada durante este trabalho com o intuito de auxiliar a criação de extensões (Add-ons) para o jogo World of Warcraft.
Através da EUPAT for WoW o usuário pode construir scripts em Lua de forma
interativa, esses scripts alteram a interface e o comportamento do jogo para
melhorar aspectos diversos da usabilidade e jogabilidade do usuário.
Aspectos de implementação e usabilidade da EUPAT for WoW serão descritos
3.3 Comparativo
Podemos fazer um comparativo dessas ferramentas listando algumas atividades de engenharia de software (Ko e Myers, 2003; Ko et al., 2010) e algumas características de programação as quais elas dão suporte (Ko et al., 2005; Antunes, 2006; Utting et al., 2010). Neste caso, optamos por relacionar as seguintes atividades e características: Construção de Programas (código), Teste e Detecção de Erro, Depuração, Entendimento do problema, Programação Visual e Reuso.
A Tabela 1 descreve o conjunto de soluções (técnicas) que podem ser aplicadas nessas ferramentas de auxílio à programação para satisfazer os critérios selecionados.
Tabela 1. Listagem de técnicas aplicadas a critérios.
Critérios Técnicas
Construção de Programas (código) • Reduzir a sobrecarga de memória;
• Evitar erros de sintaxe;
• Fornecer mecanismos que permitam ao usuário manipular elementos gramaticais ao invés de memorizá-los.
Teste e Detecção de Erro • Oráculos (informam se determinado
comportamento ou saída está correta ou não);
• Mecanismo de testes (julgando a corretude do programa baseada na corretude dos resultados);
• Visualizações (visualizar o
comportamento do programa, de tal forma que o programador usuário final possa aplicar seu conhecimento sobre qual o comportamento correto do programa).
Depuração • Checagem de acordo com
especificação (os dados computados pelo programa são conferidos com uma especificação);
ao programa).
Entendimento do problema • Tutoriais;
• Agentes (Tutores Inteligentes); • Mecanismos que facilitem o
entendimento ou o uso do sistema.
Programação Visual • Utilizar programação por expressões
visuais no sistema além (ou em
sobreposto) da programação textual.
Reuso • Permitir reuso de aspecto privado;
• Permitir reuso de aspecto público (comunitário).
Na Tabela 2, iremos relacionar as ferramentas de auxílio à
programação selecionadas com os respectivos critérios listados
anteriormente. Para tanto, foi verificado se a ferramenta satisfazia uma ou mais das técnicas descritas na Tabela 1.
Tabela 2. Relação Ferramentas x Critérios
No caso da ferramenta Alice, existem trabalhos (Ko et al., 2005)( Ko et
depuração dentro dos programas desenvolvidos dentro do aplicativo. Porém, nas versões disponíveis e na versão utilizada neste trabalho (Alice 2.2), o Whyline não estava acessível.
A partir da Tabela 2, podemos inferir algumas conclusões:
1. A maioria (75%) das ferramentas selecionadas possuía mecanismos que facilitavam a Construção de Programas (Código).
2. A maioria (87,5%) das ferramentas selecionadas possuía mecanismos para Teste e Detecção de Erros.
3. Apenas uma pequena parte (25%, desconsiderando a ferramenta Alice) das ferramentas selecionadas possuía mecanismos para Depuração.
4. A maioria (75%) das ferramentas selecionadas possuía mecanismos que facilitavam o Entendimento do Problema.
5. A maioria (75%) das ferramentas selecionadas foram desenvolvidas levando em conta o paradigma da Programação Visual.
6. Todas as ferramentas (100%) apresentavam mecanismos ou de reuso privado, ou de reuso público, ou ambos.
A partir desses dados, podemos concluir que a maioria das ferramentas facilitam a Construção de Programas (Código) e o Entendimento do Problema, permitem o Teste e Detecção de Erro em tempo de desenvolvimento e estimulam o Reuso de código e componentes, e utilizam da Programação Visual para reduzir o fardo cognitivo dos usuários.
3.4 Conclusão
iniciantes, não-programadores) quanto em dificuldades na prática da produção de software.
Em relação as ferramentas listadas, a EUPAT for WoW apresenta as mesmas características, com exceção de ser a única a não possuir embutido na ferramenta um sistema para realização de testes e de detecção de erros, além de não permitir depuração de código (aspecto encontrado, no entanto, apenas na Processing e na Phrogram). Por não possuir tal sistema de teste, a ferramenta força o usuário a terceirizar o processo, tendo que verificar o
funcionamento do seu Add-on em tempo real, dentro do jogo World of
Warcraft.
A EUPAT for WoW é uma ferramenta de programação visual que utiliza dos conceitos apresentados na literatura para auxiliar usuários finais na construção de extensões em Lua. A ferramenta busca dar suporte adequado à produção de software por usuários finais que possuam um problema específico de programação, reduzindo seu fardo cognitivo e simplificando os mecanismos utilizados.
A EUPAT for WoW busca auxiliar os usuários finais em três vertentes:
1- Prevenção de erros de sintaxe (de programação);
2- Na construção semântica (abstraindo construções de código);
3- Na área social (fornecendo um contexto motivacional).
A existência de uma ferramenta com as características da EUPAT for
WoW, que auxilie a produção de Add-ons para World of Warcraft, é
importante em vários âmbitos:
1- Reduzindo a enorme barreira que os usuários jogadores sem
conhecimento na linguagem de programação encontram ao tentar produzir suas próprias extensões;
2- Disponibilizando um ambiente interativo, que permite ao usuário ter mais contato com a linguagem de programação Lua;
4. A
EUPAT for WoW
A EUPAT for WoW (do inglês, End-User Programming Assistance Tool for World of Warcraft) é uma ferramenta interativa desenvolvida em JAVA que facilita e auxilia a criação de Add-ons em World of Warcraft. Através dela, o usuário pode criar, salvar, e exportar projetos de código completos no
formato de Add-ons para WoW. O processo de programação no EUPAT for
WoW ocorre através de manipulação direta (drag and drop) de objetos que representam elementos de programação, como variáveis, funções e estruturas iterativas. Com disso, espera-se que usuários possam aprender um pouco mais sobre a linguagem Lua e técnicas de programação.
4.1 Sobre a EUPAT for WoW
Desenvolvemos a ferramenta EUPAT for WoW com o objetivo de
oferecer um ambiente visual de desenvolvimento que auxiliasse usuários finais que na construção de scripts em Lua no formato de extensões para o jogo World of Warcraft.
A EUPAT for WoW dá flexibilidade ao usuário, permitindo que ele possa alternar entre dois estados de representação:
1- O usuário pode utilizar interativamente o ambiente fornecido; ou
2- O usuário pode interpretar o código fonte gerado direto no programa (World of Warcraft).
Dentro da EUPAT for WoW, o usuário tem a opção de salvar seus projetos no formato de código Lua simples, que pode ser executado pelo
interpretador Lua da máquina do usuário, ou salvá-los em formato de
Add-ons, que deverão ser executados no jogo World of Warcraft.
A EUPAT for WoW é uma ferramenta construída inspirada nos ambientes interativos de programação como o Scratch, Greenfoot e o Alice (Utting et al., 2010). Nela, a programação é realizada através da
da interface) de objetos que representam construtos de programação, como variáveis, funções, operadores aritméticos e estruturas condicionais e iterativas.
4.2 O Ambiente da EUPAT for WoW
Para entender como o EUPAT for WoW funciona, precisamos nos
familiarizar com as três divisões da sua interface. Esta divisão da interface da EUPAT for WoW em três partes se deve a decisões de design realizadas durante a construção da ferramenta, que foram inspiradas no modelo de interface de ferramentas similares: uma área com os comandos disponíveis, uma área onde os comandos serão colocados para construção do programa e uma área para exibição da execução ou visualização do programa. Esse modelo de interface, em três divisões, pode ser visto nas ferramentas Scratch, Alice, Squeak Etoys e StencylWork.
4.2.1 A Área de Exibição de Comandos
Na área de Exibição de Comandos da EUPAT for WoW, destacada na
parte superior da Figura 12, o usuário seleciona quais comandos irá utilizar
em seu Add-on. Os comandos estão divididos em comandos de execução
(como funções e operadores) e comandos de armazenamento e parâmetro (como variáveis e parâmetros de Fonte e cor).
Para os comandos de execução, temos três abas: uma com as funções e
comandos da linguagem Lua, outra com as funções da API de World of
Warcraft e a terceira com as operações e operadores aritméticos e condicionais (como soma, subtração, maior, menor e igual).
parâmetros que podem ser utilizados pelo jogo (como distância, alvo, tamanho de Fontes, etc).
Figura 12. Áreas de edição do EUPAT for WoW.
4.2.2 A área Comandos do Usuário
Nesta área de edição, do lado direito da tela mostrada na Figura 12,
devem ser colocados os comandos do Add-on que o usuário pretende
construir. A construção do código se dá através da interface drag and drop do aplicativo. Em outras palavras, o usuário arrasta os comandos que estão exibidos no campo descrito anteriormente para este campo, onde os mesmos são organizados em uma lista. Essa lista representa a sequência de
comandos que serão executados pelo Add-on dentro do jogo.
A Tela de Exibição fica na parte inferior da tela, destacada na Figura 12. Com ela, o usuário tem acesso a uma representação (em miniatura) do que seria a tela de jogo. A partir dessa representação o usuário pode posicionar Frames e comandos em tela que serão mapeados e convertidos para o posicionamento real dentro do jogo.
Em algumas versões da ferramenta, esta tela também era responsável por exibir o tutorial da EUPAT for WoW. Este tutorial foi utilizado nos estudos realizados para ensinar alguns conceitos de programação a usuários não programadores. O tutorial consistia de textos explicativos informando os conceitos e demonstrando a utilização dos construtos de programação presentes na ferramenta, eles também eram responsáveis por passar tarefas de fixação para o usuário. Por Exemplo:
“Variáveis são utilizadas para armazenar informações importantes para nosso Add-on, como informações do nosso personagem e mensagens a serem exibidas em tela (...) Para criar uma variável, devemos ir na aba VARIABLES e clicar no comando de nome VARIABLE (imagem ilustrativa). Para armazenar valores em nossa variável devemos utilizar o comando de atribuição (imagem ilustrativa), o comando atribuição pode ser encontrado na aba (...) Sua tarefa é criar uma variável e armazenar nela o valor 12345. Depois de feito, crie outra variável de diferente nome e armazene a mensagem(...)”.
4.3 Exemplos de Aplicação na EUPAT for WoW
Para ilustrar a construção de Add-ons na EUPAT for WoW, vamos
apresentar alguns exemplos simples.
4.3.1 Exemplo 1
Em algumas circunstâncias, um jogador de World of Warcraft pode