GameMaker: Studio e o IDE que ele nos fornece, podemos construir videogames de forma rápida e fácil, dando-nos uma interface amigável e clara que também nos fornece ferramentas que nos ajudam a desenvolver nossos jogos.
Uma dessas ferramentas é GML ou Linguagem do GameMaker, que estende muito mais a funcionalidade de nosso ambiente e nos permite, por meio de scripts, escrevermos nosso próprio código para o projeto, que usaremos junto com o restante dos elementos para o desenvolvimento de nossas aplicações.
Criação de scripts
Antes de prosseguir com algumas linhas de código, vamos dar uma olhada nos sites onde nossos scripts estão presentes, dando-nos uma visão geral do que podemos fazer com eles dependendo da situação.
Scripting dentro de um evento
Dentro de um objeto, existem eventos associados a ele, onde esses eventos podem conter um script ou conter uma ação que chama um deles. Este será o único momento em que a funcionalidade Arrastar e Soltar será usada para os scripts.
Para adicione um script para um evento, devemos primeiro criar um objeto a partir do nosso menu de recursos e, uma vez criado, usamos o botão adicionar Evento para criá-lo:
PROLONGAR
Após esta ação, vamos para a nossa guia ao controle e na seção Código, vamos arrastar o primeiro ícone que se parece com uma folha de papel para o Ações e vamos liberar, esta ação criará nosso script e podemos começar a escrever nossas linhas de código:
PROLONGAR
Criação de scripts como recursos
Para criar um script como recurso, vamos ao nosso menu de recursos e selecionamos Criar Script, onde, depois de criado, o script aparecerá na árvore de recursos na seção correspondente:
PROLONGAR
Temos várias maneiras de criar um script e cada uma delas tem suas vantagens, no caso de um script como recurso as seguintes condições são as mais úteis:
- Quando muitos objetos usam a funcionalidade
- Quando uma função requer várias entradas de dados ou argumentos.
- Quando ações globais como carregar e salvar são usadas.
- Ao implementar lógica ou algoritmos complexos.
Scripts em salas
O quartos ou salas são onde recursos específicos são colocados e onde o jogo é jogado. Esses recursos podem ser criados como qualquer outro a partir do menu correspondente com Criar quarto:
PROLONGAR
Estas salas ou salas também podem conter scripts, para isso quando estamos editando uma sala vamos para a guia de configurações dentro das propriedades da sala e lá devemos ver o botão Criação de código:
Pressionar este botão criará um script em branco associado àquela sala, que será executado assim que um jogador carregar a sala, antes que qualquer objeto acione seu próprio evento.
Scripts GML
Depois de sabermos onde podemos criar nosso scripts e a quais recursos associá-los é hora de conhecer as partes que compõem nossos roteiros e os conceitos que devemos dominar, vamos ver.
Programas
Um programa em GML é uma série de instruções que seguem uma ordem específica, onde podemos dizer que qualquer script dentro GML é um programa onde esses programas geralmente são fechados por colchetes, vamos ver um exemplo:
{str_text = "Olá, mundo"; x + = 10; if (x> 200) {str_text = "Olá, Solvético"; }}Como podemos ver, é um programa simples onde fazemos a instância de uma variável do tipo string, então definimos que cada frame ou 10 unidades são adicionadas a x e, finalmente, uma condição de que se x for maior que 200, a atribuição seja executada novamente.
É importante mencionar que o ponto-e-vírgula não é necessário, porém para GML recomenda-se usá-lo para melhorar a leitura do código. Também é aconselhável não usar letras maiúsculas e se alguma variável for composta por duas palavras, use o sublinhado.
Variáveis
As variáveis em GML São eles que nos permitem representar valores e, ao contrário do resto de algumas linguagens de programação, não são estritamente de um tipo, ou seja, não têm de representar uma estrutura de dados específica. No entanto, essas variáveis podem representar um destes dois tipos:
- Um número real pode ser 200 ou 5.356. Esses inteiros também podem corresponder a uma instância específica de um objeto, sala, script ou outro tipo de recurso.
- Uma string que representa uma coleção de caracteres alfanuméricos que são usados regularmente para exibir texto como: "Hello World".
Prefixos variáveis
Como mencionado acima, as variáveis podem corresponder a qualquer tipo de dado, até mesmo a qualquer tipo de recurso, mas para resolver esse problema temos os prefixos das variáveis, que nos permitem identificar o tipo de dado nelas contido. Isso não é obrigatório, mas é uma convenção para poder trabalhar melhor em GML, por exemplo, se tivermos str_player_name Já saberemos que é uma string, vamos ver os prefixos que podemos usar:
- str: String
- spr: Sprites
- snd: sons
- bg: fundos
- pth: Rotas
- scr: Scripts
- fnt: Fontes
- tml: Linha do tempo
- obj: objeto
- rm: Sala
- ps: sistema de partículas
- por exemplo: emissor de partículas
- pt: Tipo de partículas
- ev: Evento
Escopo de variáveis
Em nossos scripts, as variáveis têm escopos diferentes, o que significa que a maneira como podemos acessar as variáveis e definir os valores pode variar. Vamos ver os diferentes escopos que temos:
Instância
Essas variáveis são exclusivas para a instância ou cópias de cada objeto. Eles podem ser acessados e configurados por eles próprios e por outros objetos, sendo os mais comuns dentro do GML.
local
Estes são aqueles que existem apenas dentro de uma função ou script, eles são declarados usando a palavra reservada var e eles só podem ser acessados nos scripts em que são definidos.
Global
Uma variável que é global pode ser acessada por qualquer objeto por meio de um script, ela pertence ao jogo e não à instância individual da instância do objeto.
Constantes
Constantes são variáveis cujos valores só podem ser lidos e não alterados, podem ser globais ou até instância.
Como conhecemos os diferentes tipos de escopos das variáveis, vamos ver um pequeno exemplo de como realizamos a atribuição de acordo com o escopo:
// caso 1 var a = 1; // caso 2 globalvar b; b = 2; // caso 3 global.c = 10; // caso 4 self.x = 10; // case 5 y = 10;Para o primeiro caso, temos um variável local, isso é facilmente identificado pelo uso da palavra reservada var. No segundo caso, temos a declaração de um variável global e sua atribuição. Para o caso 3, é uma forma alternativa de declarar e atribuir um variável global e finalmente para o caso 4 e 5 são variáveis de instância mas um deles através auto e o outro não.
Variáveis de linguagem
Finalmente, no assunto de variáveis, temos algumas variáveis globais e de instância que são fornecidas por GameMaker: Studio para cada objeto, como x, sprite ou índice para mencionar alguns. Mas existem variáveis de linguagem que também são globais, como saúde ou saúde, pontuação ou pontuação e vidas ou vidas. O uso dessas variáveis depende de cada desenvolvedor, então podemos decidir dispensá-las, mas esses nomes as tornam muito mais fáceis de lembrar e aplicar em nossos programas.
Recursos
UMA Função em GML, é uma funcionalidade que permite executar um programa, pode vir por padrão na linguagem ou pode ser criado como um recurso do tipo script.
Essas funções podem executar uma ação como alterar o alinhamento de uma fonte durante o evento de desenho, retornar um valor ou fazer ambos, onde essas funções devem ser seguidas de parênteses e, se necessário, alguns argumentos para seu funcionamento. Vejamos algumas linhas de código para ver o comportamento de algumas funções:
// caso 1 draw_self (); // caso 2 draw_arrow (0,0,100,100,2); // caso 3 random_value = random (10, 23);Para o caso número 1, temos uma função simples que desenha uma instância, o caso número 2 é uma função que executa uma ação e requer argumentos para funcionar, finalmente temos uma função que executa uma ação, que é obter um valor aleatório e retornar para uma variável.
Há um caso especial que é script_execute, que é uma função que nos permite acessar os scripts criados como recursos, e a peculiaridade é que nos permite usar as variáveis do nosso script e depois executá-lo:
self.script = scr_script_recourse; script_execute (self.script, "argumento", obj_button, 0,12, falso);Como podemos ver o espectro de GameMaker: Studio vai muito além de sua interface, contamos com uma ferramenta poderosa como o GML, que possui elementos familiares aos desenvolvedores, como variáveis ou funções, e através dela podemos aplicar nosso conhecimento de desenvolvimento ao desenvolvimento de nossos projetos e jogos.