GML Developer Hiring Guide

Hiring Guide for GML Engineers

Ask the right questions to secure the right GML talent among an increasingly shrinking pool of talent.

GML (Graph Modelling Language) is a text-based computer programming language designed for creating graphs. It was developed by AT&T Labs–Research in 1994 and has since been adopted by a number of other organizations. GML is open-source and available for free download. Here are 5 sentences that describe GML: * GML is a text-based computer programming language. * It was developed by AT&T Labs–Research in 1994. * GML is open-source and available for free download. * It is used for creating graphs. * A number of other organizations have adopted GML.

First 20 minutes

General GML knowledge and experience

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

How would you implement a for loop in GML?

A for loop in GML can be implemented as follows: for (var i = 0; i < 10; i++) { // code to be executed }

What is the purpose of the 'with' statement in GML?

The 'with' statement is used to apply a block of code to one or more instances of an object. It changes the context of the code block to the specified instance(s).

Describe the difference between a local and a global variable in GML.

Local variables are only accessible within the script or event where they are declared, whereas global variables can be accessed from any script or event.

How would you declare a variable in GML?

You can declare a variable in GML using the 'var' keyword, followed by the variable name and assignment operator. For example: var myVariable = 10;

What are the basic data types in GML?

The basic data types in GML are real numbers, strings, arrays, lists, maps, and instances.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

What youre looking for early-on

Does the candidate show a willingness to learn and adapt?

This is crucial because technology and programming languages evolve quickly, and a good developer needs to be able to keep up with these changes.

Is the candidate able to work well within a team?

This is important because software development is often a collaborative effort.

Does the candidate have experience with projects similar to ours?

This is important because it shows that they can handle the specific challenges of our project.

Can the candidate solve problems using GML?

This is crucial because the main job of a GML developer is to solve problems using the language.

Is the candidate able to explain complex GML concepts in a simple way?

This is important because it shows that they have a deep understanding of the language and can communicate effectively.

Does the candidate possess a deep understanding of GML language?

This is essential because the candidate needs to be able to write, debug, and maintain GML code.

Next 20 minutes

Specific GML development questions

The next 20 minutes of the interview should attempt to focus more specifically on the development questions used, and the level of depth and skill the engineer possesses.

Describe the difference between the 'draw_self' and 'draw_sprite' functions in GML.

'draw_self' draws the current instance's sprite, while 'draw_sprite' draws a specified sprite. 'draw_sprite' requires additional parameters to specify the sprite, sub-image, and position.

What are surfaces in GML and how are they used?

Surfaces in GML are like canvases that can be drawn on, and then the whole canvas can be drawn to the screen. They are used for complex drawing operations, off-screen rendering, and managing graphical resources.

How would you handle errors in GML?

GML has a try-catch statement, which can be used to catch and handle errors. The code that might throw an error goes in the 'try' block, and the code to handle the error goes in the 'catch' block.

Describe the difference between the '&&' and '||' operators in GML.

'&&' is the logical AND operator, which returns true if both operands are true. '||' is the logical OR operator, which returns true if either or both operands are true.

What are scripts in GML and how do you use them?

Scripts in GML are reusable pieces of code that can be called from anywhere in the program. They can be used by calling the script name followed by parentheses, and passing any required arguments inside the parentheses.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

The ideal back-end app developer

What you’re looking to see on the GML engineer at this point.

At this point, a skilled GML engineer should demonstrate strong problem-solving skills, in-depth knowledge of GameMaker Language (GML), and experience with game development. Red flags would include lack of clarity in explanations, inability to solve basic coding problems, or unfamiliarity with GML syntax and structure.

Digging deeper

Code questions

These will help you see the candidate's real-world development capabilities with GML.

What does the following GML code do?

if (mouse_check_button(mb_left)) {
  x = mouse_x;
  y = mouse_y;
}

This code checks if the left mouse button is pressed. If it is, it sets the x and y coordinates of the instance to the current mouse position.

What will be the output of the following GML code?

var num1 = 10;
var num2 = 20;
show_message(string(num1 + num2));

The output will be a message box displaying the number 30, which is the sum of num1 and num2.

What does the following GML code do?

var arr = ds_list_create();
ds_list_add(arr, 'Game', 'Maker', 'Language');
show_message(ds_list_find_value(arr, 1));

The code creates a list with three strings: 'Game', 'Maker', and 'Language'. It then displays a message box with the second item in the list, which is 'Maker'.

What does the following GML code do?

alarm[0] = 60;
if (alarm[0] > 0) {
  alarm[0]--;
}

This code sets an alarm to decrease by 1 every step until it reaches 0. When the alarm reaches 0, it triggers an event.

What does the following GML code do?

var obj = instance_create_layer(x, y, 'Instances', obj_Player);
obj.speed = 5;

This code creates an instance of obj_Player at the current x and y coordinates on the 'Instances' layer. It then sets the speed of the newly created instance to 5.

What will be the output of the following GML code?

var map = ds_map_create();
ds_map_add(map, 'key', 'value');
show_message(ds_map_find_value(map, 'key'));

The output will be a message box displaying the string 'value', which is the value associated with the key 'key' in the map.

Wrap-up questions

Final candidate for GML role questions

The final few interview questions for a GML candidate should typically focus on a combination of technical skills, personal goals, growth potential, team dynamics, and company culture.

What are shaders in GML and how do you use them?

Shaders in GML are programs that run on the GPU and are used to control the rendering of graphics. They can be used by calling the shader_set function to set the active shader, and then drawing the graphics that should be affected by the shader.

How would you implement pathfinding in GML?

Pathfinding in GML can be implemented using the built-in pathfinding functions, such as mp_grid_create for creating a grid, mp_grid_add_instances for adding obstacles, and mp_grid_path for finding a path.

Describe the difference between the 'instance_create' and 'instance_create_layer' functions in GML.

'instance_create' creates an instance at a specified position, while 'instance_create_layer' creates an instance on a specific layer at a specified position. 'instance_create_layer' requires an additional parameter to specify the layer.

What are buffers in GML and what are they used for?

Buffers in GML are a way of storing data in a binary format. They are used for efficient storage and manipulation of data, and for sending and receiving data over a network.

How would you create and use a data structure in GML?

Data structures in GML can be created using the appropriate function, such as ds_list_create or ds_map_create. They can be used by calling the appropriate functions with the data structure's id as an argument.

The hiring guide has been successfully sent to your email address.
Oops! Something went wrong while submitting the form.

GML application related

Product Perfect's GML development capabilities

Beyond hiring for your GML engineering team, you may be in the market for additional help. Product Perfect provides seasoned expertise in GML projects, and can engage in multiple capacities.