Learn the the basic concepts of programming while developing games in the fun and friendly language Game Maker Language (GML).
Learn and Master Core Programming Concepts With GML.
A Powerful Tool to Create Amazing Games
We'll learn about the essentials of programming. By using GameMaker: Studio, we can take what you're learning and immediately apply it to actual games. You will also get a glimpse of the structure of video games.
GameMaker: Studio is a powerful and growing tool that is breaking its way into professional development. Developers often use GameMaker: Studio to quickly prototype and create games that don't require the power of other languages, like C++, Java, and C#. Hotline Miami, Spelunky, TowerFall Ascension, and Gunpoint are only a few examples of the great games that can be created with GameMaker: Studio.
While designing this course, I kept absolute beginners in mind. When you begin this course, you will be taken from the very basics and work your way up to the more complex concepts. There will be several quizzes along the way to test your knowledge of the concepts you are learning.
By the end of the course, you will understand core programming concepts, how to create games in GameMaker: Studio, and you will have a cool maze game that you can show off to your friends and family.
You can download the assets that will be used in this course here.
Learn how to change GameMaker: Studio's theme.
Learn how to import custom themes.
Learn how to attach external editors to GameMaker: Studio, such as Gimp.
Learn how to import sprites and use sprite sheets.
Learn about sprite origin points and how it can affect the positioning and rotation of an instance.
A brief overview of the different features in the room editor.
Learn how to use backgrounds and tile sheets.
Learn how to create objects.
Learn how to create an application that you can share with others.
Learn how to import and export your projects.
Quiz yourself on the things you have learned in section 1.
Learn how to display text with the show_message(), show_debug_message(), and draw_text() functions.
Comments are an important part of coding. They allow notes to be created within your code to remind yourself of how the code works. Learn how to create single-line and multi-line comments.
Variables are the easiest concept in programming, and the most important as well. Learn what a variable is, how to create one, the different types of variables, and how to access them.
Learn about the importance of using a naming convention when creating a new variable.
Arithmetic, such as addition, subtraction, multiplication, and division, can be performed on variables. This is a common thing, and something you will do often. Learn about performing these operations on variables, as well as the shorthand for each operation.
When performing arithmetic, you must follow an order of operations. This is the same as in algebra. Learn about the order using PEMDAS.
Some variables are only accessible in certain parts of your code; this is scope. Learn about instance variables, local variables, and global variables.
There's another way to create global variables, but its usage is highly debated. It's considered bad practice to use this method, but it is a part of GML, nonetheless. Learn how to create a global variable using the globalvar keyword.
Macros are similar to variables, except their value does not change. Learn how to create macros and use them in your code.
In many types of games and applications, string manipulation is very common. The simplest form of string manipulation is concatenation. Learn how to take two strings and conjoin them.
A quiz about string concatenation.
Conditionals allow you to make decisions. For example, you may only want to show a message if the player's health is above a certain amount; you would use an If Statement for this. Learn about flow control with If-Else Statements.
There are many other comparison operators. Learn about each one.
Conditional operators allow you to evaluate many expressions in one conditional. Learn about the conditional operators.
Boolean expressions are not limited to conditionals. You can evaluate expressions as true or false anywhere in your code. Learn how to evaluate an expression and store the return value in a variable.
Switch Statements are useful when you need to evaluate an expression and then execute one of many different blocks of code based on the value. For example, you may want to display a message to a user in their native language; you could use a variable to store which language is being used, and then display the appropriate message using a Switch Statement.
Dive a little deeper into what a function is, what return values are, and how to use them.
When you need to execute code multiple times, you should look at loops. The For Loop is the most common, and also allows for very dynamic code when used in conjunction with arrays.
Sometimes you need code to execute indefinitely. That's where While and Do-Until Loops come in. Learn to use these loops while avoiding the infamous Infinite Loop.
Arrays allow you to store many values inside of one structure. These are useful for many things, such as inventories in RPG games. Learn what an array is, how to create one, and how to access its data.
Two-dimensional arrays expand upon one-dimensional arrays, and allow much more content to be stored. Learn what a two-dimensional array is, how to create one, and how to access its data.
Learn about the most common events, Create, Step, and Draw, their subevents, and when they're executed.
Sometimes you need code to be executed, but not immediately. In these cases, you can set an alarm, much like you would before you go to sleep, that will execute code when it goes off. Learn how to set an alarm, execute code when it goes off, and how to tell if an alarm has already been set.
Learn how to create your own event.
Learn how to detect key presses through code.
Learn about X and Y positions.
Scripts allow you to create your own function. Learn how to create a script, add arguments to it, and supply a return value.
Sometimes you need to allow optional arguments. In this video, learn how to allow those optional arguments, and how to add Intellisense to your script so that you can see which argument you are on inside of the editor.
When you allow optional arguments, it's often a good idea to supply a default value to be used when no other value is supplied. Learn how to do that in this video.
Accessors allow you to directly access and modify arrays. Learn about the array accessor, how scripts accept arrays as arguments, and how to modify an array from a script.
When thinking about the relationship between objects and instances, you can think of a blueprint and a finished product. In this video, dive deeper into what objects and instances are.
Instances have built-in variables. Learn more about instances, instance creation, instance destruction, and instance IDs.
Maps are associative arrays, which means that each entry has a key and a value. Learn how to create a map and access the different values it contains.
Learn how to use asynchronous messages, and execute code once the user has read the message.
Wrapping up Section 2.
A quiz covering many topic from section 2.
Gummy's Maze sprites.
Learn about what we will be doing in this section.
Import all of the sprites you will need.
Learn how to create a main menu for your game.
Learn how to make Gummy move.
Learn to create a view and make it follow the player.
Learn how to animate Gummy when he walks.
Learn how to create enemies that can move in different directions.
Learn how to add lives and allow Gummy to die.
Learn how to add a game over screen.
Learn how to create a simple background from the wall sprite.
Learn how to create a goal that moves the player to the next room upon contact.
Learn how to create collectibles with a parent object.
Learn how to create a collectible blockade that will only disappear once the player has collected every collectible.
Learn how to add an end game menu and add a finishing touch to the game.
A quiz covering topics from section 3.
End of Course.
My name is Nicholas Cohran. I am an indie game developer. I've always had a passion for video games, and I became interested in programming at eight years old. Since then, I have learnt many programming languages, from GML to C. In 2011, I started a YouTube channel where I would upload tutorials on creating specific things in GameMaker. This became more popular than I had expected, gaining over 500 subscribers and several Twitter followers.