Tutorial: Programando no Twine – Parte 1 – Macros, Variáveis e Operadores Aritméticos

Muitos recursos já conhecemos interagindo no Twine com as seis postagens anteriores que fizemos sobre ele.

Agora chega o momento de automatizar algumas coisas, criar recursos mais elaborados e dar aquela cara de game para sua história.

Vamos conhecer hoje os recursos de macros, variáveis, operadores aritméticos e atribuição. Após apresentá-los, vou usar um exemplo prático que fará um resumão do que vimos.

Vem comigo.

Macros no Twine

Macros são pedaços de código que você tem como objetivo final inserir algo em uma passagem. Pode ser uma mensagem, valor de variável, armazenar valores, pegar entradas de dados dos jogadores e outros recursos.

Vamos usar ao longo desses tutoriais diversos tipos. Aqui, vou explicar aqueles que usaremos nessa etapa, mas sempre deixarei claro nos outros o uso deles. Eles estarão sempre dentro dos símbolos de menor (<<) e maior (>>).

Exemplo:     <<print “Oi”>>

Nesse exemplo,  a mensagem “Oi” será impressa no trecho da história que ela for aplicado.

Dentro da documentação, a seção que trata esse assunto segue: Macro.

Vejamos os básicos que usaremos:

  • print: imprime no trecho aplicado o texto ou valor de variável. Sintaxe: <<print (VALOR)>>;
  • display: imprime uma passagem inteira onde for usado. Sintaxe: <<display (NOME DA PASSAGEM)>>;
  • set: atribui um valor a uma variável.

Vou usar um display aqui para vocês verem o uso imediato de um.

Primeiro, vamos ter uma visão geral da pequena história. Perceba que deixei a passagem “frutas_verduras” avulsa ali. Ela só servirá para eu pegar o texto dela e jogar na passagem da história. Por isso não tem ligações, ok?

Tutorial_Twine_Prog_P1_01

Por falar no conteúdo da passagem avulsa “frutas_verduras”, digitei ali o texto que depois vou querer emendar lá nas histórias:

Tutorial_Twine_Prog_P1_02

Agora, escrevi o ponto da história inicial (start). Perceba que também usei a macro <<print >> para exibir na tela a pergunta. Não precisava, mas para mostrar uso da macro.

Outra observação é o uso de display na passagem, referenciando o texto que está na outra passagem chamada “frutas_verduras”.

Tutorial_Twine_Prog_P1_03

Agora fiz as passagens de resposta “Sim” e “Não”. Isso tem como fazer com uma passagem apenas, usando a macro <<if>>, mas depois a veremos com calma. 😉

Tutorial_Twine_Prog_P1_04

Veja o resultado final. Ele pegou o texto da passagem “frutas_verduras” e adicionou onde foi referenciado com a macro display.

Tutorial_Twine_Prog_P1_05

Legal, né? Vamos poder reaproveitar passagens e não precisar ficar reescrevendo ou criando novas. E isso é só o começo.

 

Variáveis e Declaração no Twine

Variáveis, o nome já diz, são para armazenamento de valores que variam conforme a sua interação com a história/jogo. Guardar pontuação, quantidade dinheiro, vidas, qual porta ele escolheu, se está aberta ou fechada etc.

O uso delas no Twine é semelhante a sintaxe do PHP. Ela deve começar com $, cuidar com maiúsculas e minúsculas (case sensitive), não usar palavras reservadas, ponto, traços (só underline pode) e espaços.

Exemplo de usos corretos e incorretos abaixo e você os encontra também na documentação do Twine.

Tutorial_Twine_Prog_P1_06

 

Operadores Aritméticos, Atribuição e Concatenação

Operadores vão nos ajudar a fazer comparações de resultados, contas, concatenar mensagens de texto e outros.

Na documentação, a seção respectiva é Expression. Mas tem uns erros nos exemplos ali que vou corrigir aqui.

Seguem os operadores aritméticos do Twine:

Tutorial_Twine_Prog_P1_07

Uma nota é que o + pode ser usado para concatenar strings. Um exemplo:

<<print “Fabiano” + ‘ Naspolini’ + “ de ” + “Oliveira”>>

O resultado final forma “Fabiano Naspolini de Oliveira”. Poderia ser um texto dentro de uma variável ali também:

<< print “Você tem “ + $dinheiro + “ de grana para usar.”>>

No lugar de $dinheiro, apareceria o valor armazenado nessa variável.

Os operadores de comparação e lógicos passarei em outro momento, quando começarmos a ver condições na macro <<if>>.

Quanto às atribuições em variáveis, podemos usar o <<set>> ou <<remember>>. A diferença é que o primeiro vai guardar o valor enquanto a história/jogo estiver em execução. Já o <<remember>>, ele guarda permanentemente.

Também há o <<forget>> para esquecer o valor da variável. É o contrário do remember.

Sintaxe de uso deles:

<<set (VARIÁVEL) to (VALOR)>>
<<remember (VARIÁVEL)>>
<<forget (VARIÁVEL)>>

Também pode se usar o set da seguinte forma.

Para uma variável:

<<set (VARIÁVEL) (OPERADOR) (VALOR)>>

Para mais de uma variável:

<<set (VARIÁVEL 1) (OPERADOR) (VALOR 1); (VARIÁVEL2) (OPERADOR) (VALOR 2)>>

Na documentação, seguem detalhes sobre set, mas também a respeito de remember e forget.

Usaremos, no exemplo prático, mais o set.

 

Exemplo Prático: A Escolha de Portas

Primeiramente, vou criar uma história que ele precisa escolher portas. Cada uma terá uma função diferente:

  • Porta 1: morre e perderá 1 vida a cada entrada nela;
  • Porta 2: o dinheiro do jogador é dobrado cada vez que entrar;
  • Porta 3: ganha uma chave a cada vez que entrar.

Com macro condicional, fica bem fácil isso e apenas uma passagem para as três portas. Mas, como não vimos o recurso, vou fazer separando cada passagem para cada porta. Retomaremos esse exemplo quando o assunto for condicional.

Primeiramente, nossa visão global da história:

Tutorial_Twine_Prog_P1_08

Primeiramente, vou usar a primeira passagem como inicialização de variáveis. Defini chaves como 0, vidas como 3 e dinheiro com 100.

Tutorial_Twine_Prog_P1_09

Depois, chega a parte de escolha das portas. Perceba que fiz um HUD ali para mostrar atualmente como vai ficando cada variável.

Tutorial_Twine_Prog_P1_10

Em seguida, redigi cada porta o que acontecia e as operações que nela ocorreriam.

Tutorial_Twine_Prog_P1_11

Veja o resultado final. Na foto, a situação é a seguinte:

  • 1 vez entrei na Porta 1;
  • 2 vezes entrei na Porta 2; e
  • 1 vez entrei na Porta 3.

Tutorial_Twine_Prog_P1_12

Legal, né? Já teve ideias de como criar recursos bacanas para jogos? Vamos ver muito mais ainda.

 

 

Desafio para o Próximo Tutorial

Dois desafios para vocês:

  • pontos_painelComo não deixar espaços em branco quando se usa macros. Perceba que, ao aplicar uma macro que não imprime nada na história (set, por exemplo), fica uma linha ali em branco na passagem onde ela foi usada. Como tirar isso?
  • Tente fazer com que os status de dinheiro, vida e chaves (funcionam como HUD) apareçam sempre em todas as passagens, usando o conceito de macro display e não copiar/colar em cada passagem o código ali escrito para isso.

Fechou? Respostas no próximo tutorial. Essas soluções se encontram em uma das documentações Twine que citei nessa parte.

 

 

Aprendemos nessa etapa o conceito de macros e usamos algumas já em nossas histórias/jogos. Também já vimos o conceito de variável, seu uso e aplicações. Basta fazer uma atribuição e ela já existirá em sua história/jogo. Por último, estudamos os operadores aritméticos e de concatenação de strings.

O exemplo prático dá uma noção bem legal de uso de todos os conceitos vistos aqui.

No próximo tutorial, vamos explorar as macros condicionais como <<if>> e operadores de comparação e lógicos.

Abraços e até mais. 🙂

Fabiano Naspolini de Oliveira

Fabiano Naspolini de Oliveira

Fabiano Naspolini de Oliveira (Editor-Chefe) – Formado em Análise e Desenvolvimento de Sistemas, Pós-Graduado em Docência para Educação Profissional, MBA em Game Design e Mestrado em Tecnologias da Informação e Comunicação. Foi redator do portal Nintendo Blast, professor de cursos técnicos e Game Designer/Sócio-Fundador do estúdio Céu Games por 6 anos. Atualmente, é professor de jogos digitais e escritor.

Send this to a friend