Escolar Documentos
Profissional Documentos
Cultura Documentos
PRODUÇÃO DE JOGOS
COM GAMEMAKER
Introdução
A GameMaker Language (GML) oferece uma variedade de recursos para a
criação do código de um jogo. Alguns recursos podem ser utilizados para
organização, como comentários e indentação do código, ao passo que
outros podem ser utilizados para acelerar o desenvolvimento e permitir
a reutilização de código, como scripts. No entanto, esses elementos da
linguagem devem seguir um conjunto de regras de sintaxe para que a
engine possa interpretar as instruções corretamente.
Neste capítulo, você estudará sobre a estrutura de um código GML
e algumas de suas regras de sintaxe. Além disso, conhecerá o uso de
funções e scripts e seus argumentos, bem como os elementos necessários
para a configuração de eventos e scripts, como comentários e palavras-
-chave. Por fim, verá os diferentes tipos de variáveis, seus escopos e como
acessá-las em outras instâncias.
2 Criação inicial de jogos com GameMaker Language (GML)
Utilizando funções
Segundo a YoYo Games (2019), a definição geral de uma função na GML seria
semelhante a uma função que possui uma entrada (input) e uma saída (output),
e sua saída está relacionada, de alguma forma, com a entrada. Quando se
utiliza funções, é comum que suas entradas sejam chamadas de parâmetros
(Parameters) ou argumentos (Arguments), e suas saídas, de retornos (Return).
Na GML, as funções são utilizadas para realizar as principais ações do jogo,
como criar e destruir instâncias, alterar a room atual, renderizar textos na tela
e realizar cálculos matemáticos.
Para executar uma função da GML, deve-se seguir um padrão. Primeiro,
deve-se adicionar o seu nome, que é composto por um ou mais termos, separa-
dos pelo símbolo de sublinhado. Depois, deve-se utilizar um par de parênteses
(). Os argumentos dessa função devem ser adicionados entre os parênteses e
separados por vírgulas. Por fim, deve-se encerrar a instrução com um símbolo
de ;, como nas demais instruções. Um exemplo de uso de funções pode ser
visto na Figura 2 (linha 2). Considere que esse é o código de um evento do
obj_code. Observe que nem todas as funções necessitam de argumentos
ou retornam algum valor.
4 Criação inicial de jogos com GameMaker Language (GML)
A GML oferece uma grande variedade de funções prontas para o acesso do desenvol-
vedor. No entanto, é altamente recomendado que se utilize o manual da GameMaker
Studio durante a programação do jogo, pois, além de informações sobre o uso da engine,
ele possui especificações sobre cada função, seus argumentos e exemplos de uso.
O manual pode ser acessado pelo menu Help > Open Manual ou pelo atalho F1.
Uma maneira rápida de se encontrar informações sobre uma função específica é
pela aba de Index. Em segundo caso, também é possível utilizar a aba de Search para
pesquisar termos específicos.
(a)
(b)
Comments
Segundo a YoYo Games (2019), quando se trabalha em colaboração com outras
pessoas, quando se lida com projetos grandes, ou apenas para referência própria,
deixar comentários (comments) pelo código é uma atividade muito importante.
Comentários são anotações ao longo do código, interpretados e executados pela
engine, funcionando como textos e marcações. A GameMaker Studio oferece
algumas opções para se comentar o código em scripts e eventos, permitindo
que o desenvolvedor detalhe o funcionamento de um trecho, os argumentos
necessários para uma função, os resultados esperados para um statement ou
as instruções para os colegas da equipe de desenvolvimento.
8 Criação inicial de jogos com GameMaker Language (GML)
Keywords
Segundo a YoYo Games (2019), para facilitar certas programações, a Game-
Maker Studio oferece um conjunto de palavras-chave (keywords) para ser
utilizado em scripts e eventos. O principal uso das keywords é para identificar
um determinado conjunto (possivelmente vazio) de instâncias, sendo elas:
self; other; all; noone.
O self é utilizado para identificar a instância que está executando o código
atual, o que pode variar ao longo de um evento; o uso dessa keyword pode
ser observado na Figura 6. Considere que esse código está em um evento do
objeto obj_code, por exemplo. Nas linhas 1 e 2, o self indicará o próprio
obj_code, modificando os valores de suas variáveis. Nesse caso, o uso do
self não é necessário, pois essas instruções não estão dentro de nenhum
bloco que modifique a sua referência.
Na linha 3, a função instance_create_layer criará uma instância
do obj_example na posição 0,0. Como essa função retorna uma referência
para a instância criada, o with está representando que “o trecho a seguir
será executado pela instância criada”. Dessa forma, os self das linhas 5 e 6
indicarão a instância criada, alterando suas variáveis.
3 Uso de variáveis
Segundo a YoYo Games (2019), a GML utiliza, assim como qualquer linguagem
de programação, variáveis como uma unidade básica para a maioria de suas
instruções. As variáveis armazenam informações do jogo e do projeto na
memória do hardware que está sendo executado. Essas informações podem ser
utilizadas futuramente por uma ou mais instâncias, dependendo de seu escopo.
A GML oferece vários tipos de valores para serem armazenados em uma
variável. Todas as funções que solicitam argumentos devem receber os tipos
corretos de informação, para que a engine não sinalize um erro. Os tipos de
informações mais utilizados são: valores numéricos, reais (Real) ou inteiros
(Integer); valores textuais (String), como palavras e frases; valores
binários (Boolean), com apenas true ou false; referências a um recurso
(Resource); e vetores (Array), utilizados para armazenar informações
em sequências indexadas.
O uso de variáveis oferece uma grande vantagem, principalmente na ma-
nutenção do código. Se, durante o processo de desenvolvimento, algum valor
for alterado, como a velocidade máxima do jogador, pode-se apenas ajustar
o valor dessa variável no objeto. Sem ela, seria necessário encontrar todos os
locais do código onde esse valor é utilizado e modificá-lo.
Cada variável deve possuir um nome para identificá-la, seguindo algumas
regras. O nome deve começar com uma letra ou o símbolo de underscore/
sublinhado ( _ ). Ao longo do restante do nome, podem ser utilizados apenas
letras, números e underscores. O nome deve ser definido em um texto contínuo,
ou seja, sem espaços, caso contrário, a GameMaker interpretará que são dois
termos individuais. A GameMaker possui quatro tipos principais de variáveis
disponíveis: Instance Variables; Local Variables; Global
Variables; e Built-in Variables.
Instance Variables são variáveis criadas dentro de uma instância
de objeto. Seu valor é único para cada instância, permitindo que diferentes
cópias de um objeto possam funcionar individualmente. Um uso comum
de variáveis de instância é a definição da vida de um personagem. Dessa
forma, cada instância pode sofrer danos em diferentes momentos do jogo
e ser destruídas quando seu valor for menor ou igual a 0, por exemplo. Se
o valor fosse compartilhado entre as instâncias e um personagem sofresse
dano, todas as outras cópias também sofreriam o mesmo dando, sendo todas
destruídas em conjunto.
Criação inicial de jogos com GameMaker Language (GML) 13
Para criar uma nova variável de instância, basta utilizar uma expressão
de atribuição com o seguinte formato: nome_da_variável = valor;.
Quando uma atribuição é feita, define-se o valor de uma variável. Se não
existir até o momento, ela será criada com o valor escolhido. Variáveis locais
são destacadas, por padrão, com a cor azul, com um toque de roxo.
A Figura 10 apresenta exemplos de criação de variáveis de instância com
valores numéricos, de string e booleanos. Na linha 7, pode-se observar que
a variable_sum terá o resultado de uma soma como valor final. Nesse
caso, o resultado será 200, pois o valor de variable_number é 100.
Se variable_number não tivesse sido definida até o momento da execução
desta linha, a GameMaker detectaria um erro, interrompendo a execução do
projeto. Por isso, deve-se ter cuidado para garantir que todas as variáveis de
instância sejam criadas antes de serem utilizadas. Uma prática comum é criá-
-las a partir da janela Variable Definitions, ou no evento de Create.
Local Variables são variáveis que têm o seu escopo limitado pelo
evento atual (ou script atual). As variáveis locais também costumam ser
chamadas de variáveis temporárias (Temporary ou Temp). Ao criar uma
variável local, ela funcionará como uma variável de instância comum durante
o evento/script. Todavia, no momento em que o evento encerrar, ela será
removida da memória do programa, sendo efetivamente deletada. Como as
variáveis locais pertencem ao evento/script atual, elas podem ser utilizadas
em blocos de código criados ao longo do evento, como dentro de um with.
14 Criação inicial de jogos com GameMaker Language (GML)
(a) (b)
(c)
ROGERS, S. Level up! The guide to great video game design. 2nd ed. Hoboken: John
Wiley & Sons, 2010.
YOYO GAMES. GameMaker Studio: user manual. [2019]. Disponível em: http://docs2.
yoyogames.com/. Acesso em: 01 fev. 2020.
Os links para sites da Web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a
rede é extremamente dinâmica; suas páginas estão constantemente mudando de
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade
sobre qualidade, precisão ou integralidade das informações referidas em tais links.