arquivo

e-mail para hugo.santanna@ufes.br instagram @psicologiamatematica twitter @hugocristo youtube github hugocristo modeling commons (netlogo)
12/01/2024

vaderetro #1

A linguagem que RocketSocket utiliza se chama Adele e é uma versão textual dos blocos de encaixe que testei na minha tese. A sintaxe é muito simples e tem o controle comportamento do foguete como base: ligar e desligar o motor, movê-lo uma casa na direção atual ou girá-lo x graus.

A interface do RocketSocket: código (esq.) e trajeto de coleta (dir.)

O detalhamento acadêmico da extensão da lógica de controle do foguete para a geometria de tartaruga está disponível no meu artigo publicado em 2022. Em síntese, do mesmo modo que se move o foguete sobre o tabuleiro para coletar estrelas, pode-se mover a caneta para desenhar.

RocketSocket: do trajeto para o desenho.

Do ponto de vista didático, RocketSocket permite investigar a microgênese das habilidades de abstração (um dos pilares do pensamento computacional), mantendo constante a linguagem por meio da qual os estudantes se expressam. Na apresentação que fiz durante o Congreso de Enseñanza del Diseño da Universidad Palermo (2023, artigo saindo em breve), discuti a jornada das turmas de Design da Ufes (2021-2023), do foguete ao desenho, nos termos do aumento do nível de abstração de projeto.

Trecho dos slides da apresentação no Congreso de Enseñanza del Diseño - UP (2023)

No primeiro semestre de 2023, surgiu a primeira tentativa de desenvolvimento de jogos utilizando o RocketSocket. As condições eram precárias:

  1. O desenho não é instantâneo, pois a didática do ambiente requer que a caneta percorra a tela em passos discretos, permitindo ao estudante avaliar se o resultado obtido era o esperado, conforme representado no código;
  2. Não havia instruções de interatividade, impedindo que o usuário pudesse afetar a execução do código por suas escolhas;
  3. A lógica de plano de voo (liga/executa instruções/desliga) não favorece o estabelecimento de laços infinitos, necessários às implementações [da maior parte] dos jogos.

Ainda assim, um estudante destemido e motivado "dobrou" a linguagem e desenvolveu um jogo de azar, em que se escolhe uma sala de um mapa para se esconder do monstro, que caça suas vítimas de sala em sala, aleatoriamente. Minha ajuda para viabilizar a empreitada consistiu exclusivamente na introdução de uma instrução que permite entrada simples de dados (um prompt do navegador) e outra janela modal com mensagem para o usuário (o "alerta" clássico).

Execução do jogo (O.O.S., estudante de Design da Ufes)

O resultado foi um sucesso entre os estudantes e a tendência é que mais jogos surjam no contexto da disciplina. A ideia de desenvolver outro ambiente me parece mais razoável do que ampliar os recursos de RocketSocket ou corrigir as limitações que mencionei acima. Gosto da proposta das linguagens cuja porção a ser "ingerida" é uma "colher de chá" (ver Mark Guzdial), pois enfatizam pequenas ferramentas de propósito didático exclusivo, orientadas a estudantes das humanidades.

Tal perspectiva argumenta que, em vez de desenvolvermos monstros intratáveis como Processing, podemos investir em pequenas linguagens com aplicações específicas e deliberadamente limitadas. A extensão de RocketSocket para jogos, codinome vaderetro, caminha nessa direção:

  1. Mesma sintaxe de RocketSocket (Adele), aproveitando a musculatura acumulada pelos estudantes enquanto coletavam estrelas e desenhavam;
  2. Substituição das instruções específicas de desenho para o universo da construção de jogos 2D à moda antiga, como fazem os consoles fantasia PICO-8, TIC-8 e similares;
  3. Aproveitamento da IDE de RocketSocket, documentação, galeria e facilitade de compartilhamento de código.
Teste da IDE: editor de código (esq.) e saída do jogo (dir.)

Por enquanto, estou utilizando fundos, personagens e itens de pacotes livres para construir o funcionamento básico do interpretador. Já consigo desenhar o mapa, editável em outra tela, sobre o qual posso mover o avatar do jogador respeitando a colisão com objetos. Minha ideia é permitir a criação de cenas limitadas (algo entre 8 e 16) e regras simples de controle do avatar, inimigos e itens.

Para aproveitar o que existe de RocketSocket, estou utilizando o interpretador e analisador semântico existente e adicionando uma biblioteca extra para as funções do jogo 2D. Até agora vai tudo bem, exceto pela maldição de continuar preso a JavaScript.


Voltar ao índice do blog ou falar comigo sobre este texto