Ok so now I want to increase the speed of the plane every one minute and this is what I did. I made another object called object_controller_plane and did the following:
array = 2;
array = 4;
array = 6;
array = 8;
planespeed = 3600;
challenge = 0;
if(planespeed == 0)
planespeed = 3600;
if(challenge < 3)
Then I placed the object in the room. But it shows the error on the line if planespeed == 0. I find it odd because that's the same coding i did for the controller_bullet and yet it doesn't show an error there.
If you are setting the counter to 6, then it is going to be upgrading the difficulty really quick, as 6 steps happens in a tenth of a second at 60 room speed. You need to multiply by 3600 to get to minutes. So for 1 minute, you need to set the counter to 3600 steps.
I did put counter to 3600 steps as you said and again, it still doesn't change that speed no matter how long I wait. I mean, even after waiting for a minute, it still has that same speed.
All you need to do is change the counter amounts. Right now the code(in the pictures) has it going to 360. If you have the room speed at the default of 30, it will change in 12 seconds. If you have it set to 60(which I like better, as it is much smoother), it is only 6 seconds.
There is a built-in variable for the room speed. You can use it. So if you want 10 seconds worth of steps, multiply 10 by the room speed variable. If you want 1 minute, multiply 60 twice(preferably in the same line). This way, if you change the room speed later, you don't have to come back and change this code at all. It is a lesson you should learn, basing calculations on constants and variables so that if you have to make a change, it is only in the one place. For example, that array for the bullet speed. If you want to change it, you only change it there, and any other thing that needs it can access it. That is a lot of the point of controller objects.
Side Note: I'm going to be getting back into GMStudio I'm thinking. I DO like Unity and 3d for projects, but I'm finding out that things take longer to get done, including coding(not just the graphics). One limitation of GMStudio that I didn't like was how with GML code, you declare variables in the create event, but then have to remember exactly how you named them when you use them in other events. You don't have that problem in Unity as the script events are all on the same page, and you have intellisense for your own variables too. GMStudio does intellisense, but only for built-in stuff, and resource names, and constants, but not for declared variables. The 3rd party Parakeet IDE changes that, and a lot more. I'm doing the 7 day trial of it and would likely buy it and use it. It fixes my one biggest complaint with GML. If you are interested in what I'm doing, I'll share.
I tried doing it but it still doesn't work as how I intend it to work. I changed the room speed to 60 and changed the counter to 6 but it still won't change the speed from slow to fast as the speed of the bullet falling is the same throughout.
I think I need to show you exactly what I want. Like this game for example.
at first Bluto ( dressed in purple) walks slowly, but then as the player keeps making progress, he walks faster. I don't want other obstacles, I just want that steady speed like that. Which so far from what we have done here, it still remains at the same speed even when changing the value of the room speed as well as the value of the counter.
Bam! I think I've got it. Your code is increasing the difficulty 1 too many steps. You set the array  through , but in the code, you are trying to access . You have the if(difficulty<3) there, which means that it will make it up to 3, and 3 is one number too high. So since the array doesn't have that high of an index, it gives an error. You have 3 values, but since the index starts at 0, then 2 is the highest you can go.
There are two solutions, and the right one depends on what you want your game to have. Either one, add another array index with more speed. Or two, turn that if statement difficulty<3 into "difficulty<2" so that it doesn't increase too much.
Thanks! The error is gone....but it still didn't do what I expect it to do.
Its still maintains that bullet speed throughout whether its fast or slow that I tried to do. I want it like this.
1. from 1-60 seconds, bullet speed is slow.
2. from 60-120 seconds, bullet speed is medium.
3. from 120-forever, bullet speed is fastest.
I would like it if there was a way to make this in minutes but of course this should be possible since everything in game maker is in form of steps.