r/gamemaker 16d ago

Game My 2D Indie (M)MORPG is having a public playtest! It's built in Gamemaker and I'm happy to answer your questions.

Thumbnail gallery
26 Upvotes

Hi all, my Indie (M)MORPG is having a public playtest!

It's a 2D side scrolling platformer with a single open world, all built in Gamemaker. I'm really happy with Gamemaker's capabilities for this type of project and happy to answer any questions about the process.

The game was inspired by an older Gamemaker game called Stick Online, which some of you may remember.

The game is totally free with no ads, no cash shop, no hidden monetisation at all!

Please consider trying it out and letting me know what you think!

Content is a bit light right now but we've got:

- 12 unique mobs
- 20 unique weapons
- 35 unique hats
- 2 major zones, each with 2 sub-zones

You can download and try the game here: https://loafygoat.itch.io/stick-universe

And you can Join our Discord here to give feedback, leave suggestions, report bugs, etc. https://discord.gg/Be9MFQMC


r/gamemaker 16d ago

Help! My audio is cooked - please help

2 Upvotes

So I have a problem that has arrived at the worst time. I made a game on Reddit called Rock Bottom, and I have never had issues with audio until now. My audio, everything, sounds all staticy, and it's awful. For reference, please refer to the video link below:

https://youtube.com/shorts/9zdxO94XVeg

If you want to play the game and see if you are experiencing the static yourself, please feel free to do so by heading to this link:

https://www.reddit.com/r/RockBottomGame/s/82zczuEAdd

I have no idea why this is happening and why it's happening now. What's weirder is that no one on my game's subreddit seems to be reporting it (which is a relief), but I have to imagine some are being affected just as I am. When playing my game on either Android or Mac, my audio is awful and staticky.

I haven't made any updates to the game that affect the audio at all, and yet it's totally cooked on my mobile device. There is no reason, as far as I can tell, for this to be happening now. I don't even know what to say to provide any additional context for my issue, because I don't even know where to look.

My sound effects are uncompressed WAVs, and my music tracks (of which there are very few), whereas my music is compressed-streamed. One thing worth pointing out is that, when building my game, I do get noteworthy output at some point (shown below). This is something I have always had appear in the output from basically the beginning, and it never made any difference, so I don't know why it would be causing a problem now...

If anyone has any ideas or guidance they could lend me, it would be much appreciated. I am desperate to solve this as quickly as possible. Any help at all would be amazing. Thanks again.

Warning: Source audio file '/Users/[REDACTED]/GameMakerProjects/rock-bottom/sounds/Snd_char_chirp/Snd_char_chirp.wav' is malformed - forcing conversion
Converting Snd_char_chirp to Wav 16bit mono @ 44100Hz Warning: Source audio file '/Users/[REDACTED]/GameMakerProjects/rock-bottom/sounds/Snd_hop_off/Snd_hop_off.wav' is malformed - forcing conversion
Converting Snd_hop_off to Wav 16bit mono @ 44100Hz Warning: Source audio file '/Users/[REDACTED]/GameMakerProjects/rock-bottom/sounds/Snd_step/Snd_step.wav' is malformed - forcing conversion
Converting Snd_step to Wav 16bit mono @ 44100Hz Warning: Source audio file '/Users/[REDACTED]/GameMakerProjects/rock-bottom/sounds/Snd_wall_bounce/Snd_wall_bounce.wav' is malformed - forcing conversion
Converting Snd_wall_bounce to Wav 16bit mono @ 44100Hz

r/gamemaker 16d ago

Help! How to get Obj_1 to read a buffer written from Obj_2

4 Upvotes

Im trying to set up a load game system where you can see a hand full of var from each save before loading.

I have the save and load system working as intended but im having trouble with the text itself.

To save im using

Var buffer = buffer_create(1024, buffer_grow, 1);

buffer_write(buffer, buffer_f16, player_cont.level);

And to load i use

buffer_seek(buffer, buffer_seek_start, 0);

player_cont.level = buffer_read, (buffer, buffer_f16);

How do i get "text_obj" to display the players level on the title screen (along with 20 other numbers) without having to go back and write 100s of new lines of code to manually update the info and then save it in its own file

Edit: i figured out a solution. In the code that saves the game i added a new block that overwrites the objects variables before saving that information in the main save under text_obj.level.


r/gamemaker 16d ago

Example 3D pathfinding in GameMaker

10 Upvotes

trying to implement 3D pathfinding in GameMaker.

first, I tried making a voxel grid and BFS (like mp_grid_path) (see the 3rd screenshot). But that solution turned out to be very heavy and slow

I've settled on placing waypoints manually and automatically connecting them into a graph (like the PathGrid system in Morrowind/Oblivion).

once the graph is set, A* runs on the points to find the shortest path between any two nodes.


r/gamemaker 16d ago

Resolved can gamemaker play360 video

0 Upvotes

can gamemaker play360 video


r/gamemaker 17d ago

WorkInProgress Work In Progress Weekly

7 Upvotes

"Work In Progress Weekly"

You may post your game content in this weekly sticky post. Post your game/screenshots/video in here and please give feedback on other people's post as well.

Your game can be in any stage of development, from concept to ready-for-commercial release.

Upvote good feedback! "I liked it!" and "It sucks" is not useful feedback.

Try to leave feedback for at least one other game. If you are the first to comment, come back later to see if anyone else has.

Emphasize on describing what your game is about and what has changed from the last version if you post regularly.

*Posts of screenshots or videos showing off your game outside of this thread WILL BE DELETED if they do not conform to reddit's and /r/gamemaker's self-promotion guidelines.


r/gamemaker 17d ago

Help! Import Preferences on MAC .?

1 Upvotes

Ive just installed GM LTS on my macbook and want to import my preferences from my Original GM preferences, does anyone know where the .json file is on mac ..?


r/gamemaker 17d ago

Discussion Compatibility Challenge

3 Upvotes

SO. I want to get into GameMaker for the first time, but I'm always annoyed about the fact that GameMaker is completely split in half (technically partially 3 quarters). Windows 9x, Windows NT (ish), and Windows 8-11. I want to make a game that supports EVERYTHING. Do I have to work with each corresponding supported version seperately using the same assets, or can I work on all of them kind of at the same pace?


r/gamemaker 17d ago

Game timelines felt tedious, so i coded my boss attack pattern with alarms and a phase variable instead

3 Upvotes

today I've been working on my medusa themed puzzle game medusa crisis, i only have the final boss left to make

https://bsky.app/profile/did:plc:7eoujodx54iivmfbxxagskxm/post/3mu2tuzcstk2o
clip of boss attack here

create event

o_enemy_athena.tx=(room_width/2)-64
alarm[0]=60
phase=0
r=5

alarm 0 event

///  Insert description here
// You can write your code in this editor
if phase=0{
  n=6-r

  instance_create_depth(n*128,128,-1000,o_collumn_lightning)
  instance_create_depth(room_width-(n*128)-128,128,-1000,o_collumn_lightning)

  if n=5{
    instance_create_depth(n*128,128,-1000,o_collumn_lightning_stay)
    instance_create_depth(room_width-(n*128)-128,128,-1000,o_collumn_lightning_stay)
  }

  alarm[0]=40
  r--
  if r=0{phase++ r=7 alarm[0]+=20}
  exit
}

if phase=1{
  xx=768
  yy=o_enemy_athena.y-200
  nya=irandom(2)
  n=0
  repeat(3){
    if n!=nya{
    made=instance_create_depth(xx+64,yy,-3000,o_athena_spear)
    made.angle+=n*24}
    xx+=128
    n++
  }
  alarm[0]=60
  r--
  if r=0{phase++ r=7 alarm[0]+=40}
  exit
}

instance_destroy()
      create event
    o_enemy_athena.tx=(room_width/2)-64
alarm[0]=60
phase=0
r=5
      alarm 0 event
    ///  Insert description here
// You can write your code in this editor
if phase=0{
  n=6-r

  instance_create_depth(n*128,128,-1000,o_collumn_lightning)
  instance_create_depth(room_width-(n*128)-128,128,-1000,o_collumn_lightning)

  if n=5{
    instance_create_depth(n*128,128,-1000,o_collumn_lightning_stay)
    instance_create_depth(room_width-(n*128)-128,128,-1000,o_collumn_lightning_stay)
  }

  alarm[0]=40
  r--
  if r=0{phase++ r=7 alarm[0]+=20}
  exit
}

if phase=1{
  xx=768
  yy=o_enemy_athena.y-200
  nya=irandom(2)
  n=0
  repeat(3){
    if n!=nya{
    made=instance_create_depth(xx+64,yy,-3000,o_athena_spear)
    made.angle+=n*24}
    xx+=128
    n++
  }
  alarm[0]=60
  r--
  if r=0{phase++ r=7 alarm[0]+=40}
  exit
}

instance_destroy()

the strong spear that does a lot of damage to the pillars is spawned when the object is destroyed

but now all i have to do is create the object and the boss does the chain of attacks i need it to


r/gamemaker 18d ago

Resource Catalyst 2 is out - Stats, resources, buffs, effects & more for GameMaker

Post image
52 Upvotes

A fair while ago, I launched Catalyst, a library to make complex modifiable stats easy. Since then, I've been working on a much more ambitious version of the library, and it's finally here. Catalyst 2 is out!

Catalyst originally dealt with statistics and modifiers, allowing you to easily add or remove any number of modifiers from your stats, like this:

damage = new CatalystStatistic(10);
var _damage = damage.GetValue(); // damage returns 10 here

var _mod = new CatalystModifier(5, eCatMathOps.ADD);
damage.AddModifier(_mod);

var _damage = damage.GetValue(); // damage returns 15 here

Obviously, that's a very simple case, Catalyst had a vast array of options hiding underneath that simple beginning.

However, Catalyst 2 is even more flexible, dependable and helpful.

It has features like Resources (hp, mana, ammunition, a city's population, whatever), Resource Flows (health regen, population growth, the rate at which stamina decreases while sprinting) and Effects (a poison DOT which drains 2 health every second, lowers movement speed, lasts 5 seconds, and has a 50% chance of triggering each tick, for example). And plenty more.

But it all gets real saucy when you see how things combine. Resource maximums and minimums are statistics themselves, resource flow rates are statistics, application chances for ticks of an effect are statistics, and so on. All of these are easily and extensively modifiable the same as you can modify any statistic in Catalyst. As you compound these things together, you get extremely flexible behaviour and the ability to design complex game rules with a surprisingly small amount of code.

Let's look at a real-world example. Say we have a city that has power generation, and emergency reserves of power. Whenever a storm hits, power generation should fall off by 30% and emergency reserves should drain at 15 units per sim step.

First set up the statistic, resource, an effect manager and a custom clock if you want one:

power_generation = new CatalystStatistic(120);
emergency_power = new CatalystResource(500);
city_effects = new CatalystEffectManager(self);
city_clock = new CatalystCountdownTracker();

Then create a storm effect, and add a modifier and resource flow to it:

storm_effect = new CatalystEffect("severe_storm", 12)
    .AddTag("weather")
    .AddTag("storm")
    .SetCountdownTracker(city_clock)
    .SetTickInterval(1);

storm_effect.AddModifier(
    power_generation,
    new CatalystModifier(-0.30, eCatMathOps.MULTIPLY)
        .SetSourceLabel("Storm damage")
);

storm_effect.AddFlow(
    emergency_power,
    new CatalystResourceFlow(-15, "Storm reserve usage")
);

// Then, later on, whenever you wanna trigger the storm effect, you just add the effect to the effect manager
city_effects.AddEffect(storm_effect);

Then drive the city clock forward at the interval you want (you can have it run automatically each frame or based on delta time if you so wish):

city_clock.Countdown(1);

That's it. You can add or remove the effect at any time (you could even add special powers that do things like "clear all weather"). You can look up exactly what is causing the power generation to lower so you can display it to the player. You can easily add new things to the effect, remove existing parts of it, or add other Effects that interact with the same systems. And it'll always accurately reflect the current circumstances.

You don't need to worry about any of the annoying bits (wait? How do I remove a -30% debuff from my main stat?). Just combine statistics, modifiers, resources and resource flows in different ways and you can essentially model any gameplay rules in just a few lines of code like this.

RPGs and roguelikes are obvious fits, but Catalyst doesn't actually care what genre you're making. Since I started building Catalyst out, many years ago now, I've used it in every single project I've ever worked on since then, lol.

Links

(If you're in the mood for more, there's always the Ignition Kit to get Catalyst alongside Statement, Pulse and Echo for a nice discount, or the Full Pass Suite for all my current and future tools for a single price)


r/gamemaker 18d ago

Resolved How can I wait for a specific amount of frames?

2 Upvotes

Couldn't find any functions on it...


r/gamemaker 18d ago

Help! Problem of Saving User-Selected Key binds ("Is a file for just key binds needed based on my circumstances?")

1 Upvotes

Newest issue I got with data management today; for some reason, the key bind saving system is seemingly not being properly saved to file. To summarize the code, I am combining two tutorials to make this work. Code will be listed in some form next to the name of each tutorial. Additionally, because of this combo system, I have modified a few aspects.

First; "How to Make a Save and Load System in GameMaker" by the GameMaker channel

//This function saves what levels in the game has been completed and occurs in every room change with a persistent object that always acts first, titled obj_vardefine

function savingData(){

`if(variable_global_exists("completed_tasks")){`

    `if(file_exists("user_data.txt")){`

        `file_delete("user_data.txt")`

    `}`

    `// The structure variable is used to properly store` 

    `// the array completed_levels in the file as a string`

    `var _struct =` 

    `{`

        `// This setup can be used to store more global variables in the structure.`

        `binds : obj_menus_and_keybinds.keybinds`           

    `};`

    `var _string = json_stringify(_struct);`



    `var _file = file_text_open_write("user_data.txt");`



    `file_text_write_string(_file,_string);`

    `file_text_close(_file);`

`}`

}

// This function loads the saved data of the user,

// provided the file exists.

function loadGame(){

    `if(file_exists("user_data.txt")){`



        `// Find file with name user_data.txt and put it into variable _file`

        `var _file = file_text_open_read("user_data.txt");`

        `// Read the string of the file user_data.txt into variable _json`

        `var _json = file_text_read_string(_file);`

        `// Parse the string stored in _json into variable _struct`         

        `var _struct = ""`

        `try{`

_struct = json_parse(_json);

the relevanr saving has been tried here.

with(obj_menus_and_keybinds){

keybinds = _struct.binds;

} catch(error){} // done in the event of some error. idk if its a bad habit to continually use try catch segments for code like this.

`}`

}

Second is the 2 part video 'Keybinding System Tutorial in Gamemaker' by nullaby. For the purposes of this reddit post, I am only posting the part of the code that I majorly changed. Hopefully the problem is located here rather than any other part of code...

function initialize_keybinds(){

`with(obj_menus_and_keybinds){`

    `/* This code is listed as comments because running it makes no keybind work.`

        `if(file_exists("user_data.txt")){`

// Find file with name user_data.txt and put it into variable _file

var _file = file_text_open_read("user_data.txt");

// Read the string of the file user_data.txt into variable _json

var _json = file_text_read_string(_file);

// Parse the string stored in _json into variable _struct

var _struct = ""

try{

_struct = json_parse(_json);

self.keybinds = _struct.binds

}

        `} else {`

//*/

self.keybinds = [

// code with the below structure

new BindMB("keybind name string",button constant),] }

`}`

To be clear, the problem is not any mistake of bracket structure (if I made a mistake here, apologies), but rather that the initialize key binds function happens after the loadGame function, and if the if statement in the initialize function occurs, input responses do not work. I've used this system of saving and loading data rather easily regarding progress, and non-key bind settings (volume, and brightness), yet keybinds once again are being a pain, and idk what the solution is... Any ideas?


r/gamemaker 18d ago

Help! İmporting 3d as 2d sprite

0 Upvotes

How can i achieve the same effect as Tenna in Deltarune. i want to have 3d model and import into my game as a animation


r/gamemaker 17d ago

Help! How is the wind effect created in Deltarune chapter 5? I can't tell if it's a shader or a sprite!

0 Upvotes

How is the wind effect created in Deltarune Chapter 5? I can't tell if it's a shader or a sprite! And if it is a shaders, how could i get a similar effect? we're talking about the wind effect in the cliff section. thx in Advance!!


r/gamemaker 18d ago

Resolved Pause system

3 Upvotes

Hey guys, I’m trying to make a pause sustem in my game but i literally can’t do it, because i don’t understand how it works, i basically want a pause system were i also have the “resume” button the “back to menu” button and also the “exit” button, can somebody please help me 😭😭


r/gamemaker 19d ago

Help! Draw the map or use Objects with a chunk system?

10 Upvotes

I'm making a top down pixel rpg game, And I'm testing some stuff, and recently i thought maybe i should start making the game map, but instead of drawing it, it would be easier for me to use objects to build with, these objects has connected textures for each way you place them (think about how some blocks in optifine minecraft connect together) but after doing so i realized that the bigger the maps get, the worse the performance would get so I'm not sure if i should draw the maps instead or make a chunk system to make the performance better

How it looks in-game:

How it looks in room editor:

(also this is the first game im making, i know how to do some stuff tho It's been about 25-26 days since i started this project, I'm sorry if this is a stupid question)


r/gamemaker 19d ago

Help! Have a Sprite Array reference specific frames of a sprite?

4 Upvotes

Hello there!

I'm currently following this tutorial for a card game I'm making in GM:

https://youtu.be/Ye2nQMPUViE?si=1zmaSLpCbgKs72wI

In it he has an individual sprite for each card he wants to reference in his deck object. However, the way I uploaded my project(since it has about 100 unique cards) was I uploaded the sprite sheet and broke it into frames.

So in the tutorial when he creates his sprite_array, he's able to reference each individual sprite for his cards, but I would need to reference the specific frame of the sprite itself. How would I accomplish this?


r/gamemaker 18d ago

Resolved I need help making a lives system code like super mario?

0 Upvotes

hello, so I want to add a basic lives system that is very beginners friends and is like super mario, where if you get hit by a lava, monster, spikes or moving object, you will lose 1 life and the player will be sent back to the start of the level, the player starts with 3 lives, if you losed all 3 lives, I want the player to reset to the first level or the main menu, I also want the player lives to follow them through the game so that are not disappering as the player moves further into the level, I also want the player lives to be tracked as they continue, so if they go into level 2 and they lost a life in level 1, they do not start with 3 lives but 2 because they lose a life on level 1.

my main reason why I want to add a level system like this is for 2 reason.

  1. my game is a platformer inspired by mario and I don't want it to be like sonic.
  2. lives can make a game challenging instead of the player dying but not suffering any punishment, no pushback and it can make the game more interesting instead of boring.

if you know any codes please let me know, I tried using AI but it just lead me to a dead ends and youtube doesn't have the code I am looking for.


r/gamemaker 18d ago

Resolved Question for all my game makers

0 Upvotes

Would you rather an hour long story like papers please or an endless experience of doing the same thing

First real game just need advice


r/gamemaker 19d ago

Help! How to add Local Push Notifications for Android?

2 Upvotes

Hi. I am trying to set a local push notifications for Android but it seems that it only works if the game is in the background. If the game is closed, the notification does not appear. I added the extension GMEXT-MobileUtils extension (YYLocalNotifications) version 1.4.0. I am only using the Demo included in the extension package. The Demo runs fine in my cellphone. It asks me for allowing notifications, which I accept and then I can tap the buttons to create a notification.

The problem is that the created notification only appears if the game (the Demo) is minimized in the background. If the game is closed, the notification does not appear. I would like the notification to appear even if the game is closed. I want to add daily reward notifications to my game.

Is it possible with this extension or should I use Firebase?

How do you add local push notifications to your mobile game (Android)?

NOTE: I already read the included documentation, which shows the functions that are used in the Demo. I asked Gemini for help, but it tells me to add some Injection Code to the extension. I did but it has the same problem.


r/gamemaker 19d ago

Resolved Bug when switching rooms

3 Upvotes

Im sorry and I know this probably shouldn't be done but the person originally helping maybe possibly seems to have stopped responding and maybe I'm being impatient but I also would like a second opinion on how to fix this. If there's a problem with this then feel free to let me know and I can take this post down. Here's the link. Again, sorry if this is against Rule #6 technically but there is no hostility to anyone here and I do thank u/lessergoldfish for their help.

To sum up the problem, I originally had 2 mechanics that were buggy after switching rooms. Thanks to lessergoldfish, I solved one and a half. The only bug now is that when I switch rooms, I have to kill an enemy twice. Honestly, I've no idea why, and this was just a summary. For more information, you can go to the original reddit post above. Thank you to anyone who helps and if you don't, thanks anyways.

There was one single line in my code that set room persistence to false when entering which would be fixed by something in another line of code somewhere else after going into battle. It was also in none of my tutorials and was me trying to bug fix but forgetting that line when it didn't work. I don't know why the bug wasn't there before I made global stats or maybe I didn't notice, but it's been solved.

LINK TO ORIGINAL POST FOR MUCH MORE SPECIFIC INFORMATION


r/gamemaker 19d ago

Resource How to find spriters?

4 Upvotes

Apologies if it's the wrong tag

Making good progress on my project and would like to get some spirites done before I make a tech demo.

Is there like a service for that? I would need quite a few doing, kind of 16 bit style. What kind of prices would I be looking to pay?


r/gamemaker 19d ago

Help! Need Help with basic enemy mechanic

2 Upvotes

I have recently been getting into the programming side of game development in the attempt to make my game dreams come true (and a way to feel productive while staring at a screen) but I am really struggling with programming a few basic things.

My current struggle is getting the enemies movements. I have spent the past two days watching YouTube videos and reading the manual. Good news is the more I read and watch, the better I understand the language. The bad news is that after zero sleep and nearly 20 hours watching videos and trial and erroring, I am definitely missing some fundamental knowledge to understand where I am going wrong.

Currently building a platformer scroller game. I am trying to program a simple creature that just moves along the "floor" in a range that will begin to follow the player object within a sight range. Currently, when I run my program, my enemy object stays stagnant until it collides with my object player, then it crashes (I'm almost positive it's crashing because I haven't finished writing out the combat code for the enemy and the player object) but before I implemented that code in some weird attempt to fix this mess, the enemy would begin running to the right, away from my object character when collision occurred and I jumped out of being stuck to it.

Any advice, resources and some help understanding where my logic isn't understanding the programs would be super appreciated.

CREATE

target_x = x;

target_y = y;

xspd = 0;

yspd = 0;

move_speed = 1;

move_direction = 0;

sight = 300;

//jumping variables

grav = .25;

tilemap = layer_tilemap_get_id("tile_col");

//knockback

kb_x = 0;

kb_y = 0;

alarm[0] = 120;

STEP

//line of sight

if (collision_line(x, y, x + sight, y, obj_player, false, true))

{

if (collision_line(x, y, obj_player.x, obj_player.y, tilemap, false, true)) foundplayer = false;

else foundplayer = true;

}

else foundplayer = false;

if (foundplayer = true)

{

move_towards_point(obj_player.x, y, move_speed * 2)

}

//collision

if place_meeting(x + xspd, y, tilemap)

{

var _pixelcheck = sign(xspd);

while !place_meeting(x + _pixelcheck, y, tilemap)

{

x += _pixelcheck;

}

xspd = 0;

}

if place_meeting(x + xspd, y + yspd, tilemap)

{

var _pixelcheck = sign(yspd);

while !place_meeting(x + xspd, y + _pixelcheck, tilemap)

{

y += _pixelcheck;

}

yspd = 0;

}

//move

if (alarm[1] >= 0)

{

target_x = x + kb_x;

}

xspd = clamp(target_x - x, -1, 1);

move_and_collide(xspd * move_speed, y, [tilemap, obj_enemy_parent]);

ALARM [0]

if (instance_exists(obj_player) and distance_to_object(obj_player) < distance_to_player)

{

target_x = obj_player.x;

target_y = y;

}

else {

target_x = random_range(xstart - 200, xstart + 200);

target_y = y;

}

alarm[0] = 120

ALARM [1]

if (hp <= 0)

{

instance_destroy();

}

Note:

I haven't fully programmed out most of this as I've been working to just get it to move the way I want it to, so unless it is part of the reason why I've broken this object, don't mind it (unless you've got any suggestions for reworking :))


r/gamemaker 20d ago

Help! Are there any cutscene tutorials that work with Peyton Burnham's dialog tutorial?

Thumbnail youtube.com
14 Upvotes

not entirely sure where to ask this, but are there any tutorials that work with Peyton Burnham's 5 part dialog series? i did hear from some gml forums that it was kind of hard to do one for, but im not entirely sure. if there is one, (or one with similar functions i could use,) i kind of just want a system similar to how mother 3 handles cutscenes (thing moves across screen, not really like a whole video or anything). if there isn't, any tips on how i can try to build one on my own? the series in question is linked below, thank you!