GameMaker Studio 2 Desktop

GameMaker Studio 2 Desktop

bra1n1ac Dec 21, 2017 @ 9:55am
Too Complex?
I've only just started using this program, so I'm not 100% sure if maybe I just don't know the names of its functions yet, but while a lot of things make sense to me from design and memory conservation perspectives, in many instances, it's unclear why some features are designed a certain way.

There could, for example, be a single button to create a new object from a sprite, with only the additional step of needing to type in a new name, or alter the existing one, but this is only a minor example of how un-streamlined Game Maker feels. Let me use a much larger and more problematic example; text.

Written text is one of the seven major categories of elements used in the audio/visual element of 2D games (the others being music, voices, sound effects, still images, animated sprites and cutscenes.) Furthermore, text is one of the easiest things to edit on a basic level, only requiring a simple application like notepad. Most coding is done in text, and Game Maker is no exception, yet if you want to display text in Game Maker, there are all sorts of complex requirements, none of which are explained through the game's interface. Even in the D&D mode, it's unclear what the difference is between "caption" and "value," how to place text or trigger its appearance, or how to make it visible.

It's difficult to see why text couldn't be treated like a simpler type of object, with a box in which to type, and menus for font selection, size, bolding, italisizing, etc, like the way it's done in Gimp. It all feels like somewhere along the way, a decision was made to over-complicate the process. It should just be a matter of selecting some options, selecting a place to start typing, typing a message, then clicking "okay," or whatever.

On top of this, when you run into problems, like your text doesn't appear for some reason, there's basically no indication of why that would be. It's as though this function of the program is not designed specifically to perform its role, and it really should be.

Am I missing something? Is this program really much easier to use than I think? Is there some pivotal menu "type text anywhere" option that I've just overlooked?

P.S.: I've been having much more luck managing images than text, and I'm almost on the verge of trying to just create PNG images of all the text I want to use, but that feels like it would be a waste of memory. Is that really how we're going to do things?

P.P.S.: As I've said before, I'm an artist, not a programmer, so the artwork I'm planning to use in the finished product is coming along nicely. I'm just awaiting a program that has both power and is usable by complete non-programmers.
Last edited by bra1n1ac; Dec 21, 2017 @ 11:56am
< >
Showing 1-13 of 13 comments
redforest Dec 21, 2017 @ 10:38am 
In general, I understand your point and in many ways I feel same. I think GMS is going somewhere very strict instead a flexible and simple design to handle a simple operation. Such things are developed by the community and I think Yoyo's priority is not developers' opinion, flexibility, simplicity anymore... GMS's added value is diminishing and it is becoming just a product like many others on the market and as far as they can market they will market... On the other hand, I also tried many other engines such as Unity, Construct, Unreal, Godot, Fusion and all of them have something easy and something very upside-down for me. For instance, Construct engine's interface is really simple and its like Visual Studio's objects & behaviour structure but there is no coding which is sometimes much more easier to use. Unity is based on C# which is a common language, it has free option and object oriented and after a learning point it becomes more flexible since there are tons of plugins and open source codes but it is still over complex and messy for 2D projects compared to GMS. By the way, for the text issue, you can create fonts and edit their preferences before you assign them. But you are right it, there could be easier options to handle just a text...
bra1n1ac Dec 21, 2017 @ 11:53am 
Originally posted by redforest:
On the other hand, I also tried many other engines such as Unity, Construct, Unreal, Godot, Fusion and all of them have something easy and something very upside-down for me. For instance, Construct engine's interface is really simple and its like Visual Studio's objects & behaviour structure but there is no coding which is sometimes much more easier to use. Unity is based on C# which is a common language, it has free option and object oriented and after a learning point it becomes more flexible since there are tons of plugins and open source codes but it is still over complex and messy for 2D projects compared to GMS. By the way, for the text issue, you can create fonts and edit their preferences before you assign them. But you are right it, there could be easier options to handle just a text...

I actually did create a font, but the text still wouldn't show up.

And yes, like yourself, I've been scouring the internet for a straightforward method of turning graphics interactive. (I never find coding to be especially easy because of how easy it is to screw it up and not realize it, but in general, I see what you mean.)

However, in my experience, the Trigger Editor of Warcraft III should have been an inspiration for game-makers everywhere. Everything is menu-based and arranged just so, and you can make all the variables and if/then/else statements you want. If the graphics of that engine were as easy to change as the triggers, I never would have gone looking elsewhere.
kris40k Dec 21, 2017 @ 12:16pm 
there are all sorts of complex requirements, none of which are explained through the game's interface.

Am I missing something? Is this program really much easier to use than I think? Is there some pivotal menu "type text anywhere" option that I've just overlooked?

While the IDE may not explicitly describe how to utilize each function, it does generally give a "cheat sheet" at the bottom for what it is looking for. For instance, if you do something like draw_text(), at the bottom of the screen it wil show that draw text is looking for:
draw_text(x, y, string)

Which, at a glace, should be somewhat obvious, its looking for an x value and y value for where to place the text, and the string that you want the text to be.

You can utilize the help function to bring up the documentation for a better explanantion of each function, in addition to examples of how to use each function. In GMS 2, you can middle click on a function and it will open up the documentation for that function in the interface, which is a quick and easy way to get explanations.

Now, this is using GML, I don't use drag and drop, so I'm not sure if that translates well.

Otherwise, there are many tutorials that will give walkthrough on how to use draw_text() and its sibling functions, and common problems with text not showing, such as using draw_self() in the Draw event, making sure that depth of an object is set to be visible, the difference beween x and y coords when using a Draw GUI Event and a Draw Event , and similar.
Last edited by kris40k; Dec 21, 2017 @ 12:19pm
bra1n1ac Dec 21, 2017 @ 12:50pm 
Originally posted by kris40k:
While the IDE may not explicitly describe how to utilize each function, it does generally give a "cheat sheet" at the bottom for what it is looking for. For instance, if you do something like draw_text(), at the bottom of the screen it wil show that draw text is looking for:
draw_text(x, y, string)

Which, at a glace, should be somewhat obvious, its looking for an x value and y value for where to place the text, and the string that you want the text to be.

*I* know what X and Y values are, but what's not obvious is how to find them. You can find them if you know where to look, but it's not exactly intuitive.

Originally posted by kris40k:
In GMS 2, you can middle click on a function and it will open up the documentation for that function in the interface, which is a quick and easy way to get explanations.

Now, *that* I didn't realize. I may need to have another look at some of what I wrote and see if it provides a better solution.

Originally posted by kris40k:
Otherwise, there are many tutorials that will give walkthrough on how to use draw_text() and its sibling functions, and common problems with text not showing, such as using draw_self() in the Draw event, making sure that depth of an object is set to be visible, the difference beween x and y coords when using a Draw GUI Event and a Draw Event , and similar.

See, in a way, you're just enunciating my point. Why do I need to fiddle with all these extra factors for something as simple as a text display? If text depth is important, why not include a "text depth" drop-down in the D&D for text? Why not do depth the way photoshop does it, with layers in order of depth? Why not have text visibility be a checkbox in the text section itself? It seems to me that in most situations, you'd want the text to be visible and above everything else, so why not set those as the default values, and give you the chance to edit them later if you wanted to be really artsy? It just doesn't feel like it was designed for its intended purpose.
Last edited by bra1n1ac; Dec 21, 2017 @ 12:52pm
kris40k Dec 21, 2017 @ 5:35pm 
Sure, its probably not the most beginer friendly way of drawing text. GMS 2 does however support layers, which you could look into for creating a "text" layer on top of everything else if that would suit your needs, however, I can already think of some complications that would cause which is why they don't have text drawn on another layer above everything else by default.

Ultimately, text is drawn on the same layer and at the same depth relative to the object calling the draw function, which is useful for thing like drawing damage over the head of an enemy without it going over something that should be in the foreground, like the GUI
Last edited by kris40k; Dec 21, 2017 @ 5:38pm
johnmc50 Dec 22, 2017 @ 6:15am 
best advise sawn spawding is a great teacher for this.

in your enternet explorer (e)

in search type game maker 2 my first game part 1 moving around youtube.
by sawn spawding

---------------------------------------------------------------------------------------------------
Do as he does first

thanks to him with step by step

I'm a bigginer too.

my first game is jc version star trek the next generation.
only 2 more things I have to do and game done.
took 5 months
"sawn spawding" - should be "shaun spalding".

See https://www.youtube.com/user/999Greyfox/playlists
bra1n1ac Dec 22, 2017 @ 2:49pm 
Originally posted by johnmc50:
best advise sawn spawding is a great teacher for this.

in your enternet explorer (e)

in search type game maker 2 my first game part 1 moving around youtube.
by sawn spawding

---------------------------------------------------------------------------------------------------
Do as he does first

thanks to him with step by step

I'm a bigginer too.

my first game is jc version star trek the next generation.
only 2 more things I have to do and game done.
took 5 months

Yeah, there's a ton of Youtube tutorials for this, because there needs to be. My point is just how needlessly-complicated it all is.
bra1n1ac Dec 22, 2017 @ 2:51pm 
Originally posted by kris40k:
Sure, its probably not the most beginer friendly way of drawing text. GMS 2 does however support layers, which you could look into for creating a "text" layer on top of everything else if that would suit your needs, however, I can already think of some complications that would cause which is why they don't have text drawn on another layer above everything else by default.

Ultimately, text is drawn on the same layer and at the same depth relative to the object calling the draw function, which is useful for thing like drawing damage over the head of an enemy without it going over something that should be in the foreground, like the GUI

Actually, in my experience, even if numbers show up over the head of a character, like in Final Fantasy, you'd still want to be able to see them if you moved behind a text box. Maybe not if you paused the game, but you can just have a separate layer for the game pause screen, and various inventory and options screens could circulate through that layer, like in Secret of Mana.
Creasu Dec 23, 2017 @ 11:20am 
if you draw text you need to do it in draw event or draw hui idk if someone ansered this already but maybe that's why doens't show up
Creasu Dec 23, 2017 @ 11:21am 
create an other object and with the ith event draw the text from the sign and also set the object that will draw the text it's depth to a verry low number so it's displayed above everything what you want it to be drawen above
kris40k Dec 23, 2017 @ 1:05pm 
Originally posted by bra1n1ac:
Actually, in my experience, even if numbers show up over the head of a character, like in Final Fantasy, you'd still want to be able to see them if you moved behind a text box. Maybe not if you paused the game, but you can just have a separate layer for the game pause screen, and various inventory and options screens could circulate through that layer, like in Secret of Mana.

Well, sure. It depends on the particulars of the game you are designing. For instance, if you are working on a hack-n-slasher, having your player health display in the gui covered by damage spam is going to be counter productive. Which is more important, how close the player is to dying or the unreadable stack of massive damage numbers being flashed as she comboes a clump of 5-10 enemies?

It all depends.

Really though, the conversation boild down to, "is it over complicated" or too complex as your thread title.

I personally find that keeping in mind, "the layer and depth of draw_text() is that of the object calling the draw_text() function" to be simpler without having to deal with a default "text layer" and then having to manually go and change the depth of the text being drawn to that is where I really wanted it to be. You disagree. That's cool.

It's all just left-handed scissors vs right-handed scissors. Someone isn't going to like what gets implemented.
bra1n1ac Dec 23, 2017 @ 7:16pm 
Originally posted by kris40k:
Originally posted by bra1n1ac:
Actually, in my experience, even if numbers show up over the head of a character, like in Final Fantasy, you'd still want to be able to see them if you moved behind a text box. Maybe not if you paused the game, but you can just have a separate layer for the game pause screen, and various inventory and options screens could circulate through that layer, like in Secret of Mana.

Well, sure. It depends on the particulars of the game you are designing. For instance, if you are working on a hack-n-slasher, having your player health display in the gui covered by damage spam is going to be counter productive. Which is more important, how close the player is to dying or the unreadable stack of massive damage numbers being flashed as she comboes a clump of 5-10 enemies?

It all depends.

Really though, the conversation boild down to, "is it over complicated" or too complex as your thread title.

I personally find that keeping in mind, "the layer and depth of draw_text() is that of the object calling the draw_text() function" to be simpler without having to deal with a default "text layer" and then having to manually go and change the depth of the text being drawn to that is where I really wanted it to be. You disagree. That's cool.

It's all just left-handed scissors vs right-handed scissors. Someone isn't going to like what gets implemented.

It sounds like what you're suggesting is that I deliberately create an object on a higher layer than all the other objects, off the boundaries of the screen, so that it can "anchor" my text and make it actually show up when I tell it to, rather than hiding behind a bush, and you know what? It shouldn't need to be that hard.

That is a good idea, though.
< >
Showing 1-13 of 13 comments
Per page: 1530 50

Date Posted: Dec 21, 2017 @ 9:55am
Posts: 13