Uploaded May 2026 | Updated September 2026, 8 hours ago
This video tutorial covers the concept of how to create a metroidvana map in GameMaker. Every good sidescroller/metroidvania has it and now I can offer a simple, scaleable and performative version to you without tanking your performance.
The idea is quite simple, you need two things: Data and an instance displaying that data
first a data structure that holds all your maps information which hold each cells internal values like x,y position, color, if discovered, room id and each walls index (none, simple wall, connector).
Second you need an instance that get the correct center postion and in used event draws 1:1 each cells on a surface with the size of rows/columns of the data structure. That drawing is being stored in the vram as a sprite and once not needed destroyed afterwards. This is how the map becomes very fast and performative since you only have one draw event.
The following parts will be adding extra features like start location, visited/not explored cells aswell as map movement and zooming.
You can find the project file in my discord server under this section:
free-stuff_gamemaker or the first pinned comment by me
👑 Support me and get fresh game art and game maker projects every month:
patreon.com/1upindie
Follow me on:
📸 Instangram: instagram.com/1upindie
🐦 Twitter: twitter.com/1upIndie
💬 Discord: discord.gg/gvr98nb
📜 Udemy: udemy.com/course/become-a-video-game-developer-with-gms-23 (See youtube about page for discount)
0:00 What we will build in 2 parts
2:13 Subscribe
2:29 Need two objects, one holding all data and one using that data to draw the map
3:31 Creating the data structure via constructor with how many columns and rows we need
4:40 Store each new map into an array (here array_Map) or a single variable depending how many maps you want
5:46 Store how many columns and rows this map has
5:58 Create all possible cells and their internal values via a double loop, these are defined as empty and to be overritten by active cells
7:01 Create cell value for x,y postion on the map grid
7:20 Create cell value for color, which defines if this is an active or empty cell
7:50 Create cell value for room to jump to and if discovered
8:56 Create a function overitting a specific cell to turn to active
12:10 Making active map cells with the setup_MapValues function
13:31 part 2, having a user event draw all the stored map values (empty or active) and creating one big sprite from that via sprite_create_from_surface
14:25 Get center x,y, positions of the window or display based on fullscreen mode
15:50 Grab the stored map array and it's internal values, for now the rows and columns
18:15 Create a surface width and height based on the colums/rows times the size of one cell (here 32px), then create a surface with these values, draw all cells, store it into variable to hold the newly create sprite and clear it afterwards
18:02 Define the a center x,y fixpoint where the map sprite has to be drawn based on the window/display center minus the sprites width/heigtht divided by half multiplied by the zoom factor
18:53 get through double loop all cells, get their map grid x,y values times 32 to draw each cell correctly
19:28 Get each cells color, discovered value
20:03 If this cell has a color assigned, it is active and draw a colored rectangle plus the walls with their sprite indexes
21:15 If the cell has no color assigned, draw the default empty sprite
22:05 Always get rid of the sprite created in the destroy event later on to avoid memory leaks
This video tutorial covers the concept of how to create a metroidvana map in GameMaker. Every good sidescroller/metroidvania has it and now I can offer a simple, scaleable and performative version to you without tanking your performance.
The idea is quite simple, you need two things: Data and an instance displaying that data
first a data structure that holds all your maps information which hold each cells internal values like x,y position, color, if discovered, room id and each walls index (none, simple wall, connector).
Second you need an instance that get the correct center postion and in used event draws 1:1 each cells on a surface with the size of rows/columns of the data structure. That drawing is being stored in the vram as a sprite and once not needed destroyed afterwards. This is how the map becomes very fast and performative since you only have one draw event.
The following parts will be adding extra features like start location, visited/not explored cells aswell as map movement and zooming.
You can find the project file in my discord server under this section:
free-stuff_gamemaker or the first pinned comment by me
👑 Support me and get fresh game art and game maker projects every month:
patreon.com/1upindie
Follow me on:
📸 Instangram: instagram.com/1upindie
🐦 Twitter: twitter.com/1upIndie
💬 Discord: discord.gg/gvr98nb
📜 Udemy: udemy.com/course/become-a-video-game-developer-with-gms-23 (See youtube about page for discount)
0:00 What we will build in 2 parts
2:13 Subscribe
2:29 Need two objects, one holding all data and one using that data to draw the map
3:31 Creating the data structure via constructor with how many columns and rows we need
4:40 Store each new map into an array (here array_Map) or a single variable depending how many maps you want
5:46 Store how many columns and rows this map has
5:58 Create all possible cells and their internal values via a double loop, these are defined as empty and to be overritten by active cells
7:01 Create cell value for x,y postion on the map grid
7:20 Create cell value for color, which defines if this is an active or empty cell
7:50 Create cell value for room to jump to and if discovered
8:56 Create a function overitting a specific cell to turn to active
12:10 Making active map cells with the setup_MapValues function
13:31 part 2, having a user event draw all the stored map values (empty or active) and creating one big sprite from that via sprite_create_from_surface
14:25 Get center x,y, positions of the window or display based on fullscreen mode
15:50 Grab the stored map array and it's internal values, for now the rows and columns
18:15 Create a surface width and height based on the colums/rows times the size of one cell (here 32px), then create a surface with these values, draw all cells, store it into variable to hold the newly create sprite and clear it afterwards
18:02 Define the a center x,y fixpoint where the map sprite has to be drawn based on the window/display center minus the sprites width/heigtht divided by half multiplied by the zoom factor
18:53 get through double loop all cells, get their map grid x,y values times 32 to draw each cell correctly
19:28 Get each cells color, discovered value
20:03 If this cell has a color assigned, it is active and draw a colored rectangle plus the walls with their sprite indexes
21:15 If the cell has no color assigned, draw the default empty sprite
22:05 Always get rid of the sprite created in the destroy event later on to avoid memory leaks
![Update V2022.11 - Functional content [GameMaker]
The newest patch V2022.11 comes with some good quality updates for strings and arrays plus new sound filters and some new vfx filters.
This update is more a technical one, where we get new ways to use strings and arrays with new functionality. The idea is to insert your own functions into GameMakers new array functions/scripts for sorting or manipulating values. There are also more new ways to change/manipulate strings also, which is now more efficient to chain/concatenate. The new sounds effects are for me a new field, so I leave that to more experienced users. Binary literals are in a nutshell other ways to write, which will be most like only used to write long numbers visually easier. And last but not least we got new filters to play around with. These appear to be more niche, but time will tell what the community does with them.
Tldr:
- array and string functions make a programmers life more easy
- new niche filters
- new sound filter system
// more detailed infos on binary literals, array and string function in DragonSpams channel:
https://www.youtube.com/watch?v=ySy-oX4B054
https://www.youtube.com/watch?v=xhDKj87g6p8
Offical blog and release notes:
https://gms.yoyogames.com/ReleaseNotes.html
https://gamemaker.io/de/blog/release-2022-11
👑 Support me and get fresh game art and game maker projects every month:
https://www.patreon.com/1upindie
Follow me on:
📸 Instangram: https://www.instagram.com/1upindie
🐦 Twitter: https://twitter.com/1upIndie
💬 Discord: https://discord.gg/gvr98nb
📜 Udemy: https://www.udemy.com/course/become-a-video-game-developer-with-gms-23/ (See youtube about page for discount)
CHAPTERS
0:00 What the new update is all about
01:05 If your 2022.08 doesnt work on updating, reinstall
01:40 New filter - Blocks Background
02:27 New filter - Hue
03:05 New filter - Ripples
03:40 New filter - Panorama
04:30 New filter - Parallax Background
05:20 New filter - Film Grain
05:50 Binary literals - write long numbers easier to read
06:25 New string functionality
07:40 New array functionality
09:13 New Audio effects system
10:35 Game shown: Doors Arums Afterlife Adventure Update V2022.11 - Functional content [GameMaker]](https://i.ytimg.com/vi/V2PsSz2Q5aY/mqdefault.jpg)
![Update V2022.6 - New fx + project feather [GameMaker Studio 2]
The newest patch V2022.6 comes with some good quality updates, new fx effects and the big fish, the feather feature.
The update looks lightweight on the outside, but feather is a great new feature for us coders/developers to help out in code, show instantly informations about code/assets, can correct code and can be customized even further (name spaces, etc.). All in all, a solid addition to the ide which is much apprecitated.
Offical blog and release notes:
https://gamemaker.io/de/blog/gamemaker-2022-6-release
https://gms.yoyogames.com/ReleaseNotes.html
👑 Support me and get fresh game art and game maker projects every month:
https://www.patreon.com/1upindie
Follow me on:
📸 Instangram: https://www.instagram.com/1upindie
🐦 Twitter: https://twitter.com/1upIndie
💬 Discord: https://discord.gg/gvr98nb
📜 Udemy: https://www.udemy.com/course/become-a-video-game-developer-with-gms-23/ (See youtube about page for discount) Update V2022.6 - New fx + project feather [GameMaker Studio 2]](https://i.ytimg.com/vi/VHfnIyWfKQE/mqdefault.jpg)
![Direction/vector movement under the hood [Game Maker | Basics]
This basics video tutorial shows you what direction and speed are actually when you see in under the hood in GameMaker.
A very convenient and fast way is to use for beginner the internal speed and direction value. Once set, the instance moves by itself and you have no complicated system that it actually is. Here we take a peek inside GameMaker and see how vectors define every video game engines movement from behind the scenes. All this is mathematics but neatly packed in speed and direction for us developers. Thats it!
A more in depth video can be found here:
https://www.youtube.com/watch?v=MO4A_LT7KFk&t=168s&ab_channel=MantaGames
👑 Support me and get fresh game art and game maker projects every month:
https://www.patreon.com/1upindie
Follow me on:
📸 Instangram: https://www.instagram.com/1upindie
🐦 Twitter: https://twitter.com/1upIndie
💬 Discord: https://discord.gg/gvr98nb
📜 Udemy: https://www.udemy.com/course/become-a-video-game-developer-with-gms-23/ (See youtube about page for discount) Direction/vector movement under the hood [Game Maker | Basics]](https://i.ytimg.com/vi/VPqXb5iA_Bs/mqdefault.jpg)
![Firebat and Breakoid (dark souls difficulty) [Made in GameMaker]
Breakout was a game that was basic but fun to play. It is listed as a video game but technically you would need a pc with a cpu to run software on to call that a video game made in 1976 by Steve Wozniak.
Here we have 2 modern versions of this classic game made in GameMaker Studio made for a game jam.
tldr: Play and enjoy those free to play classic
Games found here:
https://ced30.itch.io/breakoid-gamejam
https://ltcoyote.itch.io/firebat Firebat and Breakoid (dark souls difficulty) [Made in GameMaker]](https://i.ytimg.com/vi/VbK9J92G3JE/mqdefault.jpg)
![Binding of Isaac/rogue like map #1 [Game Maker Studio 2 | Epic]
This epic video tutorial shows you a working example how to create a procedual level map generation on the fly in GameMaker.
This video is only a preview (video incoming) of the coding part to show what can be done in GameMaker or any other ide. Since this is a very advanced topic you need to have a good understanding of basics and advanced concepts. So arrays, loops, accessor are a common thing for you. The following video will be going into the coding part.
How it works:
The idea is in principle quite easy. You have at start a cell of your map that has 4 branches in each direction. These branches are being created by checking first if the new neigbour cell is free. Then it needs to assing a sprite to which has two exits/openings (one openeing connecting to the current location and one 2 steps ahead). To determin if this sprite can be set for the new cell you need to check another step ahead if on the openening (so two steps ahead) if this spot is also free. If not this cell is an endpoint of this branch.
The second part is the transition of of the map into level structure with a player and enemies. This is shown in the video but will be not part of the upcoming video (because I dont want to make this already long and complex video even longer). Patreon supportes will have the project file of course with the top down merger available.
👑 Support me and get fresh game art and game maker projects every month:
https://www.patreon.com/1upindie
Follow me on:
📸 Instangram: https://www.instagram.com/1upindie
🐦 Twitter: https://twitter.com/1upIndie
💬 Discord: https://discord.gg/gvr98nb
📜 Udemy: https://www.udemy.com/course/become-a-video-game-developer-with-gms-23/ (See youtube about page for discount)
CHAPTERS
0:00 Show off the procedual map
1:00 Subscribe
0:52 How it works
2:10 How it transition into gameplay Binding of Isaac/rogue like map #1 [Game Maker Studio 2 | Epic]](https://i.ytimg.com/vi/WBXLGX20PZo/mqdefault.jpg)
![Your vote counts - Decide on the next series [1up Indie Yt]
This video is giving you a glimpse on what potentially the next series could be on my small youtube channel. And you have the power to choose where this youtube channel goes. So take it easy... but take it!
There are 3 categories to vote on, which are:
#1 - a series on game design, which is a non coding series
#2 - a series on remaking a beloved
#3 - a series on advanced gms concepts (heavy math + coding)
Use the poll in the community tab to make your voice count
Please participate and be part of new upcoming content, because your count matter here.
if you have any idea what you would like to see or specific wishes in one of the 3 categories (for example, you want a zelda 3 remake or a series on shaders) give your feedback in the comment section below. This vote will be for the next 5 days to be followed by your wishes in the chosen category.
// friendly cosmonauts dialog system:
https://friendlycosmonaut.itch.io/dialoguesystem
👑 Support me and get fresh game art and game maker projects every month:
https://www.patreon.com/1upindie
Follow me on:
📸 Instangram: https://www.instagram.com/1upindie
🐦 Twitter: https://twitter.com/1upIndie
💬 Discord: https://discord.gg/gvr98nb
📜 Udemy: https://www.udemy.com/course/become-a-video-game-developer-with-gms-23/ (See youtube about page for discount)
0:00 Your vote matters!
0:35 Choose your destiny
1:29 Category 1 - Game design
2:48 Category 2 - Remaking a video game in Gamemaker
5:05 Category 3 - Advanced gms progamming concepts Your vote counts - Decide on the next series [1up Indie Yt]](https://i.ytimg.com/vi/WQ4pQiebka8/mqdefault.jpg)
![Grenade thrower [Game Maker Studio 2 | Enemy Ai]
This enemy ai video tutorial shows you how to make an enemy that throws in an parabollic arc grenades in GameMaker Studio.
The idea is quite simple. You need to setup the grenades with a direction upwards plus set some speed. To create the arc movement you need a secondary force downwards which is gravtiy. You can optinally make the grenades bounce by setting the a wall collision with move_bounce_solid and give the grenade a bit of friction to reduce its overall speed values, so that the bounce looks realistic. Thats it!
👑 Support me and get fresh game art and game maker projects every month:
https://www.patreon.com/1upindie
Follow me on:
📸 Instangram: https://www.instagram.com/1upindie
🐦 Twitter: https://twitter.com/1upIndie
💬 Discord: https://discord.gg/gvr98nb
📜 Udemy: https://www.udemy.com/course/become-a-video-game-developer-with-gms-23/ (See youtube about page for discount)
Previous video here:
https://www.youtube.com/watch?v=hTPHzHM2KQ0
Emcee Flesher CC4by
https://opengameart.org/content/super-dead-space-gunner-merc-redux-platform-shmup-hero
https://opengameart.org/content/space-war-man-new-laser-and-enemies
0:00 What we will do
0:34 Subscribe
0:46 Quick setup for the grenade thrower
3:04 Setting up the grenade
6:52 Optional - Make the grenades bounce
10:03 Game shown - Blade Assault Grenade thrower [Game Maker Studio 2 | Enemy Ai]](https://i.ytimg.com/vi/Wdaa_J9rwiM/mqdefault.jpg)
![Need splash screen artist + new features [Super Demon Survivors devlog #7]
Super Demon Survivors is a homage to time survival reverse bullet hells, set in a familiar world pitting multiple characters against hordes of demons and monsters in a multistage free for all.
Can you outlast wave after wave of increasingly difficult, minimalistic gameplay using an array different weapons and power ups?
Where you like the genre or you want to be part of the active community, you will have direct influence on how the game will be done via comments below or directly with me and my community on my discord server.
The game is made by me and Gutpunch studios to create a game that is in the spirit of the good old games but with modern standards.
https://gutpunchstudios.com
// content of this video:
1. We are in need of 1 splash screen artists. So if you are professional enough and feel you can do this, please contact me on my discord channel, so we can see if we can work together.
2. The game has been given the green light on Steam, so we can start making the page and upload our game there. Here you my dear community come in. Help your fellow devloper 1up Indie out and wish list (no need to buy it though) the game once I give send a message through my channel.
3. I want to personally thank my playtesters! You guys gave me good idea and valuable feedback that made it in the current version of Super Demon Survivors. For that, once again a big thank you!
4. We go tons of new systems and advanced the current ones. So there will be more optional content to discover and the new rune system will give you a equippable permanent upgrade to your champions.
👑 Support me and get fresh game art and game maker projects every month:
https://www.patreon.com/1upindie
Follow me on:
📸 Instangram: https://www.instagram.com/1upindie
🐦 Twitter: https://twitter.com/1upIndie
💬 Discord: https://discord.gg/gvr98nb
📜 Udemy: https://www.udemy.com/course/become-a-video-game-developer-with-gms-23/ (See youtube about page for discount) Need splash screen artist + new features [Super Demon Survivors devlog #7]](https://i.ytimg.com/vi/WnLMQr6Rwfs/mqdefault.jpg)
![Constructor - The king of data [GameMaker | Advanced]
This advanced video tutorial shows you how to use efficient data with constructors in GameMaker.
Image you have an inventory with hundreds of entries and each entry has values like name, costs, icon image etc. . Creating for each entry one variable per value even with arrays is not an good way to handle that task. So what I think is one efficient way is to create structs via constructor and store each entry into one array. By that you have only one index that defines which item you want values from. Thats it!
Tldr: Yes
Video on structs:
https://youtu.be/k874pndLJEs
// slime from the thumbnail:
https://ggoolmool.itch.io/slime
👑 Support me and get fresh game art and game maker projects every month:
https://www.patreon.com/1upindie
Follow me on:
📸 Instangram: https://www.instagram.com/1upindie
🐦 Twitter: https://twitter.com/1upIndie
💬 Discord: https://discord.gg/gvr98nb
📜 Udemy: https://www.udemy.com/course/become-a-video-game-developer-with-gms-23/ (See youtube about page for discount)
0:00 What we will do
1:22 Subscribe
1:34 Old school way of storing items/data with single variables
2:38 Using arrays to store
3:23 Using structs to store
6:29 Using constructors - Setup
7:00 Store each new entry/struct into an array
8:12 Adding variables to the constructor
10:00 How to grab entries/items
12:58 Modulary advance the constructor with a function Constructor - The king of data [GameMaker | Advanced]](https://i.ytimg.com/vi/WpXfj5hpZeI/mqdefault.jpg)
![Roadmap and starter project file [#0 Remake Undertale in GameMaker ]
This is the 2nd video (But since it is only a preview and roadmap I started at 0) in a short series of remaking the battle system which you see in Undertale in GameMaker.
What is Undertale?
Undertale is a video game made also in GameMaker by Toby Fox where
you play as a child that is being trapped in an unknown world and your job in this linear story is to progress. The difference is that you can genocide monsters, be neutral or even befriend them. This throws the concept of enemies being simply neutral farm on its head.
// Part 0
This time I only discuss that you can download a premade starter project file containing all necessary images that are being used in this series and a basic overworld movement system so that we can start with something (also dont see the point of making a top down movement system because that is not the focus of this remake series, so it is there by default).
🚧 For the future: This series is under construction. There will is a free downloadable project file for everybody, so you can grab and do whatever you like to do with it (you can credit me, but not necessary). Also, this video series will be handled like my Hotline Miami series. If the views drop off a cliff (that I do see happening) it will be then discontinued.
Template project file found here:
https://discord.com/channels/582918792145928202/1205513075273502740
👑 Support me and get fresh game art and game maker projects every month:
https://www.patreon.com/1upindie
Follow me on:
📸 Instangram: https://www.instagram.com/1upindie
🐦 Twitter: https://twitter.com/1upIndie
💬 Discord: https://discord.gg/gvr98nb
📜 Udemy: https://www.udemy.com/course/become-a-video-game-developer-with-gms-23/ (See youtube about page for discount) Roadmap and starter project file [#0 Remake Undertale in GameMaker ]](https://i.ytimg.com/vi/Wz625xrRQMQ/mqdefault.jpg)
![Castlevania style inventory [Game Maker | B tour]
This video shows you a Castlevania Sotn inventory GameMaker project file. That you can download and use for free.
Thats it!
👑 Support me and get fresh game art and game maker projects every month:
https://www.patreon.com/1upindie
Follow me on:
📸 Instangram: https://www.instagram.com/1upindie
🐦 Twitter: https://twitter.com/1upIndie
💬 Discord: https://discord.gg/gvr98nb
📜 Udemy: https://www.udemy.com/course/become-a-video-game-developer-with-gms-23/ (See youtube about page for discount)
CHAPTERS
0:00 Time action plan
0:16 Where is Brazil?
0:34 Advanced coding routine Castlevania style inventory [Game Maker | B tour]](https://i.ytimg.com/vi/X8WsiE-dk7o/mqdefault.jpg)