• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

Hot to allow Infinite Loops?

I

IndieCrypt

Guest
Hello,
as the title suggests I need to know how to allow infinite loops... Everytime I create a piece of code to create a dungeon it keeps popping up with an error:
Code:
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object Obj_Pillar:

PerformEvent recursion depth failure - check for infinite loops, check objects for parenting
at gml_Object_Obj_Pillar_CreateEvent_1 (line 8) -   instance_create(x + 50, y, Obj_Pillar);
############################################################################################
Is there a setting I need to disable!?
 
I

IndieCrypt

Guest
Hello,
as the title suggests I need to know how to allow infinite loops... Everytime I create a piece of code to create a dungeon it keeps popping up with an error:
Code:
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object Obj_Pillar:

PerformEvent recursion depth failure - check for infinite loops, check objects for parenting
at gml_Object_Obj_Pillar_CreateEvent_1 (line 8) -   instance_create(x + 50, y, Obj_Pillar);
############################################################################################
Is there a setting I need to disable!?
Note: I want it to loop forever until the randomly placed Finish tile is down...
 
P

Paolo Mazzon

Guest
Code:
while (!instance_exists(ObjFinishTile)) {
    // stuff
}
 
I

icuurd12b42

Guest
you create a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar
 
I

IndieCrypt

Guest
you create a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar, it creates a pillar
That is what it should do but it stops with an error saying I have to check for infinite loops...
 
If you want to create the objects at different coordinates you could use x_add like I do, but it might not be what you need, remove from the code if so. When you get to the finishing tile set the variable like so within the while loop.

finished_tile_placed=true

It will stop the while loop then. Here's the code below. Don't put it in a Step Event it should only run once, as it already loops in 1 frame.

x_add=0

while (finished_tile_placed==false)
{
instance_create(x +x_add, y, Obj_Pillar)
x_add+=50
}

finished_tile_placed should equal false first so the while can run, but you have to set it to true inside the while when you get the conditions you want, so it doesn't freeze. I don't know the conditions you check for about which tile is last, so I can't add that to the while.
 
Last edited:

TsukaYuriko

☄️
Forum Staff
Moderator
You are hitting the recursion depth limit. This is a hard limit that can not be disabled.

This error message can be triggered in a variety of situations... some examples include a function calling a function via script_execute which then calls a function via script_execute which then calls a function (...) and creating an instance which creates an instance in its Create event which creates an instance in its Create event which creates an instance (...). The latter seems to be the case here.

You will have to find a different approach, e.g. an iterative one rather than a recursive one.
 
I

IndieCrypt

Guest
Thank you to everyone who helped me out I have simply created a while loop... So:
Code:
while(!instance_exists(Obj_Finish)) {
  instance_create(...)
}
 
I

icuurd12b42

Guest
That is what it should do but it stops with an error saying I have to check for infinite loops...
I think they dumbed down the error text to the point it's not correct.

you created an infinite recursion (not a loop) and no computer in the universe can hold an infinite number of anything...
 

TheouAegis

Member
So when does your code create the instance that will allow it to stop creating instances? What the f*** are you even trying to do with that code shy of trying to create malware?

"a piece of code to create a dungeon"

That's not how you create a random dungeon. It never has been and never will be.
 
I

IndieCrypt

Guest
So when does your code create the instance that will allow it to stop creating instances? What the f*** are you even trying to do with that code shy of trying to create malware?

"a piece of code to create a dungeon"

That's not how you create a random dungeon. It never has been and never will be.
The code creates the stop instance when it reaches a specific point on the x_scale... And by dungeon I simply meant a room that extends to the right which contains random traps, etc...
 
D

DevNorway

Guest
That's not an infite loop, but a standard loop. Sure you can standard loop keep going, but an infite loop will crash GM.
 
I'm currently having the same problem but im trying to make erm i dont know how to explain it. Mainly messing around with GML as i do but i have 4 markers in the room that are placed and each one creates 4 more around it if there is space and then they do the same until it hits the edge of the room and stops all in the create event. Atleast that is what i wanted it to do. However Game maker is telling me i can't do that even though i know for a fact it's not infinite it's telling me it's infinite. I wish they would add a setting where you can tell it a max number of times a loop can be called set to default i dont know 100. Once it reaches the limit game maker will give you an error. As it is now though i can't do half the things i want to because of that infinite loop error i have tried alot of things before all giving me that error even though i know full well it wont be infinite because i have told the script to end at some point. It may take time but it will end and i dont mind the game freezing for 5 seconds while it does it's thing. I think it's a limitation that should be atleast looked at to find a better solution than just saying no loop can call itself.
 

TheouAegis

Member
Again, you do not need recursion, you need an iterative loop. The error is an annoying one, but it's far less annoying than trying to debug stack overflows. Change your code so it runs over multiple steps rather than in a Create event and you won't get that error.
 
Top