Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

GMEdit

A high-end code editor for all things GameMaker · By YellowAfterlife

A whole new experience!

A topic by Dotto Meister created Aug 27, 2022 Views: 215 Replies: 4
Viewing posts 1 to 2

Hi,

I've been using the tool for approx. 1 month and, honestly, I feel even more motivated to work on my game =]

The only caveat (for me) is that GMS 1 doesn't correctly reload an object where I added events by typing #event... directly. If the GMS saves the project in this state it ends up trying to overwrite the contents of that object with "nothing".

Fortunately, GMEdit asks if I want to keep the current content, but it always gives me a fear of clicking wrong and losing progress =P I've worked around this by avoiding performing actions in the GMS editor that force me to save in it (basically anything other than editing code) while I have "pending" content in GMEdit.

I know this isn't a flaw of GMEdit itself, but it would be nice if there was a way to force the program to keep its contents (something like a "always overwrite changes to files" config).

Moreover, an option to suggest/autocomplete text in strings based on the content of strings in the project would come in handy.

Congrats on the tool!

Developer (1 edit)

GMS1 has a bug where it will always overwrite resources with the last version it “remembers” if you have opened them in GMS1 at some point. The solution is to not do that (either only touch the object in GMEdit, or reload the project after making edits in GMS1).

As for auto-completion in strings, what is the exact purpose? This sounds like something that would be very noisy and best handled through macros.

Not even opening the GMS would be perfect, but I have to run the game constantly as I implement D=

About string completion... one of the weirdest things about GMS1 is it doesn't even compare variable names. A brief oversight and you misspell, getting a bug that can take some time to figure out why (unless you're lucky it's on a "if").

In some situations it is feasible to work with "labels" instead of values in variables, eg: The state of a menu with many submenus is more "readable" with something like menuState="graphicOptions" than menuState=7.

As design complexity increases, having this type of string autocomplete would be as beneficial as comparing variable names. But I fully understand that this can be difficult to do (everything else that this tool offers is already very very nice).

Developer

You can open GMS, you just shouldn’t open the specific resources in GMS if you’ll be opening them in GMEdit.

I don’t know what “doesn’t even compare variable names means”, but GMEdit has a lot of type checking and JSDoc lines that can warn you about mistyped variables.

In some situations it is feasible to work with “labels” instead of values in variables, eg: The state of a menu with many submenus is more “readable” with something like menuState=“graphicOptions” than menuState=7.

That’s a job for enums, but also people sometimes just have a few variables in the object, like

GRAPHIC_OPTIONS = 7;
// ...
menuState = GRAPHIC_OPTIONS;
(1 edit)
You can open GMS, you just shouldn’t open the specific resources in GMS if you’ll be opening them in GMEdit.

If the cache is cleared, the GMS1 performs an autosave when running the game, even if nothing has been changed through it. It's not a big risk, but a "compiler only" mode via command line or etc would make GMS1 perfect for use with GMEdit (but why help if we can make it difficult, right YoYo Games? xD).

I don’t know what “doesn’t even compare variable names means”, but GMEdit has a lot of type checking and JSDoc lines that can warn you about mistyped variables.

Sorry my English is bad. I was saying that having autocompletion in GMEdit is already a giant step when GMS1 doesn't even have it for variable names.

GRAPHIC_OPTIONS = 7; // ... menuState = GRAPHIC_OPTIONS;

Again, my English is bad and you apparently didn't understand it very well. If I had a list of behaviors for a state machine and wanted to label them with strings, eg:

myState = "idle";

And my list of behaviors like:

"walk", "run", "shot", "swim", "roll", "pick", "drop", "attack", "talk"...

At some point in the code I want to set the state to catch, so I do myState="... well, I don't remember if I used "catch" or "pick" or even "take", and since it's a string I won't have an autocomplete hint.

Obviously, this example is very simplistic, we are talking about much more complex contexts and labels composed of 3 or 4 words. Enums can be a good alternative, but I have to go back to the point where I declared it to feed the list with new labels, whereas in autocomplete, I just have to type it once to make it available.

Anyway, I just speculated a possible feature similar to autocomplete in Excel cells. I understand that there is no "cost x benefit" to implement it =/