Um dos mais temíveis 'monstros' da criação de jogos! Quando o assunto é variáveis, muitos evitam ou simplesmente fingem que elas nem existem, mas é quase impossível criar jogos sem no mínimo entender para que elas servem. Hoje vamos tirar um tempo para esclarecer e desmistificar os grandes mistérios que assombram desenvolvedores. Também iremos além, falando de forma mais profundo sobre como podemos utilizar as variáveis em nossos joguinhos de RPG Maker!
Então, vamos começar pelo conceito, aqui destacando o seguinte, quando falamos de lógica, estamos pressupondo que ela funciona da mesma maneira para todo e qualquer indivíduo, mas a coisa não é assim tão simples, exemplos óbvios para alguns, podem simplesmente não fazer sentido para outros. Já ouvi diversas explicações sobre o que exatamente é uma variável, algumas entendi claramente enquanto outras, colocaram em risco coisas que eu de fato já havia aprendido. Com isso, quero dizer que é sim muito interessante buscar novos tutoriais e novos professores, a fim de encontrar aquele que fale de uma forma que se encaixe melhor no seu entendimento. As vezes acredito que a programação em geral é simples, mas ela depende muito das duas partes envolvidas no aprendizado, professor e aluno. Apesar do fato de a programação ser uma espécie de ciência exata, é nítido que a forma com que a informação é emitida, importa muito para o bom desenvolvimento do aprendizado. Agora vamos ao que importa.
Variáveis são dados.
Nada além do que um espaço reservado para alocar uma informação, imagine uma tabela do Excel, ela é dividida em células, agora imagine que cada célula é uma variável, lá você consegue armazenar a informação que desejar, nas variáveis funciona exatamente assim.
Destacando que existem diferenças dependendo da linguagem de programação que você está trabalhando, o Java Script por exemplo, é uma linguagem considerada fracamente típada, enquanto o C# (leia Cê Sharp) é fortemente típada, o que isso quer dizer?
Em uma linguagem fortemente típada, você precisa explicar para o sistema, qual o tipo de informação aquela variável irá receber, por exemplo, se eu quero armazenar um texto, devo informar isso para nossa variável antes de armazenar o texto lá, se for um número, tratamos da mesma forma incluindo até especificações mais precisas, como se o número é inteiro ou não, o número de casas após a vírgulas, dentre tantas outras opções.
Voltando ao nosso exemplo do Excel, imaginem que antes de incluir um valor dentro de uma célula, você precisa ir em formatação de célula e definir qual valor vai colocar lá, a partir daí, só poderá colocar aquele tipo de valor. Em contra partida, linguagens fracamente típadas, não carecem de todo esse cuidado, você simplesmente informa o valor que estará dentro da variável e pronto, existem sim algumas configurações para trabalhar com os tipos, semelhantes a formatação que usamos em células do Excel.
Entendendo todo este conceito, fica aquela dúvida, qual a utilidade das variáveis? Lembrem dos dados que você criou em qualquer tabela do Excel, para que você fez aquilo? Informação, e aqui o importa não é propriamente a informação e sim o que será feito com ela, qual a decisão será tomada se o orçamento deste mês estiver no vermelho? E se estiver no azul? O "e se" é a chave para definir e entender o funcionamento das variáveis. Quando criamos uma variável, precisamos entender qual vai ser sua finalidade.
Definir um valor em dinheiro a ser recebido?
Determinar o número de passos do personagem?
Buscar um número aleatório?
Armazenar um dado extra, que o RPG maker não fornece?
As possibilidades são infinitas, partindo do princípio de saber o que está armazenada na variável, iniciamos com as condições, ou seja, o "e se". E se o resultado do orçamento estiver azul? compramos uma televisão. E se estiver vermelho? Ficamos um mês sem Netflix ou jantar fora. Partindo da ideia de que variáveis são valores e que sua função é definir acontecimentos, podemos trabalhar melhor nossos sistemas e teremos dores de cabeça. A dificuldade não está quando criamos uma variável, ela está na manipulação e condicionamento dela.
Um detalhe importa a se destacar é justamente a criação da variável, entender o processo sempre é importante. O processo consiste em alocar memória para o posicionamento dos dados, ou seja, ao criar uma variável, você reserva um espaço dentro da memória utilizada naquele momento, este espaço fica lá, vazio esperando um valor, independente do que ocorra, o espaço estará lá, esperando uma modificação, adição ou quaisquer operações.
É interessante entender isso, pois o RPG Maker trabalha de formas estranhas, as variáveis que utilizamos estão todas em uma array (falaremos em breve), sempre que modificamos o limite delas (marcado em vermelho na imagem), estamos criando variáveis. Esse conceito vale para tudo no Maker, eventos comuns, itens, armas... Sempre que você determinar um limite a mais, você está separando mais espaço na memória que o seu projeto irá utilizar.
Entendemos o que é uma variável, qual a sua função e o seu processo, agora quero falar um pouco sobre os tipos de valores que podemos colocar em uma variável, destacando que o RPG Maker trabalha com Java Script, então estamos falando de uma linguagem fracamente típada.
Números:
Por 'padrão', as variáveis do RPG maker só aceitam números inteiros, oscilando entre -99.999.999 e 99.999.999. Destacando mais uma vez que estamos falando do padrão definido pelo sistema ao utilizar os eventos, mas isso pode ser facilmente quebrado com o uso da caixinha de script.
Textos:
Não existe uma caixinha destinada a atribuição de textos em uma variável, ao menos não por padrão do sistema. Aqui mais uma vez nos vemos utilizando a caixinha destinada a scripts, destacando que ao adicionarmos um texto a uma variável, precisamos colocar ele entre aspas "seu texto aqui". Os textos são chamados de strings.
Chave/Booleana:
Os makers irão conhecer este elemento como Switch, a switch nada mais é que uma variável que retorna um valor verdadeiro ou falso, no caso desta variável, colocamos sim um texto, porém sem aspas, definindo a variável para o estado ligado ou verdadeiro usando true e o desligado ou falso usando false. Vale destacar que não é exatamente o melhor uso para as variáveis padrões do maker, visto que isto pode ser feito diretamente com as switchs.
Para encerrar, vamos falar um pouco sobre a Array, um tipo diferente de variável, mas nem tão diferente assim, arrays são variáveis onde armazenamos mais de um valor, como se fosse uma lista, imaginem que ao invés de definirmos que a variável 3 é igual a "abacate", nós armazenaremos dentro da variável 3, mais 2 variáveis, uma contendo "abacate" e outra contendo "abacaxi". Para níveis de programação, a array funciona para armazenar diversos valores correlacionados, a fim de organizar e otimizar o trabalho, em casos em que é necessário atribuir certos processos. No RPG Maker, tive minha vida facilitada quando descobri o array, visto que armazenar dados em um array cria uma espécie de índice, algo como, 0 - "Abacate", 1 - "Abacaxi". Tendo isso em mente e compreendendo mais alguns detalhes da programação, é possível criar sistemas incríveis. É importante perceber que esse índice é criado contando a partir do zero, tudo em programação começa a contar do zero, não do 1. Para criar uma array da forma mais simples que o RPG Maker permite, usamos novamente o espaço destinado a scripts, dentro da declaração de variáveis, colocamos os valores entre colchetes, separados por vírgula, assim: [0,1,"abacate"].
Agora vamos falar sobre algo que deixa as coisas um pouco mais interessantes e complexas, os scripts calls. Antes de tudo, quero destacar que devemos evitar usar eles, existe uma complexidade em volta da execução do script call que o torna mais lento do que um comando simples, programado por eventos. Mas script calls são importantes, principalmente quando estamos utilizando arrays. As arrays não são acessíveis através dos meios padrões do maker, então precisamos conhecer o seu esqueleto, entender como o RPG Maker lê uma array, é simples, mas fica mais complexo à medida que começamos a aplicar operações na array. Vamos a alguns exemplos.
Vou usar como modelo, a imagem logo acima.
$gameVariables.value(1) - este código mostra a array completa. Neste caso, estamos falando de todos os valores [0,1,"abacate"].
$gameVariables.value(1)[2] - aqui acessamos o índice 2 da array contida na variável 1, o valor entre parênteses representa a variável enquanto o colchete representa o índice, neste caso, estamos falando do valor "abacate".
Tendo isso em mente, podemos aplicar operações como somar, subtrair...
$gameVariables.value(1)[1] += 1 - adiciona 1 ao valor do índice 1.
$gameVariables.value(1)[1] -= 1 - subtrai 1 do valor do índice 1.
$gameVariables.value(1)[1] *= 1 - multiplica por 1 o valor do índice 1.
$gameVariables.value(1)[1] /= 1 - divide por 1 o valor do índice 1.
Quando estamos trabalhando com arrays, sempre iremos utilizar as áreas destinadas a scripts, isso quebra o padrão de números inteiros estipulado pelas variáveis padrão, ou seja, 1 / 2 = 0.5, o mesmo cálculo, sendo feito com variáveis inteiras resultaria em 1. Com um novo detalhe a ser destacado, quando usamos números quebrados, eles são separados por ponto e não vírgula como costumamos aprender na escola, isso se deve ao fato de que a programação utiliza os padrões americanos e não os nossos.
Concluindo, a limitação das variáveis do RPG Maker, é nula, existem diversas formas de trabalhar com elas, podemos ir muito além do básico. Destacando que o mais importante não é o que está na variável e sim o que você vai fazer com o valor que está lá. Em um próximo tutorial, iremos abordar as condições, essenciais no processo de criação de jogos, elas representam o "e se" que falamos anteriormente.
Um grande abraço!
Muito bom, señor Lopez, muito bom!
"Sem variáveis não dá." CAFÉ, 2018.