Official Fangame Help Topic


ill answer that directly on a guess of what you are looking for


it is wide enough to make any game, easier to use than say, c++, and while will take some time to be good at it, you can create a good, even great game with it. however, if a large game, it might be slower if you do not work well with it.

oh yeah, also, many people use it, so you can always get help or tutorials.


Game Maker FTW
it is INSANELEY easy to learn,my first game was good for a first game ever made.
and now i am capable of awsome games.Just there are two bumps,learning gml is a little sudden unless youre good with perl and C++,then thats REALLY INSANELEY EASY.and going to dlls is even harder without the knowledge of C++ and perl(wich i dont have).



And virtual ruler, answer me this: How do you define “awsome?” What is your level of “awsomeness?” Can you make DOOM 3 with Game Maker? Can you make HALO with Game Maker? The truth is, Game Maker is the ultimate novice’s program. You can’t go very far with it at all, and as such newbies with outrageous fangame ideas are probably going to fail horribly (that’s not even counting giving up, learning the code, dedication, etc.) In other words, game developing is not for the weak of heart, or for the lazy, and Game Maker is good for very early beginners and simplistic games, but it will not get you anywhere if you plan on going through with game development.


I agree with you with the fact that game developing is not easy.

But GameMaker doesnt really differ greatly to real programming languages. The only major drawbacks (which are really major drawbacks) are poor Memory management and incompatibility with low end machines. Other than that, almost anything is possible with game maker and GML gives you as much control over a game logically as any real programming language does.

2D fan-game projects are not hugely outrageous, they may be somewhat complex but they are easily within GM’s power to make. I would spare the mentioning of P2D in this mainly because I believe they have some unreasonable expectations on keeping their graphic files locked up so no one can access them.

With that said, for small backyard projects for people who just want to have fun Programming games, GML gives you huge advantages over Real Programming languages saving you days of work in API programming. For anyone who knows how to program, GML gives you results 20x quicker than in real programming languages and keeps you in touch with making the game and having fun.

GM definitely isnt something to endevour “Doom 3-like” projects, but on a technical level I dont see why its not possible, no-one will be able to run it … but it is possible. At the end of the day, I’m sick of seeing new top of the line FPS games. Nobody even noticed as the SideScrollers, Top Down Shooters, Platformers and Point & Click Adventures are slowly dying to extinction. I want to see them brought back, and GM IS a feasible window to do it in.


Game maker can do almost anything with a .dlls.
and yes you could make halo in Game maker,but i would take YEARS.


Simply, NO.

GML can’t even come CLOSE to what a real language can do.

Not only it is memory management. It lacks MANY of the features that are incredibly useful to make games…

AHould I bother listing? maybe. Pointers, classes, templates, inheritance, initialization lists, variable arguments, direct hardware access (leaving GM’s dll extensions in the level of crap), direct graphic API manipulation, portability across platforms, much faster executing, usage of datatypes…

So I don’t really think I should keep explaining…


Pointers - Given … no memory management. Although, some resources can be removed from memory at run-time with some commands, and some pre-made class data-structures like here can be used like pointers.
Edit: Also, objects are created and destroyed in a pointer-like fashion, in which an “instance_id” can be used to track/manipulate instances of objects in the same way you would a pointer to a class in C++.

classes - Classes are represented as Objects almost identically. Except you cant make private variables (as far as I’ve seen).

templates - Well, kinda dont need them due to the crappy “magic variables”, but I’ll give that.
inheritance - Has it, partially. Its not nearly as effective though. It uses a “parent” variable which can only inherent one 1 other object as in:

A.parent = B;
B.parent = C;

A gets the functions and variables of B but not C, yea it sux but its close.

portability across platforms, much faster executing - Portability, yea thats bad, I dont care if Linux Guru’s or Mac users cant play my games though. Faster executing, dont see why thats much of an issue … computers nowadays can make up the difference.

initialization lists - Dont know what you mean by this. Each object has a Creation event which is effectively a constructor, if thats what you mean. Each object also has a “Destroy” event which can also be used as a destructor, if it needs one.

variable arguments, direct hardware access (leaving GM’s dll extensions in the level of crap), direct graphic API manipulation.

This is the stuff you DO want if you are a Professional programmer (like you). If you are new to programming (1-2 years) and just programming on the side for fun, this is just tedious.

usage of datatypes - Yea, the magic variables are crap … its a huge downfall and a rather stupid one. If GM allowed us to define datatypes it would be really nice but the advantage of not having to do everything in that last section is worth it.

Overall CFX, I completely understand and If I were you I wouldnt touch GM with a 50ft pole either. But I personally have only been programming for nearly 2 years, I understand most of the trade and am at the point where if I dont know it, I could learn it with confidence and I most definitely will… eventually.

GM provides a few sessions of fun where I can just go ahead and use/train some of my skills as a programmer to put together something and actually see results from it. I may not know how to use Direct3D/OpenGL in C++ or have libraries of function/class codes which solve all the problems for me. But at least I can have fun making something, using many of the same/similar skills I use in real programming.

Well, you definitely know more than me at this point … so theres no point in me arguing against you. I’m certainly not gonna try and change your mind, and I doubt that you could change mine. This is just … my opinion.


except it’s not about opinion. I simply stated a fact.


ANYways, before this turns into a war of GML vs C++ (of which the latter would dominate), could anybody (preferably CFX) tell me a way to go about giving a gm game custom controlls? I am quite familiar with game maker’s code, I just wish to see how anybody else would have it so the user (in a pause menu, in this instance) can change the controlls to whatever they want.

Also, how can you save that setup so the next time they open the game, their controlls are right there, loaded and ready to go?


“keyboard_key” stores the current key pressed. I would just set up a menu that asks the user to press a key, waits for the user to press a key (in a custom loop so the game can still run with moving images in the background and such), then stores the value of keyboard_key in an array of keyboard keys. Then instead of checking for vk_left being pressed, for example, you would check for customkey[0]. There are also extra functions for joystick input that I’m assuming work in the same way.

To save the array, I would just save it as an external file (using the external file-saving functions) when the user is done inputting new controls and load it at the start of the program. You could also save it in the registry.


How do you set it to shoot out of your gun on my metroid game no matter where i stand the beam always comes out of the same place how do you set it to come out of your arm cannon?


The character’s x and y values are stored in the variables “x” and “y” so if you add “x” and “y” to where the bullet is coming the bullet will slide over that much so you can adjust it to come out of the armcannon or you can just check the little “relative” box if you’re using the drag and drop features which will automatically add “x” and “y” for you so you don’t have to add it yourself which isn’t much harder the character’s x and y values are stored in the variables “x” and “y” and there is a “relative” box just check the “relative” box it does it automatically bullet will slide over x and y variables to the armcannon drag 'n drop checkslide over the samus relative to the x and y.


Uh, anyway, uh, you’re setting it to the position (6,6) or whatever on the screen. Just add the character’s position as well when you create the instance, so it’s at point (6+character.x,6+character.y). Now it’ll move with the character, so you only have to adjust where it appears next to the character (at the end of the armcannon). If you’re using the drag 'n drop system, you can just check the little “relative” box to do the same thing.


Don’t forget to also make sure it’s the X and Y of the arm cannon. Go to the sprite of the arm cannon and mouse over the point which you want the shot to come out of, then look at the X and Y didsplayed at the bottom of the screen. Use that as the X any Y creation point of the shot. if you set it to shoot a different direction depending on your character’s sprite is or what your character is doing then you can have up and angle shooting. Have it calculate the valure depending on you sprite what the X any Y values are (if the sprite is the aim up one set two variables(name them whatever you want) to the X and Y of the shooting point on the sprite) then have use those variables as the X and Y of your shooting. It will work well and willl be easy to add shooting for any pose you have.


YAY thank you it worked! :smiley:


Does anyone know how to do zoomer AI?
EDIT: and a map system?
EDIT2: And my elevators won’t work
EDIT3:Elevators are up and running and I’m working on a 1 pixel squared map of the game to prevent overlapping of areas,and a 3x3 square one for managing doors and stuff.


Well, there are so many different ways to do all of those things, I can only really give a simple tip: Just come up with a list of exactly what’s needed to be done, and then put that in coding logically.

So for the zoomer “AI”, what do you need it to do? You need it to fall when it’s not touching a block, stick to a block when it’s touching it, turn around the edge of a block when it reaches an edge, and finally, walk in a direction based on the direction it’s facing.

Now it’s easy enough to put it into code, right? Easier, at least. Try psuedo-code first if you’re stuck. (eg. “if (touch_block) stick_to_block();”)


When you’re talking about Zoomer AI, aren’t you actually asking about how it was in Metroid 1, 2, and 3? Where they came up out of the pipes and then flew out at Samus? Because, that I know how to do. :slight_smile:

vspeed = -3 (or whatever… just mess with it until you get the speed you want)
go = false

(now here, you can change the values to be as accurate or inaccurate to your liking)
if go = false{go = true
if (y >= samus.y-8) or (y <= samus.y+8){
vspeed = 0
if samus.x > self.x{hspeed = 6
}else{hspeed = -6}

And that’s pretty much it for mimicking Metroid 1, 2, or 3. And that go variable is there so the zoomer will go in the same diection constantly instead just following you absolutely everywhere you go. And this code could be perfected a little more, but you just asked for the AI part, and I’m just throwing out GML code to my knowledge of how the workings are.


That isn’t a zoomer…


…I’m sorry. .__.; falls over
doesn’t have the manuals to any of the Metroid games he actually has


map systems are pretty difficult
there are 2 ways which i’ve tried doing them
the first one creating a 2 dimensional array which would hold the details of the room and then judging from your position which would draw the correct room part

the second one is an auto-generated maps, that analyze your surroundings and pick the most suitable map