
This Udemy course is geared towards beginners and gives you all the information needed to make good decisions when starting as an indie developer or even when joining the industry as a contractor or an employee.
The course is split into 3 parts:
The gaming industry - how does it look like and what kind of role can you have in there.
GameMaker Studio 2.3 - Essentail guide how to use effectively the programm and programming basics
Make six games - This part is where we together make small video games with GameMaker Studio 2. After these games you can call yourself an indie developer because making games should feel at that point natural to you. The endgoal is that you see the whole process of making video games and what kind of role you think suits your needs the best.
In this overview you will find out what it means to be a developer.
Where does the indie developer work?
How can an indie developer look like?
What kind roles does an indie developer team have?
What is an endgoal of an indie developer
What are the stakeholders around the indie developer
Video games go through different stages of their life (cycle).
How it looks like traditionally
An alternative view
A game design document is a formulation of the development of a video game (documentation). Everything that is relevant to making a video game can be written here. There is no standard or requirement to have one, but it is a useful tool none the less. The takeaway is that by making such a living document, you have something tangible which can be used as a guide for making the game for you and/or your team.
In the resources you will find an example game design document to help you out. In our projects we will use only a smaller version, which only covers the production and programming requirement. It serves as a template for you and can be altered to your wishes/needs.
The video game industry is a big one. To show solid numbers and impressions I give you a few examples, which should tell you a story of their own. Besides that I will try to give you a few predictions which can go horribly wrong.
Disclaimer: My numbers are all 3rd party (mostly from the link below). Everything mentioned is to give you a clear picture of the environment you want to work in. But it is by no means an instruction or hard advice. You need to make your own mind about the content provided here.
External resource:
https://www.gamingscan.com/gaming-statistics/
This video's content is the opinion of the producer (which is me). It is no instruction but a friendly reminder where a lot of (indie) developers can fail or succeed.
Since every case is different you can apply the information provided as hints where/what to look out for and if it makes sense for you to be invested in the developement of video games as a such. My goal is to give you useful informations and encourage you, but in the end you need to decide for yourself if this is the path to go forward.
Every role in the development of a video game is vital but different. To standardise and make it more tangible, I divided the development team into 4 distinct roles.
This one is about the game designer. Questions like these will be answered:
1. What does a game designer do?
2. How does he/she achieve his/her goals?
3. What tools does a game designer use?
4. What does a game designer earn on average?
5. Is that the role for you?
Every role in the development of a video game is vital but different. To standardise and make it more tangible, I divided the development team into 4 distinct roles.
This one is about the programmer. Questions like these will be answered:
1. What does a game designer do?
2. How does he/she achieve his/her goals?
3. Allrounder or specialist?
4. What tools does a game designer use?
5. What does a programmer earn on average?
6. Is that the role for you?
Every role in the development of a video game is vital but different. To standardise and make it more tangible, I divided the development team into 4 distinct roles.
This one is about the artist. Questions like these will be answered:
1. What does an artist do?
2. How does he/she achieve his/her goals?
3. Allrounder or specialist?
4. What tools does a game designer use?
5. What does a artistearn earn on average?
6. Is that the role for you?
Every role in the development of a video game is vital but different. To standardise and make it more tangible, I divided the development team into 4 distinct roles.
This one is about the marketing/social/budgeting "guy". Questions like these will be answered:
1. What does an marketing/social/budgeting "guy" do?
2. How does he/she achieve his/her goals?
3. What tools does a game marketing/social/budgeting "guy" use?
4. What does a marketing/social/budgeting "guy" earn on average?
5. Is that the role for you?
These videos plus the comic are geared towards beginners who would like to see how to work with an ide (integrated development environment) which is simply a programm/tool to make games. Making games from scratch is a long and complicated process. Thats why it makes sense to use user friendly ides which make the creation of games almost a breeze.
This part gives you the first contact with GameMaker Studio 2 (newest version 2.3) and how you can navigate through it. There are tons of things which you can do with this programm, but we will focus on the easy stuff in this tutorial series.
The workspace:
The workspace is the where the coding/ajusting happens and you will be spending most time here.
Comic:
If you get lost on the way or want in easy introduction into GameMaker Studio plus programming basics simply to check ou the comic. Programming doesn't feel natural to most people (me included) and there is no need to make things more complicated than needed! All the concepts of programming and using GameMaker Studio 2 can be checked out in the comic.
I don't have GameMaker Studio 2, what now?
If you don't own GameMaker Studio 2, I have good news for you. Yoyo Games has a trail/demo version which you can use for 30 days for free without any limitations! What you need to do is create an account and download plus install GameMaker Studio 2.
GameMaker Studio 2 free trail/demo found here:
https://www.yoyogames.com/get
Every room/level has things in it (assets) . That can be sprites, objects, tilesets, backgrounds. Because these assets are different, there needs to be something on which these assets are put on, which is layers.
In essence you have a room (level), in that room you have layers (instances layer, background layer, asset layer, tileset layer ) that contain assets (objects, sprites, tilesets, fonts, etc. ).
Every programm has a language on which it has been build on. The same goes for GameMaker Language (gml), which is a simplified/flexible coding language to write down instructions.
What will you learn?
- what is a programming language (spoiler -> an instruction)
- how is gml structured
- how to read code
- how and where to write code
Every object has the option to get one sprite assigned. By doing so you have a lot of default variables to further define how that sprite is being draw on the screen.
Here you will find out how to move instances.
GameMaker Studio is event driven. To control everything you have an event system build into every object per default. These events have different functional uses.
The whole course will be focusing only on the most important events.
- create event
- step event
- draw event
- alarm (event)
- other -> animation end
Here you will find the resources needed to build this project (graphics). You will find a copyright document also, but all are CC0 to CC3 which means you can freely use them. You can check out the artists and if you used these graphics in a commerical game. In that caseplease credit them. You don't have to use the graphics provided and you can use your own. They are simply an additional service for you. The project mine/yours is under no "real" copyright, you can use and abuse it to your hearts content (CC0 by Iup Indie).
How to use:
I have seperated most projects like this.
1. introduction to the project (game designer role)
2. make the game design document (game designer role)
3. programm the game (programmer role)
4. bonus content (optional content)
The introduction video is simply a roleplay you can part take also if you wish to. The game design document video is the same but now an application how to setup the the game design document. Here at the 3rd video, which is programming, we swap the roles to the programmer and I give you instructions what to do step by step. Here you need to be active and we are building/preparing you for your adventure of game making. After that, there is a bonus video, which is optional. You can try to repeat and do the bit more advance content from the bonus video with me or simply see how we can squeeze out a bit more from the current project in question.
A sidenote: The programming videos are quite long, so here is how you can master them. You can play/pause the long one or use the "part ..." videos which are separated into smaller chunks. They are basicallly the same (dublicated content), but I wasn't sure which you prefer, so... I did both.
For you convenience, you will find the finished projects (normal + bonus) also, but I highly discourage you to instantly use them, because building piece by piece everything by yourself (with instructions from my side of course) is how the course is meant to be used. So cheating is possible but not a good idea.
Let's define the core of the game in the game design document.
The progamming part. Since this is a long video it is maybe good to pause frequently or if you like the "small" chunks approach you can have the same video but seperated below as part 1 .... part 2 etc. .
1. The instruction is: Create a project, give it a name and delete the default assets
2. The instruction is: Create a room and give it (by your coding/naming convention) a name.
3. The instruction is: Create one object named obj_Player, create one object named obj_Enemy and create one object named obj_Shot.
4. The instruction is: Create sprites (asset), import the graphics necessary for this project by setting them to the sprite (assets) created and give them names.
5. The instruction is: Assign the all objects the correct sprites.
6. The instruction is: Put one obj_player object into the room by draggin and dropping him on the instances layer (of the room) aswell as a few obj_enemy objects.
7. The instruction is: Assign the spr_Background sprite to your background layer and make it scroll.
8. The instruction is: Create an additional keyboard pressed event in the obj_Player object for moving right and update/set the position (x coordinate) of the obj_Player object in order to move right in case of pressing the right keyboard key.
9. The instruction is: Set in the create event of the obj_Shot object the direction and speed so that it goes upwards. Set direction to 90 and set speed to 3.
Totally optional content. This is meant to show how you can do things like me when you are bit more comfortable with making video games. There is no right or wrong way so in essence you can advance this project to your heart's content.
The instruction is: Create a project, give it a name and delete the default assets
The instruction is: Create a room and give it (by your coding/naming convention) a name.
The instruction is: Create one object named obj_Player, create one object named obj_Enemy and create one object named obj_Shot.
The instruction is: Create sprites (asset), import the graphics necessary for this project by setting them to the sprite (assets) created and give them names.
The instruction is: Assign the all objects the correct sprites.
The instruction is: Put one obj_player object into the room by draggin and dropping him on the instances layer (of the room) aswell as a few obj_enemy objects.
The instruction is: Assign the spr_Background sprite to your background layer and make it scroll.
The instruction is: Create an additional keyboard pressed event in the obj_Player object for moving right and update/set the position (x coordinate) of the obj_Player object in order to move right in case of pressing the right keyboard key.
The instruction is: Set in the create event of the obj_Shot object the direction and speed so that it goes upwards. Set direction to 90 and set speed to 3.
Here we just do a few corrections and we have succefully finished our first project!
Here you will find the resources needed to build this project (graphics). You will find a copyright document also, but all are CC0 to CC3 which means you can freely use them. You can check out the artists and if you used these graphics in a commerical game. In that caseplease credit them. You don't have to use the graphics provided and you can use your own. They are simply an additional service for you. The project mine/yours is under no "real" copyright, you can use and abuse it to your hearts content (CC0 by Iup Indie).
How to use:
I have seperated most projects like this.
1. introduction to the project (game designer role)
2. make the game design document (game designer role)
3. programm the game (programmer role)
4. bonus content (optional content)
The introduction video is simply a roleplay you can part take also if you wish to. The game design document video is the same but now an application how to setup the the game design document. Here at the 3rd video, which is programming, we swap the roles to the programmer and I give you instructions what to do step by step. Here you need to be active and we are building/preparing you for your adventure of game making. After that, there is a bonus video, which is optional. You can try to repeat and do the bit more advance content from the bonus video with me or simply see how we can squeeze out a bit more from the current project in question.
A sidenote: The programming videos are quite long, so here is how you can master them. You can play/pause the long one or use the "part ..." videos which are separated into smaller chunks. They are basicallly the same (dublicated content), but I wasn't sure which you prefer, so... I did both.
For you convenience, you will find the finished projects (normal + bonus) also, but I highly discourage you to instantly use them, because building piece by piece everything by yourself (with instructions from my side of course) is how the course is meant to be used. So cheating is possible but not a good idea.
Let's define the core of the game in the game design document.
The progamming part. Since this is a long video it is maybe good to pause frequently or if you like the "small" chunks approach you can have the same video but seperated below as part 1 .... part 2 etc. .
1. The instruction is: Create a new project, give it a name and delete all the default assets.
2. The instruction is: Import the graphics and set the backround sprite (spr_Background) to the background layer.
3. The instruction is: Create one object called obj_Spawner and give it it's sprite.
4. The instruction is: Put one object obj_Spawner in the room, create an create event in the object obj_Spawner and in there make an alarm that triggers after 500 steps.
5. The instruction is: Create an alarm event in the object obj_Spawner and loop it there every 500 steps.
6. The instruction is: Create one object called obj_Food, give it the sprite spr_Food and set the image_index to 0.
7. The instruction is: Give object obj_Food a speed and direction variable in the create event and set for both inbuild variables the values that it falls downwards.
8. The instruction is: Create one instance of the obj_Food every time the obj_Spawner alarm loops.
9. The instruction is: Create in create event of the obj_spawner two variables (direction and speed) and set these so it goes to the right.
10. The instruction is: Create two objects obj_Bumper_GoLeft and obj_Bumper_GoRight, assign them their sprites and place them on left and right side of the obj_Spawner.
11. The instruction is: Create two collision events in the obj_Spawner with obj_Bumper_GoLeft and obj_Bumper_GoRight and change/set inside those collisions the direction of the obj_Spawner to go left or go right.
12. The instruction is: Set/change inside the collision events in the obj_Spawner with obj_Bumper_GoLeft and obj_Bumper_GoRight the image_xscale to 1 when going right and the image_xscale to -1 when going left.
13. The instruction is: Create an asset layer in the room and place multiple spr_Bench sprites as a decoration/cosmetics under the obj_Spawner.
14. The instruction is: Create an obj_Controller object, assign it's sprite (spr_Icon_Control) and create there an create event which has a variable that holds the score. This variable set to 0.
15. The instruction is: Create inside the obj_Controller a draw event and draw inside there the text which is the score variable. Hint -> use the function draw_text().
16. The instruction is: Create your own font (asset), give it a name and customize the font to your liking.
17. The instruction is: Create an object obj_Player, assign it's sprite to it.
18. The instruction is: Create inside the obj_Player object step event two temporary variables left and right. Set both temporary variables to a value of 0.
19. The instruction is: Make two if checks if left or right is being pressed in the obj_Player's step event. Simply check if the value of left/right is being 1.
20. The instruction is: Set the value of the right variable to a keyboard_check() with the virtual key vk_right. Analog to the like we did for the left variable.
21. The instruction is: Update/set the x positon by 1 if the right variable is/has a value of 1. Update/set the x positon by -1 if the left variable is/has a value of 1.
22. The instruction is: Update/set the image_xscale to 1 if the right variable is/has a value of 1. Update/set the image_xscale to -1 if the left variable is/has a value of 1.
23. The instruction is: Create a collision event inside the obj_Food object with the obj_Player object and destroy the instance (instance_destroy() ) when colliding.
Totally optional content. This is meant to show how you can do things like me when you are bit more comfortable with making video games. There is no right or wrong way so in essence you can advance this project to your heart's content.
The instruction is: Create a new project, give it a name and delete all the default assets.
The instruction is: Import the graphics and set the backround sprite (spr_Background) to the background layer.
The instruction is: Create one object called obj_Spawner and give it it's sprite.
The instruction is: Put one object obj_Spawner in the room, create an create event in the object obj_Spawner and in there make an alarm that triggers after 500 steps.
The instruction is: Create an alarm event in the object obj_Spawner and loop it there every 500 steps.
The instruction is: Create one object called obj_Food, give it the sprite spr_Food and set the image_index to 0.
The instruction is: Give object obj_Food a speed and direction variable in the create event and set for both inbuild variables the values that it falls downwards.
The instruction is: Create one instance of the obj_Food every time the obj_Spawner alarm loops.
The instruction is: Create in create event of the obj_spawner two variables (direction and speed) and set these so it goes to the right.
The instruction is: Create two objects obj_Bumper_GoLeft and obj_Bumper_GoRight, assign them their sprites and place them on left and right side of the obj_Spawner.
The instruction is: Create two collision events in the obj_Spawner with obj_Bumper_GoLeft and obj_Bumper_GoRight and change/set inside those collisions the direction of the obj_Spawner to go left or go right.
The instruction is: Set/change inside the collision events in the obj_Spawner with obj_Bumper_GoLeft and obj_Bumper_GoRight the image_xscale to 1 when going right and the image_xscale to -1 when going left.
The instruction is: Create an asset layer in the room and place multiple spr_Bench sprites as a decoration/cosmetics under the obj_Spawner.
The instruction is: Create an obj_Controller object, assign it's sprite (spr_Icon_Control) and create there an create event which has a variable that holds the score. This variable set to 0.
The instruction is: Create inside the obj_Controller a draw event and draw inside there the text which is the score variable. Hint -> use the function draw_text().
The instruction is: Create your own font (asset), give it a name and customize the font to your liking.
The instruction is: Create an object obj_Player, assign it's sprite to it.
The instruction is: Create inside the obj_Player object step event two temporary variables left and right. Set both temporary variables to a value of 0.
The instruction is: Make two if checks if left or right is being pressed in the obj_Player's step event. Simply check if the value of left/right is being 1.
The instruction is: Set the value of the right variable to a keyboard_check() with the virtual key vk_right. Analog to the like we did for the left variable.
The instruction is: Update/set the x positon by 1 if the right variable is/has a value of 1. Update/set the x positon by -1 if the left variable is/has a value of 1.
The instruction is: Update/set the image_xscale to 1 if the right variable is/has a value of 1. Update/set the image_xscale to -1 if the left variable is/has a value of 1.
The instruction is: Create a collision event inside the obj_Food object with the obj_Player object and destroy the instance (instance_destroy() ) when colliding.
To sum it up. We have finished our second project and have learned how to update/set and compare values inside objects.
Here you will find the resources needed to build this project (graphics). You will find a copyright document also, but all are CC0 to CC3 which means you can freely use them. You can check out the artists and if you used these graphics in a commerical game. In that caseplease credit them. You don't have to use the graphics provided and you can use your own. They are simply an additional service for you. The project mine/yours is under no "real" copyright, you can use and abuse it to your hearts content (CC0 by Iup Indie).
How to use:
I have seperated most projects like this.
1. introduction to the project (game designer role)
2. make the game design document (game designer role)
3. programm the game (programmer role)
4. bonus content (optional content)
The introduction video is simply a roleplay you can part take also if you wish to. The game design document video is the same but now an application how to setup the the game design document. Here at the 3rd video, which is programming, we swap the roles to the programmer and I give you instructions what to do step by step. Here you need to be active and we are building/preparing you for your adventure of game making. After that, there is a bonus video, which is optional. You can try to repeat and do the bit more advance content from the bonus video with me or simply see how we can squeeze out a bit more from the current project in question.
A sidenote: The programming videos are quite long, so here is how you can master them. You can play/pause the long one or use the "part ..." videos which are separated into smaller chunks. They are basicallly the same (dublicated content), but I wasn't sure which you prefer, so... I did both.
For you convenience, you will find the finished projects (normal + bonus) also, but I highly discourage you to instantly use them, because building piece by piece everything by yourself (with instructions from my side of course) is how the course is meant to be used. So cheating is possible but not a good idea.
Let's define the core of the game in the game design document.
The progamming part. Since this is a long video it is maybe good to pause frequently or if you like the "small" chunks approach you can have the same video but seperated below as part 1 .... part 2 etc. .
1. The instruction is: Create a new project, give it a name and delete all not used assets.
2. The instruction is: Create 3 rooms called room_Start, room_Game and room_Gameover.
3. The instruction is: Import the graphics for this project and give them names.
4. The instruction is: Create an asset layer in room_Start and an asset layer in room_Gameover. Place in the asset layer of the room_Start the logo sprite spr_Logo and in the asset layer of the room_Gameover the game over sprite spr_GameOver.
5. The instruction is: Create a controller object obj_Controller, assign it the sprite spr_Controller. Place it into the start room room_Start, make it invisible, and then make an alarm that once triggered jumps into the room room_Game after two seconds (120 steps). Use the function room_goto() to jump.
6. The instruction is: Assign to all rooms the same background sprite spr_Background to the background layer.
7. The instruction is: Create a player object obj_Player. Assign him the player sprite (spr_Player) and place him once in the room room_Game.
8. The instruction is: Try to fill out the function mp_potential_step() with the coordinates of the player mouse x and y positions in the step event of the object player obj_Player. Hint-> mouse_x, and mouse_y.
9. The instruction is: Create the object obj_Spawner, assign it the sprite spr_Spawner. Place four spawner objects into the room room_Game.
10. The instruction is: Create an object planet obj_Planet, assign it the sprite spr_Planet and place one in the middle of the room room_Game.
11. The instruction is: Create a create event inside the obj_Planet object, create a variable called health and set it to a value of 5.
12. The instruction is: Create a draw event in the object obj_Planet. Draw there your health above the sprite with draw_text and draw your assigned sprite by using the function draw_self().
13. The instruction is: Create an object rocket obj_Rocket and assign it the sprite spr_Rocket.
14. The instruction is: Create an alarm event inside the object obj_Spawner. Trigger the alarm event once in the create event and loop the alarm event once it is triggered.
15. The instruction is: Create an instance of the obj_Rocket rocket every time the alarm event is being triggered.
16. The instruction is: Try to with the help of the function mp_potential_step() inside the step event of the object obj_Rocket to home into the x,y coordinate of the target obj_Planet. Hint -> obj_Planet.x, and obj_Planet.y.
17. The instruction is: Scale up the size of the sprite assigned in the object obj_Rocket proportionally by setting image_xscale and iamge_yscale to a value higher than 1 in the create event of obj_Rocket.
18. The instruction is: Make a collision event in the object obj_rocket with the object obj_Planet or the other way around. If they collide destroy the instance of the obj_Rocket.
19. The instruction is: Create an object obj_Explosion, assign it the sprite spr_Explosion. Create an other event -> animation end, and destroy there the instance.
20. The instruction is: If there is a collision of the planet obj_Planet with the rocket instance, decrease/set the health variable by -1 of obj_Planet.
21. The instruction is: Make an if check in the step event of the obj_Planet object and check there if the health variable is equal or lower then 0. In that case jump into the room room_Gameover.
Make a second controller object obj_Controller_Gameover. Here do that same procedure like we did in the obj_Controller object. Have there an alarm and after 2 seconds jump back to the start room to loop the game.
Totally optional content. This is meant to show how you can do things like me when you are bit more comfortable with making video games. There is no right or wrong way so in essence you can advance this project to your heart's content.
The instruction is: Create a new project, give it a name and delete all not used assets.
The instruction is: Create 3 rooms called room_Start, room_Game and room_Gameover.
The instruction is: Import the graphics for this project and give them names.
The instruction is: Create an asset layer in room_Start and an asset layer in room_Gameover. Place in the asset layer of the room_Start the logo sprite spr_Logo and in the asset layer of the room_Gameover the game over sprite spr_GameOver.
The instruction is: Create a controller object obj_Controller, assign it the sprite spr_Controller. Place it into the start room room_Start, make it invisible, and then make an alarm that once triggered jumps into the room room_Game after two seconds (120 steps). Use the function room_goto() to jump.
The instruction is: Assign to all rooms the same background sprite spr_Background to the background layer.
The instruction is: Create a player object obj_Player. Assign him the player sprite (spr_Player) and place him once in the room room_Game.
The instruction is: Try to fill out the function mp_potential_step() with the coordinates of the player mouse x and y positions in the step event of the object player obj_Player. Hint-> mouse_x, and mouse_y.
The instruction is: Create the object obj_Spawner, assign it the sprite spr_Spawner. Place four spawner objects into the room room_Game.
The instruction is: Create an object planet obj_Planet, assign it the sprite spr_Planet and place one in the middle of the room room_Game.
The instruction is: Create a create event inside the obj_Planet object, create a variable called health and set it to a value of 5.
The instruction is: Create a draw event in the object obj_Planet. Draw there your health above the sprite with draw_text and draw your assigned sprite by using the function draw_self().
The instruction is: Create an object rocket obj_Rocket and assign it the sprite spr_Rocket.
The instruction is: Create an alarm event inside the object obj_Spawner. Trigger the alarm event once in the create event and loop the alarm event once it is triggered.
The instruction is: Create an instance of the obj_Rocket rocket every time the alarm event is being triggered.
The instruction is: Try to with the help of the function mp_potential_step() inside the step event of the object obj_Rocket to home into the x,y coordinate of the target obj_Planet. Hint -> obj_Planet.x, and obj_Planet.y.
The instruction is: Scale up the size of the sprite assigned in the object obj_Rocket proportionally by setting image_xscale and iamge_yscale to a value higher than 1 in the create event of obj_Rocket.
The instruction is: Make a collision event in the object obj_rocket with the object obj_Planet or the other way around. If they collide destroy the instance of the obj_Rocket.
The instruction is: Create an object obj_Explosion, assign it the sprite spr_Explosion. Create an other event -> animation end, and destroy there the instance.
The instruction is: If there is a collision of the planet obj_Planet with the rocket instance, decrease/set the health variable by -1 of obj_Planet.
The instruction is: Make an if check in the step event of the obj_Planet object and check there if the health variable is equal or lower then 0. In that case jump into the room room_Gameover.
Make a second controller object obj_Controller_Gameover. Here do that same procedure like we did in the obj_Controller object. Have there an alarm and after 2 seconds jump back to the start room to loop the game.
Now you have learned to make a simple room changes and setting a base game loop with a lose condition. Also we have swapped the player controlls from keyboard to the mouse.
Here you will find the resources needed to build this project (graphics). You will find a copyright document also, but all are CC0 to CC3 which means you can freely use them. You can check out the artists and if you used these graphics in a commerical game. In that caseplease credit them. You don't have to use the graphics provided and you can use your own. They are simply an additional service for you. The project mine/yours is under no "real" copyright, you can use and abuse it to your hearts content (CC0 by Iup Indie).
How to use:
I have seperated most projects like this.
1. introduction to the project (game designer role)
2. programm the game (programmer role)
3. bonus content (optional content)
The introduction video is simply a roleplay you can part take also if you wish to. Here at the 2rd video, which is programming, we swap the roles to the programmer and I give you instructions what to do step by step. Here you need to be active and we are building/preparing you for your adventure of game making. After that, there is a bonus video, which is optional. You can try to repeat and do the bit more advance content from the bonus video with me or simply see how we can squeeze out a bit more from the current project in question.
A sidenote: The programming videos are quite long, so here is how you can master them. You can play/pause the long one or use the "part ..." videos which are separated into smaller chunks. They are basicallly the same (dublicated content), but I wasn't sure which you prefer, so... I did both.
For you convenience, you will find the finished projects (normal + bonus) also, but I highly discourage you to instantly use them, because building piece by piece everything by yourself (with instructions from my side of course) is how the course is meant to be used. So cheating is possible but not a good idea.
The progamming part. Since this is a long video it is maybe good to pause frequently or if you like the "small" chunks approach you can have the same video but seperated below as part 1 .... part 2 etc. .
1. The instruction is: Create a new project, give it a name and delete all not used assets. Create 2 rooms, room_Start, room_Game.
2. The instruction is: Import all the graphics as usual and create an asset layer in the room_Start.
3. The instruction is: Create an object obj_Controller, assign the sprite spr_Controller to it. Here once again put obj_Controller into the start room room_Start and have an alarm that once triggered makes a jump after two seconds into the room room_Game.
4. The instruction is: Create an object obj_Player, assign the sprite spr_Player to it. Place the obj_Player in the room and make it rotate slowly.
Hint -> image_angle and step event.
5. The instruction is: Create an alarm that loops every 30 steps. Once the alarm is triggered, update/set the direction to a new one depeding where the mouse is.
Hint -> use point_direction() between the x, y coordinates of the obj_Player and the mouse x,y coordinates and set it to direction.
6. The instruction is: Create an object food obj_Food, assign the sprite spr_Food and set in the create event the image_index to a random value.
Hint -> irandom_range(), or chose(0,1,2,...), image_number
7. The instruction is: Create an collision event in the obj_Player with obj_Food. In the collision event increase the image_xscale and image_yscale by 0.2 and the speed by 0.3 of the obj_Player.
8. The instruction is: In collision event in the obj_Player with obj_Food we want the obj_player to shapeshift into the thing we are bumping into. Set/change in the collision even the image_index of the obj_Player into the image_index of the food instance.
Hint -> use the other keyword to access the instances variables. other.image_index
9. The instruction is: Create an object obj_Spawner, assign a sprite to it. Create once in the create event 20 instances of the obj_Food somewhere in the room.
Multiple ways how to do this ->
Beginners: repeat(), and randomly assing x, y postions for the instance created
Advanced: for loop(), and randomly assing x, y postions for the instance created
10. The instruction is: Create and object obj_Enemy, assign the sprite spr_Enemy and create 10 instances of obj_Enemy also randomly in the room in the create event of obj_Spawner.
11. The instruction is: Assign an random image_index to the obj_Enemy.
Totally optional content. This is meant to show how you can do things like me when you are bit more comfortable with making video games. There is no right or wrong way so in essence you can advance this project to your heart's content.
The instruction is: Create a new project, give it a name and delete all not used assets. Create 2 rooms, room_Start, room_Game.
The instruction is: Import all the graphics as usual and create an asset layer in the room_Start.
The instruction is: Create an object obj_Controller, assign the sprite spr_Controller to it. Here once again put obj_Controller into the start room room_Start and have an alarm that once triggered makes a jump after two seconds into the room room_Game.
The instruction is: Create an object obj_Player, assign the sprite spr_Player to it. Place the obj_Player in the room and make it rotate slowly.
Hint -> image_angle and step event.
The instruction is: Create an alarm that loops every 30 steps. Once the alarm is triggered, update/set the direction to a new one depeding where the mouse is.
Hint -> use point_direction() between the x, y coordinates of the obj_Player and the mouse x,y coordinates and set it to direction.
The instruction is: Create an object food obj_Food, assign the sprite spr_Food and set in the create event the image_index to a random value.
Hint -> irandom_range(), or chose(0,1,2,...), image_number
The instruction is: Create an collision event in the obj_Player with obj_Food. In the collision event increase the image_xscale and image_yscale by 0.2 and the speed by 0.3 of the obj_Player.
The instruction is: In collision event in the obj_Player with obj_Food we want the obj_player to shapeshift into the thing we are bumping into. Set/change in the collision even the image_index of the obj_Player into the image_index of the food instance.
Hint -> use the other keyword to access the instances variables. other.image_index
The instruction is: Create an object obj_Spawner, assign a sprite to it. Create once in the create event 20 instances of the obj_Food somewhere in the room.
Multiple ways how to do this ->
Beginners: repeat(), and randomly assing x, y postions for the instance created
Advanced: for loop(), and randomly assing x, y postions for the instance created
The instruction is: Create and object obj_Enemy, assign the sprite spr_Enemy and create 10 instances of obj_Enemy also randomly in the room in the create event of obj_Spawner.
The instruction is: Assign an random image_index to the obj_Enemy.
What you have learned so far is a bit more advanced. Now you can spawn randomly around the room instances and you know how to make a small upgrade system.
Here you will find the resources needed to build this project (graphics). You will find a copyright document also, but all are CC0 to CC3 which means you can freely use them. You can check out the artists and if you used these graphics in a commerical game. In that caseplease credit them. You don't have to use the graphics provided and you can use your own. They are simply an additional service for you. The project mine/yours is under no "real" copyright, you can use and abuse it to your hearts content (CC0 by Iup Indie).
How to use:
I have seperated most projects like this.
1. introduction to the project (game designer role)
2. make the game design document (game designer role)
3. programm the game (programmer role)
4. bonus content (optional content)
The introduction video is simply a roleplay you can part take also if you wish to. The game design document video is the same but now an application how to setup the the game design document. Here at the 3rd video, which is programming, we swap the roles to the programmer and I give you instructions what to do step by step. Here you need to be active and we are building/preparing you for your adventure of game making. After that, there is a bonus video, which is optional. You can try to repeat and do the bit more advance content from the bonus video with me or simply see how we can squeeze out a bit more from the current project in question.
A sidenote: The programming videos are quite long, so here is how you can master them. You can play/pause the long one or use the "part ..." videos which are separated into smaller chunks. They are basicallly the same (dublicated content), but I wasn't sure which you prefer, so... I did both.
For you convenience, you will find the finished projects (normal + bonus) also, but I highly discourage you to instantly use them, because building piece by piece everything by yourself (with instructions from my side of course) is how the course is meant to be used. So cheating is possible but not a good idea.
Let's define the core of the game in the game design document.
The progamming part. Since this is a long video it is maybe good to pause frequently or if you like the "small" chunks approach you can have the same video but seperated below as part 1 .... part 2 etc. .
1. The instruction is: Create a new project, give it a name and delete all not used assets. Create 2 rooms, room_Start, room_Racetrack.
2. The instruction is: Import the graphics.
3. The instruction is: Assign both rooms the sprite spr_BackGround to the background layer and repeat the sprite vertically and horizontally.
4. The instruction is: Create once again a controller object obj_Controller in room_Start, make an alarm so after 2 seconds it will jump to the room_RaceTrack. And then create an asset layer and put in the logo sprite spr_Logo in room_Start.
5. The instruction is: Create two tilesets (asset) with the sprite spr_Racer_Tileset assigned. Set the tile width and tile height 25 by 25 and 100 by 100. And make them availabe by creating to tile layers in the room_RaceTrack plus assigning to those tile layers the new tilesets.
6. The instruction is: Create an object obj_Player, assign it the sprite spr_Player and place it into the room room_RaceTrack.
7. The instruction is: Create a camera system and assign the obj_player as target to follow. Adapt the scrolling speed plus border start scrolling values of the camera, enable it, make it visible (white rectangle). Then set the camera properties 400 width by 225 height and the viewport properties 1920 width by 1080 height. Aspect ratio used 16:9.
Or make your own values that fit your monitor.
8. The instruction is: Paint your race tracks with the tilesets given.
9. The instruction is: Set/change the image_angle so at the start of the game the obj_Player is facing upwards.
10. The instruction is: Create a step event for obj_Player, create there two temporal variables called left and right and set these to a value of a keyboard check pressed. Here you can use the virtual keyboard left and right vk_left, vk_right.
11. The instruction is: Create two if checks in the step event of the obj_Player if the variable left/right is being pressed.
Hint -> value is 1 for being pressed, 0 for not
12. The instruction is: Set/update the image_angle of the obj_Player in the checks (left/right) so that sprite will turn around.
13. The instruction is: Create a step event for obj_Player, create there two temporary variables called accelerate and breaking and set these to a value of a keyboard check pressed. Here you can use the virtual keyboard left and right vk_up, vk_down.
14. The instruction is: Create an object obj_FinishLine which has a variable in the create event called rounds. Create an draw event also and draw the sprite spr_Number there. As an index for sprite_draw() you use the rounds variable.
15. The instruction is: Try to the solve this problem. You need to pass through the half line with the player in order to make a full round.
16. The instruction is: In object obj_FinishLine make a if check in the step event. You check if the rounds are lower or equal to a value of 0. If that applies, jump into the next room.
Totally optional content. This is meant to show how you can do things like me when you are bit more comfortable with making video games. There is no right or wrong way so in essence you can advance this project to your heart's content.
The instruction is: Create a new project, give it a name and delete all not used assets. Create 2 rooms, room_Start, room_Racetrack.
The instruction is: Import the graphics.
The instruction is: Assign both rooms the sprite spr_BackGround to the background layer and repeat the sprite vertically and horizontally.
The instruction is: Create once again a controller object obj_Controller in room_Start, make an alarm so after 2 seconds it will jump to the room_RaceTrack. And then create an asset layer and put in the logo sprite spr_Logo in room_Start.
The instruction is: Create two tilesets (asset) with the sprite spr_Racer_Tileset assigned. Set the tile width and tile height 25 by 25 and 100 by 100. And make them availabe by creating to tile layers in the room_RaceTrack plus assigning to those tile layers the new tilesets.
The instruction is: Create an object obj_Player, assign it the sprite spr_Player and place it into the room room_RaceTrack.
The instruction is: Create a camera system and assign the obj_player as target to follow. Adapt the scrolling speed plus border start scrolling values of the camera, enable it, make it visible (white rectangle). Then set the camera properties 400 width by 225 height and the viewport properties 1920 width by 1080 height. Aspect ratio used 16:9.
Or make your own values that fit your monitor.
The instruction is: Paint your race tracks with the tilesets given.
The instruction is: Set/change the image_angle so at the start of the game the obj_Player is facing upwards.
The instruction is: Create a step event for obj_Player, create there two temporal variables called left and right and set these to a value of a keyboard check pressed. Here you can use the virtual keyboard left and right vk_left, vk_right.
The instruction is: Create two if checks in the step event of the obj_Player if the variable left/right is being pressed.
Hint -> value is 1 for being pressed, 0 for not
The instruction is: Set/update the image_angle of the obj_Player in the checks (left/right) so that sprite will turn around.
The instruction is: Create a step event for obj_Player, create there two temporary variables called accelerate and breaking and set these to a value of a keyboard check pressed. Here you can use the virtual keyboard left and right vk_up, vk_down.
The instruction is: Create an object obj_FinishLine which has a variable in the create event called rounds. Create an draw event also and draw the sprite spr_Number there. As an index for sprite_draw() you use the rounds variable.
The instruction is: Try to the solve this problem. You need to pass through the half line with the player in order to make a full round.
The instruction is: In object obj_FinishLine make a if check in the step event. You check if the rounds are lower or equal to a value of 0. If that applies, jump into the next room.
Here you have now finally mastered how to setup your own tileset and you know now how to use a force like motion_add and how to utalize friction.
Here you will find the resources needed to build this project (graphics). You will find a copyright document also, but all are CC0 to CC3 which means you can freely use them. You can check out the artists and if you used these graphics in a commerical game. In that caseplease credit them. You don't have to use the graphics provided and you can use your own. They are simply an additional service for you. The project mine/yours is under no "real" copyright, you can use and abuse it to your hearts content (CC0 by Iup Indie).
How to use:
I have seperated most projects like this.
1. introduction to the project (game designer role)
2. make the game design document (game designer role)
3. programm the game (programmer role)
4. bonus content (optional content)
The introduction video is simply a roleplay you can part take also if you wish to. The game design document video is the same but now an application how to setup the the game design document. Here at the 3rd video, which is programming, we swap the roles to the programmer and I give you instructions what to do step by step. Here you need to be active and we are building/preparing you for your adventure of game making. After that, there is a bonus video, which is optional. You can try to repeat and do the bit more advance content from the bonus video with me or simply see how we can squeeze out a bit more from the current project in question.
A sidenote: The programming videos are quite long, so here is how you can master them. You can play/pause the long one or use the "part ..." videos which are separated into smaller chunks. They are basicallly the same (dublicated content), but I wasn't sure which you prefer, so... I did both.
For you convenience, you will find the finished projects (normal + bonus) also, but I highly discourage you to instantly use them, because building piece by piece everything by yourself (with instructions from my side of course) is how the course is meant to be used. So cheating is possible but not a good idea.
Let's define the core of the game in the game design document.
The progamming part. Since this is a long video it is maybe good to pause frequently or if you like the "small" chunks approach you can have the same video but seperated below as part 1 .... part 2 etc. .
Well if you have come here, I assume you have finished all the projects. Wow, good job! Now you can call yourself and indie developer already. Welcome to the team.
Here you will find 2 bonus projects to explore.
Why is there no video?
Well, by now you should be able to go out and do your own thing. No need to handhold you, you can do it now by yourself!
Have a really good one and I hope you enjoyed this journey in becoming a indie developers (or more!)
1up Indie
Instruction/problem: Create a new project, import all the sprites. Make a big room (here 3000 by 3000 pixels). Use the tileset to make the cosmetic part, which is center area base and then all around to your liking.
Instruction/problem: Make the player follow the mouse and configure a camera system that follow the player and that can scroll.
Instruction/problem: The player can fire bullets if he holds the left mouse button. That bullet needs to fly in the direction where the mouse is and to avoid rapid fire you need to establish that you can only fire 2 bullets per second.
Instruction/problem: We want to have an upgrade system for the player. The upgrade is an object that by picking it up will destroy itself and upgrade the player damage and his speed. And we want to pass in the upgradeable damge being passed into the bullets upon creation.
Instruction/problem: To complement the survival apsect of the game we want to have tree instances, which can take 4 hits of the player. Upon reaching a value of 0 hits/hp, we want to destroy the tree instance and spawn between 1 up to 3 wood piece instances that will burst out in a random direction but halting very quickly to a full stop.
Instruction/problem: Make the bullets not fly for eternity aswell not picked up wood pieces shouldn't be around for too long, so we don't waste resources.
Instruction/problem: Create a hit effect object that is being created upon hitting a tree instance. Hit effects of course should disappear quite fast.
Instruction/problem: Make a spawner that spawns somewhere tree instances aswell as upgrades. Balance how many spawns are making sense here.
Instruction/problem: Make that the woodpieces can be picked up. This will increase a wood variable that can be later used for upgrading the turrents.
Instruction/problem: Now we need a spawner and spawns. The spawner is looping and each time you create a spawn. To make it a bit more interesting reduce each time a new spawn is being spawned the loop time. This must but restricted to not create too many spawn. The spawns need to go to a specific target, which sits in the middle. That target is the headquarter.
Instruction/problem: Quick fix if not done before the player depth and the spawners image_xscale issues.
Instruction/problem: We need to establish that the headquarters (hq) can only take 10 hits from the spawns. When reached the game will restart.
Instruction/problem: Now we need to establish the turrent. They are looping every 2 seconds. In the loop of every instance of the turrent it checks for the nearest enemy spawn aswell if there is an instance present at all and also checks if the nearest one is in a certain range.
So if the the nearest instance exists and it is in range the turrent creates a shot that flies toward this nearest instance.
Instruction/problem: The shot needs grab the turren's current damage value. Upon colliding with the spawn the shot substracts the passed in damage value from the spawn's hp pool and when the spawn has no hp left, we get rid of it. An hit effect upon collision is also occuring.
Instruction/problem: The turrents need to have a level system. By colliding with the player the turrent checks if the costs are lower then the collected wood pieces. If that is true, permanent change will be applied to this turrent. The costs will go up, the level will increase and the damage will increase. To represent it visually the turrent will have different sprites assigned depending on the current level of it.
Instruction/problem: Upgrade the player shots that they can hit the spawns also. Here the correct damage (upgraded) needs to be passed in also. Same rules apply here also for the player shot. -> destroy other instance when hp <= 0 plus create a hit effect.
Instruction/problem: There needs to be a second effect that displays the correct damage dealt in a damage number popop object. That popup goes upwards and displays the damage dealt in text. After a short duration it needs to disappear.
Well, you have done it! From here on you can make your own games! Congrats
This Udemy course is geared towards beginners and gives you all the informations needed to make good decisions when starting as an indie developer or even when joining the industry as a contractor or employee.
The course is split into 3 parts:
The gaming industry - how does it look like and what kind of role can you have in there.
GameMaker Studio 2.3 - Essentail guide how to use effectivly the programm and programming basics
Make six games - This part is where we together make small video games with GameMaker Studio 2. After these games you can call yourself an indie devloper because making games should feel at that point natural to you. The endgoal is that you see the whole process of making video games and what kind of role you think suits your needs the best.