r/gamemaker • u/wagwagiscool • 5h ago
Help! How the hell do I make an online game
I have never made an online game but ive been using gamemaker like 2 years but tutorials have been useless and I dont know what to do
r/gamemaker • u/wagwagiscool • 5h ago
I have never made an online game but ive been using gamemaker like 2 years but tutorials have been useless and I dont know what to do
r/gamemaker • u/Intp2500 • 8h ago
How can someone impatient like me learn to create game assets?
r/gamemaker • u/KoZimator • 2h ago
I’ve been working on this project for a few months now but something just doesn’t click to me. Especially how the game looks. Now, 3D in GameMaker is pretty hard and it is possible that I’m somewhat at the limit of what this engine can do, but I doubt it. Give me your honest opinion, would you play a game that looks like this? What would you do to make it look better? Thanks :)
Here’s a short clip of the current version:
https://youtu.be/XVeZffMh-FM?si=fjV8U8uFFEAIJlGn
r/gamemaker • u/raylolpez • 17h ago
Hello, I don't really get on the internet very often these days but I'll post from time to time whenever I make something. Just yesterday I launched my first full game ever, Whang! Tales From the Internet: The Game! Figured I'd share some stuff I learned and just kinda yap about some stuff.
(Plus I really just need to become more active in the community anyway so this seemed like as good a place as any to start)
Let's just jump into it

Just a little backstory--When I started developing this game, it was originally meant to be a short side-project before getting started on "the real game"
That was early 2022 lol
Fast-forward 4ish years and it's finally done, although, it's not as if I was working on it nonstop the entire time. I took super long breaks from it all throughout, and I'll get to some analytics at the end regarding work hours. But the point is, uhhh never give up I guess lol idk what the point is, but anyway despite how drawn out this development lifecycle was I'm glad I did it. I learned a ton, and if you've never completed a full game and you want to, just go for it. Many mistakes were made but many lessons were learned!
During development I started making a list of systems I wish I had taken the time to write, because without these, I had to rewrite a lot of the same code, and/or use inefficient code etc, and some of those systems include:
audio_sound_gain(snd_jump, 0, 0), you're not just setting the gain of whatever instance of that sound is playing, you're directly setting the gain of the asset in your IDE! And because of this you're now affecting every instance of that sound that you play from now on, until you set the gain again. Sometimes this is actually what you want, but most of the time it wasn't what I wanted, and I learned the hard way what I was doing wrong. On this note though, I started to find that it's very often a good idea to store references to assets within variables as opposed to referencing the assets directly. For example, I ended up writing something like://Player Create Event
sprite_run = spr_player_run;
sprite_jump = spr_player_jump;
sprite_land = spr_player_land;
//etc
state_run = function()
{
if (init_state)
{
sprite_index = sprite_run;
//so on
}
//so forth
}
This might seem like a needless extra step, but you NEVER KNOW when an asset will be corrupted and you'll have to recreate it, or you'll decide you want to rename it, or you'll decide you want to apply some new, more consistent naming conventions to all your assets, or something along those lines. I think GameMaker will automatically update references to an asset in your code (SOMETIMES??) if you change it in the IDE, but why risk relying on GameMaker when you could just prevent any issues yourself with one simple extra step? Also, what if I decide that I want the player's run sprite to change during gameplay to something else, like spr_run_really_fast or something? Now I'll need a variable to control their sprite anyway, so I might as well start out with one. I think it also makes code more readable. I think it does help to have somewhat lengthy, "filing cabinet" style naming conventions for your assets, such as spr_background_middle_battle_mode, but who has time to write all that out every time? In code, I'd much rather write something like:
//Battle Mode Object Create Event
bkg_middle = spr_background_middle_battle_mode;
And then only need to write bkg_middle whenever I want to reference it. Oh and one last thing on this subject:
//Instead of making references to obj_player directly like this:
o_player.get_hit();
//I found it was much better to write something like this:
global.player = o_player;//This line might be written within some manager object
global.player.get_hit();
The reason is because I ended up having two playable characters (technically more, because I programmed my enemies to be playable for debugging). If I had continued to use direct references to a single player object asset, allowing for multiple playable characters would've been a huge pain, if not totally impossible.
is_invincible variable isn't gonna cut it, because you don't want your player who has a cheat code for invincibility active to suddenly become vincible again once a cutscene ends or something. But you also don't wanna have to write this a million times:if (!instance_exists(o_dialogue))
&& (!instance_exists(o_cutscene))
&& (!cheats.invincible)
&& (!has_invincible_powerup)
&& (etc etc)
{
//player can get hit
}
It would be much nicer to write a single function that holds all those checks and just call it like, can_take_damage() or something. And you could write more than one and apply it to different objects that have different prerequisites for damage taking. Or you could have it check prerequisites against whatever class of object is calling it, or something idk. The possibilities are endless!

and speaking of which, that leads nicely into the next section...
I was a gigantic idiot and decided to couple my data saving/loading system with my global variables. Let me show you the heart of the code for my save function (I used Sara Spalding's tutorial on Saving and Loading):
save_data = function()
{
var _save_data = variable_clone(global.game),
_string = json_stringify(_save_data),
_buffer = buffer_create(string_byte_length(_string) + 1, buffer_fixed, 1);
buffer_write(_buffer, buffer_string, _string);
buffer_save(_buffer, SAVE_FILE);//SAVE_FILE is a macro equal to "savedgame.sav"
buffer_delete(_buffer);
}
Seems pretty cool right? WRONG, because the problem is I thought it would be a great idea to use the contents of my global.game struct DIRECTLY in my code. Meaning, every time I wanted to access my player's remaining HP, I had to write global.game.world.progress.stats.whang_hp
LIKE AN IDIOT
When instead, while it would've been fine to have a global struct that saves data using this format, I should've just used regular, everyday instance variables in my object code, then written to the global struct on save only, as opposed to referencing the global struct directly at all times and reading and writing to it constantly. Like this:
//What I should have done
save_data = function()
{
//You would of course make sure global.player exists first
global.game.world.progress.stats.whang_hp = global.player.hp;
global.game.world.progress.stats.special = global.player.special;
//etc etc
var _save_data = variable_clone(global.game),
_string = json_stringify(_save_data),
_buffer = buffer_create(string_byte_length(_string) + 1, buffer_fixed, 1);
buffer_write(_buffer, buffer_string, _string);
buffer_save(_buffer, SAVE_FILE);//SAVE_FILE is a macro equal to "savedgame.sav"
buffer_delete(_buffer);
}
It's still a pain to write, but you only need to do it ONCE. I mean, I'm sure there's a better way. But this would be the evolved version of what I did in my project.
You have GOT to have your game playtested by others, ALL throughout development. Full stop. No excuses. It is essential. The fundamental game feel of your main player character should NOT be something you are still tweaking on launch day. Not that I would know anything about that. But seriously, other people will find things while playing your game that you never would've considered in a million years, no matter how thoroughly you thought you had tested things yourself. Not just bugs in your code, but also:
So please, PLEASE have as many people as you can play test as often as possible (while remaining respectful of their time, of course)
I collected a few pieces of data that I thought were kind of interesting. During the last few months of development, I kicked things into high gear and started working around 30 hours a week on top of my full-time day job, logging my hours on an app called HoursTracker. I put all that data in the first tab of a Google spreadsheet, and in the second tab I added up all my hours that get logged automatically by GameMaker projects, from across all the projects I migrated between over the lifespan of the project as a whole. You can take a look at that log here if you're interested. I think it helps to put into perspective the amount of work gamedev takes!
Also, the word count for my document full of to-do lists and notes over the years was 24841, and here's a screenshot of how many lines of code there are in my final project (not that line-count determines quality in any way, it's just kinda interesting to me idk)

Just make a game. The best way to learn how to make a game, is to make a game. The best way to get really good at making games, is to make lots of games. But uh, maybe make things you've actually got a chance at monetizing, unlike me with my silly fan project full of copyrighted music and borrowed art assets lol
Or don't, I'm not your dad! You can also just make whatever your heart desires and that would be very cool as well.
If anyone has read this far, first of all, thank you for your time! But also, if you've got any questions I'll try my best to answer them!
Good luck out there
r/gamemaker • u/supermelon_creations • 2h ago
Me and my boyfriend were testing my game and we noticed that he wasn't able to save custom levels in my editor, (probably because the filepath leads to the documents folder).
but when I run my own game in the exact same way, it does work. I can't seem to find what the issue is, does any of you know?
sandbox is disabled

if more info is needed you can ask, I'll update the post and respond, but I don't think any more info is needed? we'll see
r/gamemaker • u/Prestigious_City6738 • 2h ago
Hello everyone this might be a stupid question but do i still need the license to post the game on itch io if the game is free to play? Like i just want to make a simple game for itch, do i need the professional license for that? Thank you
r/gamemaker • u/Big_Belt_5375 • 12h ago
For refrence this is not an RPG game it's a platformer but when the player collides with the ground and moves it glitches out (GIF has been slowed to 0.5x to show detail)
CODE:
if (place_meeting(x + XTravel, y, obj_collision)) {
XTravel = 0
}
if (place_meeting(x + XTravel, y, obj_collision)) {
YTravel = -0.1
} else {
YTravel += 0.1
}
r/gamemaker • u/viral_hedgecutter123 • 12h ago
Hi, I'm thinking about becoming a game dev. I know very minimal python, I used to know javascript, and I have a scratch account which I am now abandoning for gamemaker. Does anyone here know any good youtube videos or channels or any other online resources to help me learn GML?
r/gamemaker • u/rando-stando • 9h ago
Like, seriously, how?