Create Games with Game Maker (no programming) from scratch
4.7 (14 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
214 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Create Games with Game Maker (no programming) from scratch to your Wishlist.

Add to Wishlist

Create Games with Game Maker (no programming) from scratch

Comes with "Supplied Graphics". Make games you can sell/share with friends. GM can port to Mobile Devices, Mac & Linux.
4.7 (14 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
214 students enrolled
Created by Eldon Harris
Last updated 6/2015
Current price: $10 Original price: $30 Discount: 67% off
5 hours left at this price!
30-Day Money-Back Guarantee
  • 3.5 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Use art effectivly in game development
  • Create a fun game to play with your friends
  • Make a commercial quality game from scratch
  • Have fun in a creative and constructive way
View Curriculum
  • Download GameMaker:Studio (free) - Link provided (easy installation and download)

*New In this course, I build a game from the ground up with you. Seriously, I'm doing it from scratch with you while recording with minor editing. This is a great way to learn and troubleshoot problems with me. The game we are making it pretty sweet. This is not a run-of-the-mill game. We are making a keeper.

I provide all assets needed for you to get started!

If you are completely new to game development then use GameMaker: Studio. It may not be as easy as some other engines, but it is feature rich and it will get easier with a little effort and patience. You need these traits to be successful game developer.

Features from Course & GameMaker: Studio:

  • GameMaker *free version* has all the features of the complete version
  • Complete set of quality (royalty free) assets provided
  • GameMaker allows for porting to any device. PC, Mac, Mobile, PS4 and Xbox One. (paid plugin's required)
  • Course will upgrade with more "Free" video's with support. I will keep adding features to enrich our game.
  • You get my project files to work with and make your own.


(Free Preview of Lecture #1 & #48. So you can see where we begin and then some of the features we will work on later)


1) Go to yoyogames(dot)com > click gamemaker menu > download free now > Click to download GameMaker:Studio

2) Save installer to computer or run from browser.

3) Double click file once it is downloaded. Accept and click next with all the options you want. It will also install a "GM player" if you had that selected.

4) When you launch, it will update files and ask if you want stable or beta mode. Click stable mode for now.

5) After you run engine, it will ask you to register for free version. Run through those steps.

6) Watch the video's and continue on with me

* The graphic files are included with the lectures they're associated with.


*Trailer footage

Galactic Missile Defense- Black Sheep Games

The Savant Accent - DPad Studio

Who is the target audience?
  • This course is for beginners looking for an experience doing something creative that takes dedication.
  • Individuals who want to make money off their creation and see others enjoy them.
  • This couse is for 2D video game developers. Those interested in mobile games would benifit.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
53 Lectures
Let's Get Started
4 Lectures 16:00

Welcome to your complete course in GameMaker:Studio. If you haven't already, download GameMaker Studio (free or paid version) and instal as explained in the course summary.

Preview 02:25

It might not seem that important, but getting your projects resolution setup properly from the get-go will save you alot of heartache later. Is this game for PC or mobile devices? I saved my graphics big for this course so that if you want a higher resolution then I'm using for my game, go for it!

Task Reminders:

Set resolution: 1280x720

Save backup project

Only upload .png or .jpg for backgrounds

Preview 04:52

Learn to edit and import your sprite. A long, tedious, but necessary process. Things to remember for GameMaker:

Task Reminders:

Make sure to size your sprites according the the highest resolution your game is going to be.

All the sprites need to face right. GameMaker uses this as the direction degree of "0"

Crop all the transparency from your image and center the origin

* This Gmx attached file has all sprites included that I used. If you prefer to have the game maker file with all objects made (though empty), download the Gmx file in the next lecture.

Importing Sprites & Setup

As you can see in the video, sometimes engine glitches happen. This is uncommon, so don't worry. Make sure to keep organized:

Task Reminders:

Keep files organized in folder

Always name files properly

Set collision masks

* The Gmx Template file has all assets and objects (though empty) included so you don't have to create them. If you prefer just having the assets, use the file provided in the previous lecture.

Making Objects and Keeping Organized
Setup Your Player
6 Lectures 25:49

For every sprite create, you will be creating a duplicate object. This video just briefly explains how to place object into level. It's just like a visual map editor and easy to use. Run the game for the first time.

* For a quick fix, load my GameMaker file that has a plethora of images imported for you. Change the ones you want.

Place Objects Into Level

One object to rule them all! A master object like the one I create is not necessary, but it saves me alot of work later. My camera will always follow my "Invisible Arrow", but my arrow follows any object I'm controlling.

Enemy ships will too always follow my arrow. When I create all the ships I want to control, the enemy will always come after me because in reality they are following the arrow. Therefore I don't have to create code for the enemy to know which ship I'm controlling and how to attack it. Any questions?

Task Reminders:

Set view in room. Check "Visible when room starts"

Have "Object Following" set to obj_followme

Master Objects and Views

You are setting conditions, and if those conditions are met, then an action takes place. Drag and drops do half the work for you. The other part required you to know a bit of algebra, and understand the way a computer thinks. More examples later

Things to remember

.x and .y used after your object name designates the coordinates at the objects location as being "Exactly where it is"

Your code may error if your try to interact with the non-existing object. Use conditional variables like: Test Instance Count to deal with this.

Event's with Actions

Variables are algebra basics. If a = 100 & b = 50 then A+B = 150. You can use variables for timers, weapon firing rate, health control, just about everything. You can assign variables to whole lines of codes =D

GameMaker has built in variables such as: health, image_angle, speed, visible, etc... You can even make your own variables to control speed, visible, etc... if necessary. But why do that when those commands already exist?

Things to Remember:

Relative means, the number you input will add or subtract the amount you designate. You can also use the relative check box to find the exact position you have an object.

Example: So if you create a new object relative to an old object, they will appear on top of each other.

Learn Variables & Basic controls

Use variables as conditions, triggers, and timers. We do this to limit the speed of our ship.

Things to remember:

Save megabyte space and keep more organized by limiting the amount of graphics in your game. Try importing black and white graphics that are colored in your game to get engine flames for all your ships.

Speed and Engine Flame

I've imported a non-colored engine flame. We can use 1 flame for all our ships by coloring them when we make the object. This is a good way to limit the amount of sprites we use and optimize our game.

Sprite Coloring
Creating the Environment
12 Lectures 37:48

When starting my level, I like to add: stars, planets and nebula's, to give my ship an environment to explore before doing anything else.

Things to remember

outside view - Use this command to execute code when the object is outside of view (views are setup in the levels we create)

animation end - after an animation ends, run the actions we set up

Sparkling Stars

Spawning our stars randomly within our view is desirable.

Things to remember:

- makes it so the stars spawn in your view with random width

- makes it so the stars spawn in your view with random height

* drop your spawner into the level

Spawn Stars in View

I left the bug I encountered for you to see, because it was relativity easy to fix. Besides, I am doing this with you from scratch. Sometimes bugs can be really frustrating. In this case, it was just a "Y" that needed to be changed to an "H" for the code to work properly.

Encountering Bugs

Rather then creating several sprites as individual images, try loading them as frames in an animation. When your star is created, have the object pick a frame from that animation.

Things to Remember:

- Change or stop the speed of the animation

- Select the frame of the animation to use

Sprites as an Animation

When you drag over [Var] and assign it a property, it becomes what ever you assign it.

Things to Remember:

Don't assign variables after built in ones such as speed, and visible, etc...

Variables set up in the step event only pertain to that object

Variables can be set globally for the whole game. We'll talk about this more in another lecture.

Personalize Variables

Gradual fading makes everything created look better. We'll use this on just about anything that needs to appear and disappear. Later, we will use it to make our weapon fire fade out, rather then pop out when it reaches it's limits.

Things to Remember:

The fade-in is handled under the "Sprite Color" drag and drop

Fading-In Effect

For this lecture I'm adding another fade-out to my nebula's. In the next lecture I'll take that one step futher by fading out. The nebula's are all contained under 1 sprite animation. I use image_index to randomly select the sprite that is placed.

Repeat to Learn

It's time to fade out. Once you have this process down, you can easily copy and paste the code into other objects.

Fade In and Out Trigger

We need to add an object that spawns the nebula's randomly. This is easy, since we've already done it :) Copy and paste is your most useful function in Game Maker

Object Duplication

Set the depth for all the objects you create. You can also set depth dynamically as the game is running. It would be neat to see ships pass over you when non-aggressive and then pass under you when aggressive.

Depth or Layers

This is a neat trick to do on sprites. You can tweak the image and settings to get different effects. I've used the same trick to simulate fire and smoke from a chimney. I added a blue tint to my sprite as a fun test, and it looks like there was a hazy blue mist in space. Pretty cool.

Transparent Sprite Effects

Optimizing your game from the beginning is very important. Luckily, GameMaker:Studio is a very powerful engine. You can have hundreds of objects on the screen at the same time and it will run good on mid range computers. If an object is out of view though, you might as well destroy it or make it invisible.

Things to remember:

- We use the code in our game if our spaceship gets so far away from the planet. Then the planet disappears.

Distance to Object
Creating Ai & Interacting with Environment
17 Lectures 01:10:26

I used distance_to_object in the last lesson for a reason, because I knew we could use it now. It becomes are trigger for when we get to close to the enemy.

Things to Remember:

We are getting far enough into the game that when you create a new object, you need to think how it will affect everything else.

Creating one new object like a turret in this case, means we have to create a few other objects with it. What is the turret going to fire, do I need explosions, do I need a damage effect on my ship, now I need a health bar for my ship...You can see how adding Ai will dramatically change the workload on your game.

Don't panic though, once you get an object made, you can use that as a quick template to make other objects and Ai.

Starting Our First Ai

We create our weapon for the turret. This includes scaling the graphic properly. Also, setting a timer so the shot fades away gradually. This is the first time we look at collisions. It's an easy select in the event's area. We set a collision between the weapon and our ship.

Weapon Properties

We will be adding distance to object and transforming the sprite of the turret. It's time to add hitpoints to our ship so damage will be counted.

Turret Properties (part1)

Finishing up Image_Angle, and the turret health and depth.

Things to Remember:

- With drag & drop, it will follow the object you designate at a certain speed

Turret Properties (part2)

Time to add some debris when are ship is attacked. We've already learned all the tricks to make this happen. Create instance, fade-out, friction, image_index and we are good to go.

Ship Damage Control

I used variables often for triggers. We did it already with a fade-out. If fadein is less than 0, then an object is destroyed. In this lectures we create starttofade and set it to 0. When it is switched to 1, then the fade changes.

Variables as Triggers

Any engine error will crash the game no matter how small. There is a way to turn this off so the game will keep running. Some will want to do this if all major bugs are taken care of and the game is being released.

The key things to look for when you have an engine error:
1) The object it is happening

2) What event

action number 2
of Step Event0
for object obj_shot1:

Execution Error - Variable Get ...starttofade....
*This variable is having trouble. Was the variable created in the Step Event? Is there a misspelling?

Engine Errors

The draw event is much like the Step Event in where it runs code over and over again. Once you use the step event, you need to draw the sprite (in the relative position) or the sprite will not appear.

I normally avoid the Draw Event except when I'm controlling health bars and HUD elements.

Introducing the Draw Event

The hardest thing about drawing health bars, is finding the x & y coordinates of both corners of the bar. This is done with a little patients and testing the app. A quick way to get correct points, is to:

Open up your sprite image > edit image > move mouse on the sprite and coordinates appear on bottom of editor > record both top left and bottom right point.

Completing the HUD

Get used to copy and paste, you will be using it alot and it speeds up things quickly. Add some new effects to polish up your game.

Things to Remember:

(Highlight the object you want to copy)
Ctrl C
- Copy
Ctrl V - Paste

Weapon and Effects

When you import a sprite you can center an origin or use a point you designate. When we import a turret, we want the center to be where it turns, but we want it to shoot out it's barrel. So we need two origins and one of them if created in the game dynamically.

I use the word dynamically, cause the ship is moving, and the barrel is pointing towards the mouse, so the point for our origin is constantly changing. It's going to take a bit of work to shoot properly.

Things to Remember:

Len (built in variable for length)
Angle (built in variable for angle)

Dynamic Origin

Attach the turret to our ship using jump to position. The is different then step towards point which is more for gradual stepping. Jump to, will instantly go to location. Pointing towards mouse uses "underscore" mouse_x and mouse_y unlike the traditional "dot" yourobject.x and yourobject.y which we use for normal objects.

Things to Remember:

Direction - built in variable that marks the direction of motion
[D&D] Jump_to_position (yourobject.x, yourobject.y)
* Drag & Drop

Image Angle & Point to Mouse

Adding a condition that checks when the mouse button is pressed. Finishing up the point to mouse command line. Making a variable to control shot speed for our ship.

Things to Remember:


Finishing up Turret

Creating a shot at the end of the barrel as we set up earlier with Len & Angle. Then we set up explosions, and other effects related to our weapon.

Things to Remember:

lengthdir_x(Len,Angle + image_angle)
lengthdir_y(Len,Angle + image_angle)

*Len and Angle have values we set up in the creation event

Finishing up Turret (part2)

Parents are a way to say, "Everything that happens to me, happens to you." After you select an object to become the child of that parent, the code of the parent becomes inherited.

Parents and Children

We learned about point_direction earlier with our turret point to the mouse, now let's use the same command for the enemy ship.

Things to Remember:


Pirate Ship A.I

Set up a small chance that the enemy ship will lose interest and break off attack. We then finish up health and the smaller properties the ship has. Now that you have an enemy ship complete, you can duplicate it as a base for other ships.

Pirate Ship A.I (part2)
Expanding the Game
12 Lectures 01:00:45

We have a good foundation for out game now. Whenever you add new objects, even small ones, you will use what we learned about repeatedly. You can do the same thing you do through Drag & Drops using scripts. This is a good way to condense code.

Things to Remember:

*our code

*this is less complicated then it looks. We were drawing a healthbar to move with the screen when it scrolls (view_xview). Normally you just have numbers in there and it looks alot easier.

Introducing Scripts

The shields are a separate entity that steps to the position of the player ship. They have there own hitpoints. We control it's collision with weapons when it is visible. The shields are oval in my case, so I have them follow the facing of my ship.

Red Alert! Raise Shields

I really like the reflect animation. It faces the direction the weapon shot hits the shield. You can even make your base shield invisible, and then when the shots hit you will see the reflect. That would be really cool!

Shield Reflect Effect

I use the draw event to add a visual indicator on/off when my shields are active.

Shield Activation

Finishing up the shield button and selecting the frame of the animation.

Shield Activation (part2)

When health reaching below a certain amount, my display screen is cracked. This is a precursor to other effects you might want to add later. Maybe fire starts on your ship, and then appears on your display? Maybe goo is splattered on your ship and the display turns green?

Cracked Screen

We are going to use scriptures to handle all the variables and commands for our crack that will appear on the hud.

Things to Remember:

* How we use it shown below


Cracked Screen (part2)

Load all your sounds. This is done the same way a sprite is loaded. If you want more options for your sounds, upload .wav. MP3 files will upload, but don't show as many properties to select. When the game launches, it converts all your sounds to .ogg.

Introducing Sounds

Creating a warp effect is done using sounds, animations, and destroying and creating our ship. I'll discuss how to do this without losing the changes that affect the ship before warp. (part 1 of 4)

Preview 05:01

Creating a warp effect is done using sounds, animations, and destroying and creating our ship. I'll discuss how to do this without losing the changes that affect the ship before warp. (part 2 of 4)

Warp Drives (part2)

Creating a warp effect is done using sounds, animations, and destroying and creating our ship. I'll discuss how to do this without losing the changes that affect the ship before warp. (part 3 of 4)

Warp Drives (part3)

Creating a warp effect is done using sounds, animations, and destroying and creating our ship. I'll discuss how to do this without losing the changes that affect the ship before warp. (part 4 of 4)
Warp Drives (part4)
Finishing Your Game
2 Lectures 08:40

Variables work with the object you created it in. Add the word global. before your variable name, and it will be active anywhere in the game. In this lecture I make a separate room the activates my global variables. This is the first time I use the "Next Room" drag and drop. That's how you get from level to level.

Global Variables

I can't wait to see what you've made! This lecture explains how easy it is to compile and run your application. The project should be relatively small, so just save it as an executable and run it from your desktop.

I've outlined many tricks and tactics that you can use to add more features of your own. I'll be here if you need help, to support with more video's if I'm able.

Create Application
Adding to the Expirience
0 Lectures 00:00
About the Instructor
Eldon Harris
4.7 Average rating
14 Reviews
214 Students
1 Course
Media Game Designer

My name is Eldon Harris and I believe in the power of the individual. I founded Roencia Game Creators which provides graphics for game developers. I've seen production of games from paper to release and the efforts it takes to make them.

I started on my own and then later found kindly support from investors and others interested in my work. I make my courses to be a support to you. It's possible for you to make games with a crappy computer and a limited budget. It's possible for you to do many amazing things and it starts by doing something small first. GameMaker:Studio was the path for me & I fully recommend it to you.

There is a slue of great games made in that engine you're probably playing right now! However...playing a game and making a game are two different beasts.

Once you make your first game, share it with friends, and then even possibly sell it, you'll never want to stop. I'll be here if you need me. I'll provide all the graphics you need or source files you'll need as required for my courses.