Você está na página 1de 11

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/320992943

Desenvolvimento e avaliação de modificação do jogo minecraft para estimular


o pensamento computacional em estudantes do ensino médio

Conference Paper · October 2017


DOI: 10.5753/cbie.wcbie.2017.92

CITATIONS READS

2 225

2 authors, including:

Andre L M Santana
Insper Institute of Education and Research
23 PUBLICATIONS   98 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Análise de Dados e Políticas Públicas View project

All content following this page was uploaded by Andre L M Santana on 17 September 2019.

The user has requested enhancement of the downloaded file.


VI Congresso Brasileiro de Informática na Educação (CBIE 2017)
Anais dos Workshops do VI Congresso Brasileiro de Informática na Educação (WCBIE 2017)

Desenvolvimento e Avaliação de uma Modificação do Jogo


Minecraft para Estimular o Pensamento Computacional em
Estudantes do Ensino Médio
Paulo Eduardo Martins12, André Luiz Maciel Santana1
1
Laboratório de Inovação Tecnológica na Educação - CTTMar - UNIVALI
2
Mestrado em Computação Aplicada
88302-202 – Itajaí – SC – Brasil
pem@edu.univali.br , andrelms@univali.br

Abstract. Computational Thinking is considered one of the most important


skills to the XXI citizenship concept. Now a day, there are only a few tools that
can, in an easy way, make the student learn more about computing
programing. This paper aims on a Minecraft modification (MOD)
development, based on the high school student’s constructionism way of
computational thinking encouragement. The MOD developed is a robot that
can be programmed by the student following an instruction blocks
programming language like Scratch and Blockly. To validate the
implementation a set of test routines has been used.

Resumo. Pensamento Computacional é citado como uma das habilidades


mais importantes para o exercício da cidadania no século XXI. Atualmente
existem poucas ferramentas que ensinam conceitos de programação de forma
facilitada para estudantes do ensino médio. Este artigo tem como objetivo o
desenvolvimento de uma modificação (MOD) do jogo Minecraft para
estimular o Pensamento Computacional em estudantes do ensino médio de
forma construcionista. O MOD desenvolvido é um robô que pode ser
programado pelo estudante seguindo uma linguagem de blocos de instrução
parecida como Scratch e o Blockly. Para validar a implementação foi definida
uma rotina de testes para testar todos os requisitos do MOD.

1. Introdução
Pensamento Computacional se trata do processo de abstrair, criar diferentes níveis de
abstração e escolher os níveis certos para se trabalhar, identificar e ver as relações entre
cada um dos níveis. É uma forma de formular e resolver um problema gerando um
algoritmo que qualquer humano ou máquina consiga reproduzir efetivamente e não é
necessariamente uma linguagem de programação. É uma forma de se resolver
problemas e pode ser aplicada nos mais diversos campos do conhecimento se tornando
uma habilidade praticamente fundamental para as pessoas. Além de já existir até antes
dos computadores modernos. (WING, 2006).
Segundo Santana (2015), após uma análise de várias definições, o Pensamento
Computacional pode ser tratado como “o desenvolvimento de habilidades que
favorecem a resolução de problemas, em que através da organização do modo de
pensar, é possível expandir a capacidade mental, permitindo resolver os mais diversos
níveis de desafio”.

DOI: 10.5753/cbie.wcbie.2017.92 92
VI Congresso Brasileiro de Informática na Educação (CBIE 2017)
Anais dos Workshops do VI Congresso Brasileiro de Informática na Educação (WCBIE 2017)

Porém, programar não é uma tarefa fácil (LAHTINEN; ALA-MUTKA;


JÄRVINEN, 2005) e a disciplina introdutória de algoritmos possui altas taxas de
reprovação e abandono (PETERSEN; CRAIG; ZINGARO, 2011). Por isso iniciativas
como o code.org exploram o ensino com crianças e adolescentes e estimulam as
habilidades necessárias para auxiliar iniciantes em programação introdutória.
O Construcionismo, idealizado por Seymour Papert (1980), propõe que os
aprendizes construam modelos mentais para entender o mundo a sua volta. Também
defende o ensino centrado no estudante, aonde ele utiliza a experiência que possui para
adquirir mais conhecimento através de um projeto de sua própria escolha, o professor
faz o papel de intermediador nas suas tarefas ao invés de instrutor. Para Papert não se
deve focar apenas em como ensinar, mas sim em ajudar a criança a aprender a utilizar o
seu conhecimento para ativamente construir algo.
Para contornar a dificuldade em aprender alguns conceitos das disciplinas de
introdução à programação, uma das possíveis estratégias para minimizar essa
dificuldade consiste no uso de entretenimento na formulação das atividades de ensino.
O termo Digital game-based learning ou aprendizado por meio de jogos digitais,
descrito por Prensky (2001) apud All, Castellar e van Looy (2016), refere-se justamente
ao uso de jogos digitais com o proposito educacional.
Scratch é uma plataforma de programação que facilita aos usuários a criação de
programas com a programação em blocos. Este tipo de programação permite aos
usuários arrastarem componentes do código de forma que encaixe no componente
anterior evitando que erros sintáticos aconteçam, se o usuário tentar arrastar algum
componente que não combine com o bloco anterior, como por exemplo colocar uma
expressão de atribuição dentro de um desvio condicional, o bloco simplesmente não
encaixa mostrando ao usuário que aquela operação é invalida (RESNICK et. al, 2009).
O Blockly (ver Figura 1) é uma adaptação do Scratch, sua interface e ideia é
bem parecida com o Scratch com aspectos visuais e organizacionais um pouco
diferentes. Criado pelo Google e pelo MIT ele tem como objetivo ensinar programação
usando a ideia de blocos encaixáveis do Scratch. Os programas criados com o Blockly
podem ser exportados para uma linguagem de programação convencional como PHP,
JavaScript, Python, LUA e Dart.

Figura 1 Etapas necessárias para criação de um MOD usando o Minecraft Forge

Minecraft é um jogo de mundo aberto, onde o jogador pode colocar e destruir


blocos em um cenário tridimensional gerado aleatoriamente e infinito. Não possui um

93
VI Congresso Brasileiro de Informática na Educação (CBIE 2017)
Anais dos Workshops do VI Congresso Brasileiro de Informática na Educação (WCBIE 2017)

objetivo claro e nem uma história específica, o jogo deixa a pessoa livre para fazer o
que bem entender. O jogo vendeu mais de 22 milhões de cópias para os sistemas
operacionais Windows e Macintosh, segundo a própria desenvolvedora (MINECRAFT,
2016).
Este trabalho pretende explorar o pensamento computacional para estudantes do
ensino médio, usando uma abordagem construcionista de ensino, por meio de uma
MODificação (MOD) do jogo Minecraft que permita que os estudantes aprendam
enquanto se divertem. A escolha do jogo se dá pela popularidade com estudantes de
faixa etária mais nova e por ter aderência de várias iniciativas privadas ao redor do
mundo. O uso do Scratch permite aproximar o usuário a programação diminuindo a
curva de aprendizagem inicial.

2. Projeto do MOD
Diferente de um Plugin, aonde o programador segue uma interface de programação
sugerida pelo dono do aplicativo, o desenvolvimento de MODs segue uma linha
alternativa. Um MOD se trata de uma modificação do jogo base aonde o programador
sobrescreve e altera o código fonte da aplicação original dando mais poder ao
desenvolvedor uma vez que ele pode alterar as classes da aplicação original, assim o
limite para o desenvolvimento não fica atrelado a uma interface para programação de
Plugins, ele passa a ser as classes que se pode alterar e o potencial da linguagem de
programação.
Para a criação de um MOD para o jogo Minecraft é necessário se ter acesso as
classes do código fonte do jogo. Isso é feito pela comunidade através de um processo de
descompilação e desofuscamento do código Java do jogo. Uma ferramenta desenvolvida
por terceiros que faz este processo é o Mod Coder Pack (MCP) que descompila o
executável Java do jogo transformando-os em classes e deixa o código legível para um
programador humano.
Somente usando o Mod Coder Pack já é possível criar um MOD para o jogo,
uma vez que você já tem acesso as classes do jogo base basta modificar e recompilar
estas classes que irá funcionar normalmente. Porém, para conseguir atingir uma maior
compatibilidade entre MODs e ter acesso a alguns métodos e classes que facilitam o
desenvolvimento o ideal para o jogo Minecraft é utilizar uma API que garanta esta
compatibilidade e facilidade.
O Minecraft Forge é uma API desenvolvida por terceiros que foi desenvolvida
em cima do Mod Coder Pack que suporta tanto o arquivo cliente do jogo quanto o
arquivo servidor do jogo. Está ferramenta possui uma série de facilidades além de já
realizar a tarefa de descompilação já que possui embutido nela o Mod Coder Pack. O
Minecraft Forge é uma API bastante utilizada, referenciada e documentada pela
comunidade desenvolvedores de MOD e em cima desta API é que se pretende
desenvolver o MOD proposto nesta pesquisa (ver Figura 2).

94
VI Congresso Brasileiro de Informática na Educação (CBIE 2017)
Anais dos Workshops do VI Congresso Brasileiro de Informática na Educação (WCBIE 2017)

Figura 2 Etapas necessárias para criação de um MOD usando o Minecraft Forge

2.1 Requisitos Funcionais e Não Funcionais do MOD


Para construção deste MOD foram utilizadas as especificações de softwares
baseadas na UML da Engenharia de Software, deste modo destacando os seguintes
requisitos funcionais:

RF1. O jogador pode abrir o painel de programação do robô apertando com o botão
direito na base.
RF2. O Robô possui uma categoria de comandos de movimento da cor verde escuro
e permitem a ele andar para frente, para trás, para cima, para baixo e girar para
os lados.
RF3. O Robô possui uma categoria de comandos de ação da cor roxa e o permitem
apanhar e colocar objetos no mundo do jogo.
RF4. O Robô possui uma categoria de comandos da cor verde, eles servirão para
criar laços de repetição.

Além disso, também foram especificados um conjunto de requisitos não


funcionais com o objetivo de compreender aspectos de comportamento do robô
implementado no MOD, sendo eles especificados como:

RNF1. Quando o robô reinicia, ele se desloca para a sua base.

95
VI Congresso Brasileiro de Informática na Educação (CBIE 2017)
Anais dos Workshops do VI Congresso Brasileiro de Informática na Educação (WCBIE 2017)

RNF2. Se o robô receber a instrução de andar e existir um bloco na sua frente, ele
irá ignorar está instrução e seguir para a próxima
RNF3. Sempre que o jogador mudar as instruções do robô, ele irá parar as instruções
que estava fazendo no momento, voltar para a base e reiniciar com as instruções
novas.
RNF4. Quando for dado o comando para o robô colocar um bloco no mundo do
jogo, ele irá colocar os blocos na ordem que aparecem em seu inventário, se for
possível de serem colocados, se não for ele deverá colocar o próximo bloco em
seu inventário.
RNF5. Caso o robô tente coletar algum bloco que não existe na sua frente, ou
colocar algum bloco possuindo o inventário vazio, ele deverá ignorar estas
instruções e seguir para a próxima.
RNF6. O robô deve emitir um som para cada instrução que for executada.

2.2 Desenvolvimento do robô do MOD


Neste MOD as principais classes criadas estão representadas de forma simplificada na
Figura 3.

Figura 3 Diagrama de classe adaptado para o MOD

A classe de Item ItemBlockBaseRobo serve apenas para gerar um item no


inventário do jogador, este item pode ser colocado no mundo do jogo clicando com o
botão direito em uma superfície presente no mundo do jogo. É esta classe que pede para
o World adicionar um bloco da base do robô seguindo as definições da classe
BlockBaseRobo no mundo do jogo.

96
VI Congresso Brasileiro de Informática na Educação (CBIE 2017)
Anais dos Workshops do VI Congresso Brasileiro de Informática na Educação (WCBIE 2017)

A classe de bloco BlockBaseRobo interpreta as ações de clique que são


efetuadas neste bloco, ela também cria uma instancia de TileEntityBaseRobo no local
aonde este o bloco foi adicionado.
A classe de entidade TileEntityBaseRobo grava todas as informações sobre a
posição do robô, os blocos que estão na interface gráfica, as instruções que estão sendo
executadas no momento e o inventário do robô. Ela também é quem chama a interface
gráfica quando um BlockBaseRobo é clicado. Esta classe ao ser criada também pede
para o World adicionar um bloco do robô, seguindo as definições criadas em
BlockRobo, uma posição imediatamente acima.
A classe de bloco BlockRobo possuí ações de movimentação (translação e
rotação) e de interação com o ambiente para colocar e coletar blocos. Ela também, cria
uma nova instancia da classe TileEntityRobo no local aonde este bloco foi adicionado.
A classe de entidade TileEntityRobo serve apenas para guardar a posição da
base do robô. O diagrama para compreender como funciona o fluxo de criação do robô
pode ser observado na Figura 4.

Figura 4 Representação das classes no jogo e ordem de criação

2.3 Desenvolvimento da Interface gráfica do MOD


A interface gráfica, assim como as outras classes do Minecraft, possui diversos métodos
que podem ser sobrescritos dependendo da necessidade do seu MOD. Todas estas
classes precisam ser renderizadas na tela através do OpenGL. Além disso, é necessário
identificar o comportamento do mouse dentro destas classes.
Comparando com o resto do programa, o nível de complexidade de se modelar estas
classes foi o mais alto do trabalho. Além do fato de ter que desenhar os blocos de
instrução na tela usando primitivas do OpenGL, gastou-se muito tempo depurando estas

97
VI Congresso Brasileiro de Informática na Educação (CBIE 2017)
Anais dos Workshops do VI Congresso Brasileiro de Informática na Educação (WCBIE 2017)

classes para que elas funcionassem como o esperado, uma vez que elas podiam gerar
conflitos com as ações de renderização do próprio Minecraft.
O resultado da implementação da interface gráfica pode ser visto na Figura 5

Figura 5 Interface gráfica desenvolvida, com o robô executando um conjunto


de instruções

2.4 Testes Aplicados


Com todas as classes criadas foram definidas rotinas de testes para validar as
funcionalidades do robô (ver Figura 6) e deste modo atender aos requisitos funcionais e
não funcionais apresentados nas Subseções 4.1.2 e 4.1.3.

Figura 6 Testes que feitos em cima da funcionalidade do robô

98
VI Congresso Brasileiro de Informática na Educação (CBIE 2017)
Anais dos Workshops do VI Congresso Brasileiro de Informática na Educação (WCBIE 2017)

Outros testes foram efetuados para verificar os casos em que o robô tentasse andar para
cima de algum bloco, ou tentasse colher um bloco que não existe, ou tentasse colocar
algum bloco no lugar de outro bloco, porém em todos estes casos o robô simplesmente
ignorou este tipo de instrução e executou a próxima, evitando que ele danificasse
estruturas ou criasse estados inconsistentes no jogo.
Durante a etapa de testes foi feita as correções nos casos em que ocorreram falhas, até
todos os testes passassem sem nenhum problema.

3 Resultados
Após a conclusão da implementação do MOD do robô e os testes de funcionalidade
pode-se citar como produtos gerados por esta pesquisa, no que diz respeito a
implementação do MOD: (i) o detalhamento de como criar um MOD para Minecraft
utilizando o Forge; (ii) uma interface de programação baseada em blocos e que utiliza a
premissa do Scratch e (iii) a automatização de tarefas extremamente mecânicas dentro
do jogo através de um robô.
Durante o processo de criação do MOD descobriu-se várias funcionalidades
dentro do Minecraft e do Forge que auxiliaram na implementação, também foram
encontradas uma série de barreiras que dificultaram a implementação de algumas
funcionalidades como: desvios condicionais. A principal dificuldade para implementar
esta instrução consiste na renderização de objetos específicos do mundo para que sejam
utilizados dentro das instruções lógicas de comparação que o bloco necessitaria. Outros
tipos de sensores apresentam a mesma dificuldade.
Com relação a implementação descobriu-se que o Minecraft só oferece suporte
para interfaces gráficas básicas. Qualquer interface um pouco mais avançada, como a
interface de blocos de instrução proposta neste trabalho acaba exigindo um nível de
conhecimento que permeia a construção de instruções de mais baixo nível de abstração
computacional, neste caso, pode-se citar que as instruções em OpenGL costumam a ser
muito primitivas e fogem do paradigma orientado a objetos.
Outro aspecto interessante, que não foi dimensionado como escopo deste
trabalho, consiste na criação de, mais de um robô dentro do jogo, com isso é possível
mandar os robôs executarem tarefas complexas dentro do jogo, como por exemplo na
Figura 7 pode-se ver um conjunto de Robôs construindo uma ferrovia.

Figura 7 Robôs construindo em conjunto uma ferrovia

99
VI Congresso Brasileiro de Informática na Educação (CBIE 2017)
Anais dos Workshops do VI Congresso Brasileiro de Informática na Educação (WCBIE 2017)

4 Conclusões
No desenvolvimento deste projeto percebeu-se que o cenário do ensino atual precisa ter
novos métodos que se adequem a realidade atual. O Pensamento Computacional é um
tópico tão importante quanto as demais áreas que constituem o currículo do ensino
fundamental, uma vez que se trata de habilidades úteis para resolução de problemas e no
desenvolvimento da criatividade. A criação de ferramentas baseadas em jogos que
auxiliem no estimulo ao Pensamento Computacional, além de trazerem benefícios para
os aprendizes, transformam o método de ensino em algo divertido.
Foi conhecido e documentado o processo de criação de MODs para o Minecraft
e foi construído um MOD onde o estudante pode programar um robô para efetuar
tarefas dentro do jogo através de uma IDE visual baseada no Scratch e no Blockly.
Programar um MOD dentro do jogo tem uma curva de aprendizado alta no início,
porém com o passar do tempo vai se tornando uma tarefa menos complexa, com muitas
ferramentas para auxilio no desenvolvimento. A criação de uma interface gráfica
complexa dentro do jogo exige conhecimento de OpenGL, neste caso, é necessário
conhecer bem a API para compreender as ações de interação com a interface e tratar os
aspectos de renderização.
Ao mesmo tempo como o robô precisa ser programado, ele explora conceitos de
programação e Pensamento Computacional, e como a sua programação é bem simples,
dado ao número reduzido de instruções e a linguagem de notação em blocos que evita
erros sintáticos, acredita-se que com o tempo qualquer um pode programa-lo para fazer
o que bem entender enquanto estimula o pensamento computacional.
Verifica-se deste modo como principais contribuições desta pesquisa: O
desenvolvimento de uma ferramenta que permite exercitar conceitos lógicos em um
ambiente divertido e descontraído e o desenvolvimento de uma ferramenta que permite
auxiliar jogadores na resolução de desafios de projetos dentro do jogo, como por
exemplo, construir uma casa.
O robô criado consegue: se movimentar livremente em um mundo aberto,
apanhar objetos, colocar objetos, andar, girar, se movimentar, destruir o cenário e
construir no cenário, dando poder para que o estudante consiga construir praticamente
qualquer coisa dentro do jogo.
Como trabalhos futuros nas linhas de Educação e Computação Aplicada
sugerem-se as seguintes temáticas: o desenvolvimento de outros MODS aplicados ao
ensino de outras linhas de conhecimento; a implementação de outras funcionalidades
para este MOD dentro do jogo, como desvios condicionais e sensores e a
implementação de um sistema de avaliação embarcado no Minecraft sob a forma de um
MOD.

Referências
LAHTINEN, E.; ALA-MUTKA, K.; JÄRVINEN, H.-M. A study of the difficulties of
novice programmers. ACM SIGCSE Bulletin, v. 37, n. 3, p. 14–18, 2005.
MINECRAFT Educational. Disponível em: <http://education.minecraft.net/>. Acesso
em: 01 jun. 2016.

100
VI Congresso Brasileiro de Informática na Educação (CBIE 2017)
Anais dos Workshops do VI Congresso Brasileiro de Informática na Educação (WCBIE 2017)

PAPERT, Seymour. Constructionism vs. Instructionism: Part 1: Teaching vs. Learning.


1980. Disponível em: <http://www.papert.org/articles/const_inst/const_inst1.html>.
Acesso em: 17 mar. 2016.
PETERSEN, A.; CRAIG, M.; ZINGARO, D. Reviewing CS1 exam question content.
42nd ACM technical symposium on Computer science education, p. 631–636, 2011.
RESNICK, Mitchel et al. Scratch. Communications Of The Acm, [s.l.], v. 52, n. 11,
p.60-67, 1 nov. 2009. Association for Computing Machinery (ACM).
http://dx.doi.org/10.1145/1592761.1592779.
SANTANA, A. L. M. Análise do processo metodológico de montagem de um
brinquedo de programar. 2015. 93 f. Dissertação (Mestrado) - Curso de Computação
Aplicada, Universidade do Vale de Itajaí, Itajaí, 2015.
WING, J. M. Computational thinking. Communications of the ACM, v. 49, n. 3, p. 33–
35, 2006.

101

View publication stats

Você também pode gostar