OFFICIAL GameMaker Studio 2 Version 2.3.0 Release

Are there any steps to be taken to update spine animations or something along those lines? For me, whenever I want to set another animation with skeleton_animation_set() the new animation jumps back to the beginning and back again once completed. This happens to all spine animations in 2.3.0 in a new and a converted project where it worked fine before.

This effectively makes every animation jitter/flicker when switching animations.

Is this a bug or do I need to do something different?
 
Now where can I post remaining bugs?. I've seen a lot of critical bugs that still remain in the official release abd were reported in the beta forums
 

kburkhart84

Firehammer Games
Now where can I post remaining bugs?. I've seen a lot of critical bugs that still remain in the official release abd were reported in the beta forums
If the bug is already reported in the beta forum, then I wouldn't worry about it for now. And if it is not, then I think you can still use the beta forum. If not, the standard methods of contacting the helpdesk remain regardless.
 

Slyddar

Member
In regards to sprites, why did the position of bottom centre have to change by 1 pixel with 2.3? Sprites that have bottom centre as their origin are converted to 'custom' in 2.3, which is no big deal, but my tile collision tutorials which advise users to select 'bottom centre' as their origin, now don't work since this change means advising an origin of bottom centre pushes the origin outside the mask. Quite a big change, so am wondering what was the logic behind this is, or if it's an actual bug. I know the origin is now a point, and not a pixel, but it's kind of frustrating it had to happen this way, considering it will take hours to re-edit videos with this change.
 
Last edited:

Yal

🐧 *penguin noises*
GMC Elder
this dont work anymore:
GML:
image_index = 10
sprite_index = spr_npc

this works:
GML:
sprite_index = spr_npc
image_index = 10
new feature that is just there to Mess our code?
There's some new bugs with image_index being clamped more than before (see https://forum.yoyogames.com/index.php?threads/image_index-goes-to-1-after-upgrade.78164 )

With that said, your old code working was a bug (setting image_index - which is clamped - before changing sprite would only work properly if the new sprite has at least as many subimages as the current sprite, which isn't guaranteed). I'm always paranoid with things like this just to avoid future bugs...
  • Always set sprite_index before image_index and image_speed so you're guaranteed the right sprite data is used for the latter
  • Always set speed before direction so that you're guaranteed direction won't be set back to 0 if speed is zero
  • Always put instance_destroy() at the end of a code block that destroys something (so you're guaranteed the rest of the code runs with a well-defined and existing instance), likewise with room_goto()
 

kburkhart84

Firehammer Games
  • Always set sprite_index before image_index and image_speed so you're guaranteed the right sprite data is used for the latter
  • Always set speed before direction so that you're guaranteed direction won't be set back to 0 if speed is zero
  • Always put instance_destroy() at the end of a code block that destroys something (so you're guaranteed the rest of the code runs with a well-defined and existing instance), likewise with room_goto()
These are the kinds of things I typically do as well, and is probably why some of us didn't have issues with the 2.3 beta(except for actual bugs).
 

gnysek

Member
Another note, self and other don't contain the IDs anymore, but are structs now. I didn't see this change in the documentation (or maybe I'm just blind), just thought I'd note it here in case somebody is running across issues caused by this too. : )
I'm using GameMaker for 17 years now, and I'm 100% sure, that it was like this back in 2003:

GML:
self == -1;
other == -2;
all == -3;
noone == -4;
global == -5;
So either they changed it in 2.x and I didn't noticed and now it's back, or self/other is working as always.

-------------- Edit:

Yep, just checked and it was like this in GMS 1.4 also. However, you need to remember, that when using with some functions, they are able to understand those values, so instance_exists(self) == instance_exists(id), and that may lead to assumption, that self == id, but it's not true - try instance_exists(-1) == instance_exists(id) , and it also returns true.

Screen from 1.4.9999:

1598376461453.png
 

Attachments

Last edited:

FrostyCat

Member
@gnysek

That's not the only source of the confusion over what self and other contain. As early as the "GML consistency update" of GMS 2.2.0, I've already gotten evidence that there is logically questionable fudge in the compiler for these.
On a slightly unrelated note, just the other day I was preparing an argument against a book author about using self, and noticed this inconsistent handling in GMS 2:
GML:
show_debug_message(self);
show_debug_message("self: " + string(self));
The first showed an instance ID (unexpected new behaviour), while the second showed -1 (expected legacy behaviour). This is one area that YoYo developers have said they've "made more consistent" in the past, but now turns out to be completely inconsistent.
Of all the reports of post-conversion incompatibilities I see around here, at least one-third has some relationship to an expectation for instance IDs to come out of a lone self or other. The other big categories are globalvar and projects that were already corrupt pre-conversion because they were not caught earlier on by source control.

Once again, YoYo paved the way for today's mess with needless goodwill for novices who practice substandard technique.
 

gnysek

Member
Ok, so seems it was between 2.2.0 and 2.3.0 and only valid if not concatenated with string. Maybe that's why I didn't noticed.
 

kburkhart84

Firehammer Games
And these are the reasons we tell people to not rely on undocumented behavior, ever. Sometimes it by chance works in your favor, but these little surprises creep in and get ya!
 

gnysek

Member
Yeah, but in fact docs only says about those keywords, not about it's values, so both behaviours were undocumented... it's even hard to say now which one should be correct. I believe that "legacy" one, but as they changed it at some point, seems that there was idea to left this solution.
 

Kaliam

Member
So I'm working on converting my project to 2.3 and everything compiles and runs just fine in VM, but when I switch to the YYC compiler I start getting a lot of strange errors.

My project uses multiple ds_grids divided up across several "Sectors" which store data about each tile. Initially I used arrays to store the data for each tile, but for 2.3 I converted everything to structs as they are much easier to deal with.

When I initially converted my project, it worked flawlessly in VM before I even made any updates, but if I tried using YYC I would get errors complaining that my array indexes we're out of bounds. It seemed as though some of my arrays were being cut in half leaving only some of the data behind which was very strange as everything worked in VM. I didn't think about it much and continued with my plan to convert the arrays to structs.

Fast forward a week, I have successfully converted my tile system to use structs and everything is working great when compiled using the VM compiler, however when I use YYC I get random errors where structs seem to exist but are completely empty. So I get errors that say "can't find value for 'thisvalue' in object 'somepointer' " even though all the values are initialized when the struct is created. So at the very least it should return undefined but it doesn't.

I'm going to make a post with the actual errors later as I am at work right now, I just wanted to know if anyone else has experienced anything similar. It's almost like memory isn't being allocated correctly or soon enough. Or the garbage collector is collecting things that it shouldn't be.

Thanks to anyone who took the time to read this.

UPDATE Sept 26 2020:
Basically all my issues are being caused by the new garbage collector which seems to be collecting data stored in ds_grids that have been destroyed. The problem is it's doing this even when there are still references to that data elsewhere. This then causes the game to crash when they are accessed as the data no longer exists. Fortunately the garbage collector can be disabled using the function "gc_enable(false)" which fixes everything in my project. Now I'm just worried I'm going to start seeing memory leaks popping up everywhere! Hope this gets fixed soon.
 
Last edited:
Look, Yoyo folks, it's great that 2.3 is finally on stable. But is it possible to at least not bother about updating to those with the most recent 2.2.5 build? It was great not being slapped with an update request during 2.3's beta phase. I don't want to update right now. Thanks.
 

erayzesen

Member
Sorry guys, I do not intend to switch to v2.3 now.

I tried the last beta version and it has too many bugs. After stable version came very quickly. I have a game project that I have made in v2.2 and I'm working on. I can't risk it. :rolleyes:

However, the immediate release of the stable version will be effective in solving the existing problems quickly. :) I guess I can leave 2.2 behind in my next project.
 

DanTheCan

Member
Just noticed something interesting in the 2.3 update.
GML:
function Print()
{
    var _str = "";
    for(var i = 0; i < argument_count; i++)
    {
        if(is_string(argument[i]))
            _str += argument[i];
        else
            _str += string(argument[i]);
    }
    show_debug_message(_str);
}

//You can override your function names and the built in function names using arguments
function FunctionOverride(variable_struct_get, mean, Print)
{
    return variable_struct_get + mean + Print;
}

//Prints: this works for your functions and for gamemaker's local functions.
Print(FunctionOverride("this works for your functions", " and for gamemaker's ", "local functions."));
 

kburkhart84

Firehammer Games
function Print() { var _str = ""; for(var i = 0; i < argument_count; i++) { if(is_string(argument)) _str += argument; else _str += string(argument); } show_debug_message(_str); }
I coded literally exactly this for myself. I'm using it in my assets. The world is a small place they say. The only slight difference is that I'm adding "fhInput: " to the beginning in that asset automatically in that version of the function so its easily seen where the debug message came from.
 
Just noticed something interesting in the 2.3 update.
GML:
function Print()
{
    var _str = "";
    for(var i = 0; i < argument_count; i++)
    {
        if(is_string(argument[i]))
            _str += argument[i];
        else
            _str += string(argument[i]);
    }
    show_debug_message(_str);
}

//You can override your function names and the built in function names using arguments
function FunctionOverride(variable_struct_get, mean, Print)
{
    return variable_struct_get + mean + Print;
}

//Prints: this works for your functions and for gamemaker's local functions.
Print(FunctionOverride("this works for your functions", " and for gamemaker's ", "local functions."));
I don't want to sound like some kind of newbie but...what kind of scenario would you use this for? It seems like you're just combining some arguments into a string and printing it...? What exactly are you overriding and for what purpose? Sorry if it's a dumb question lol
 
@rmanthorp

I am devastated. I was producing my fifth game for xblc when I updated the project to the new version. Nothing is working right anymore.
When I create a new script the system understands that it is an object and presents problems.
I make changes, creating sprites and other objects, when I close the game maker, it just disappears, the new sprites that were created, also disappear.
Any new script does not work.
Saving files with the xbox live flag just doesn't work, it doesn't save anything to files. It was really the end of my projects with the game maker. I have more than 5,000 copies sold on the xbox and I can never update the projects again because yoyo simply changed everything and things stopped working. I'm devastated.
 
@rmanthorp

I am devastated. I was producing my fifth game for xblc when I updated the project to the new version. Nothing is working right anymore.
When I create a new script the system understands that it is an object and presents problems.
I make changes, creating sprites and other objects, when I close the game maker, it just disappears, the new sprites that were created, also disappear.
Any new script does not work.
Saving files with the xbox live flag just doesn't work, it doesn't save anything to files. It was really the end of my projects with the game maker. I have more than 5,000 copies sold on the xbox and I can never update the projects again because yoyo simply changed everything and things stopped working. I'm devastated.
Check out this thread for how to re-install the earlier version (and maybe keep a copy somewhere incase you have to update your game in a few years and this link doesn't work anymore lol):


Hope that helps!
 

kburkhart84

Firehammer Games
I don't want to sound like some kind of newbie but...what kind of scenario would you use this for? It seems like you're just combining some arguments into a string and printing it...? What exactly are you overriding and for what purpose? Sorry if it's a dumb question lol
Its smarter to ask when you don't know then pretend you do and not learn anything. In this case...it actually isn't doing anything all that special, and is indeed just combining arguments into a single string to then send the string to the debug log. Its convenient to have it in a function like this though because that function happens to check if it is a number and converts to a string before adding it. This means we can call the function with however many arguments we want, and not care if we send it strings, numbers, or whatever combinations of both in whatever order, and it just works because the function handles it.

If you don't know, you will soon learn...it is always a good idea to make functions for anything that you would ever do in code more than once that is beyond basic operations. The above example is perfect for that point. My input system outputs debug logs consistently if debug mode is on, so it makes perfect sense for me to have that function so I just send it whatever I want instead of converting things each time. It works the same way as many functions we have, like distance calculation, etc... we only write it once(or it was written internally to GMS already), and we can just send arguments as needed.
 

Yal

🐧 *penguin noises*
GMC Elder
So I've used the new 2.3 features extensively during the GMC Jam and I've got the following complaints feedback:
  • When using custom sorting order, Duplicating an asset will create the copy at the very bottom of the folder, instead of right below the thing you duplicated. This is disorienting and breaks the old behavior.
  • When dragging-and-dropping external audio or graphics files into GM, the resource tree indicates the position you'd insert the new assets at, but it still adds them at the very end no matter where you tried to drop them. This smells like a bug. (It's also really inconvenient once you get a few hundred assets)
  • When dragging-and-dropping external audio or graphics files into GM, you always get the "files changed on disk, reload / overwrite?" dialog for all the new assets. (This doesn't happen if you first create new assets and then import the files, but that's slower, so...)
  • When creating an instance of a sequence (or an element of a sequence, to use the proper terminology), any objects in it will not show up in loops like with until sometime later; I worked around it in my jam game using alarms but it'd be nice to have these intricacies documented (will the instances show up in the next step, at the end of the event, the next time the sequence updates - and thus neverif it's paused - or is it subject to change and should not be relied on?)
    • (Speaking of that, the interactions between instance_deactivate_ and sequences would be nice to have documented, too)
    • (I've just skimmed through the manual due to the jam time pressure so I might've missed details, sorry if I'm barking up the wrong tree)
  • Sequences don't have the "hold Alt to paint with the selected object / sprite asset" feature as the room editor has, which makes filling in a sequence with a lot of instances annoying. (In my project, I used sequences as template rooms for a randomly generated dungeon, so they'd only have a single timeline step but lots of objects in it). Since the editor is so similar to the room editor visually, this breaks expected behavior.
  • If you get the left/right delimiter heads and playhead in the sequence editor onto the same timeline step, it's really hard to get them out again since the playhead gets prioritized over the left/right delimiters when trying to drag them around, and you can't drag the playhead past the delimiters.
  • I'd really like the ability to click an Animation Curve point and type in its X/Y values when precision is needed - a lot of the interpolation curves I want to draw overshoot the end point in some way and it's a really involved process to have an end point below the upper bound of an animation curve.
I've overall had a positive experience, but you don't need to fix what's working so I didn't bring those things up... sorry if this comes off as overly negative :p
 
I updated to 2.3.. I am working on a project for 4 months now, I "converted it" to 2.3 ...

Lots of stuff isn't working anymore as it used to work. I am still trying to figure out what's working and what isn't, because I haven't tested everything.

But one really odd thing happened. I deleted all folders I wasn't going to use (Notes, or Timelines for example).

Now I just opened my project.... the folders OBJECTS doesn't have any of the folders it used to have. But now I have 2 "Notes" folders..... (and remember I had deleted the Notes folder before). .... and in both of them I have... two Objects folders... with all my other objects.... everything is being shown twice.

I wonder what's going to happen the next time I open the project.

Also, I cant use negative number of image_speed anymore? It used to work, now if I try it it's just ignored. No error message, nothing, the animation just keep going forward instead of backward.
 
Its smarter to ask when you don't know then pretend you do and not learn anything. In this case...it actually isn't doing anything all that special, and is indeed just combining arguments into a single string to then send the string to the debug log. Its convenient to have it in a function like this though because that function happens to check if it is a number and converts to a string before adding it. This means we can call the function with however many arguments we want, and not care if we send it strings, numbers, or whatever combinations of both in whatever order, and it just works because the function handles it.

If you don't know, you will soon learn...it is always a good idea to make functions for anything that you would ever do in code more than once that is beyond basic operations. The above example is perfect for that point. My input system outputs debug logs consistently if debug mode is on, so it makes perfect sense for me to have that function so I just send it whatever I want instead of converting things each time. It works the same way as many functions we have, like distance calculation, etc... we only write it once(or it was written internally to GMS already), and we can just send arguments as needed.
Thanks for clarifying! I re-read it a few times trying to figure out what the actual technique would be used for outside of that because "override" sounds like some class related stuff I've heard of in tutorials for other languages and I know we can override methods now so I wasn't sure if this was some super secret new technique lol And I wrote a debug log script myself already because I learned the hard way how vital logging everything is when you're bug hunting.

I'm really liking that I can organize those kinds of scripts in one "scr_utils" file instead of having a whole folder of one or two line scripts for those little tiny quality of life things that add up. I used to avoid it like "is it really worth making a whole script just for this?" but now it's just another couple lines in my overall utils script.

That along with using way more macros than I used to just to rename some built-in functions like using mb_down(mb_left) instead of mouse_check_button_pressed(mb_left) and len instead of array_length and rect instead of draw_rectangle etc has all made my code look so much cleaner than before.

The biggest thing I've learned teaching myself to code is that being able to come back to my code and easily re-read it a few months later is WAY more important than trying to save lines and cramp everything into clever compact globs of code with tricky "if (this == that = that_other_thing) {some_var += ++this_thing > some_amount ? value1 : value2}" madness that I have to spend twice as long just to decipher when I come back to it and that the compiler would have probably optimized it to anyway lol
 

kburkhart84

Firehammer Games
That along with using way more macros than I used to just to rename some built-in functions like using mb_down(mb_left) instead of mouse_check_button_pressed(mb_left) and len instead of array_length and rect instead of draw_rectangle etc has all made my code look so much cleaner than before.

The biggest thing I've learned teaching myself to code is that being able to come back to my code and easily re-read it a few months later is WAY more important than trying to save lines and cramp everything into clever compact globs of code with tricky "if (this == that = that_other_thing) {some_var += ++this_thing > some_amount ? value1 : value2}" madness that I have to spend twice as long just to decipher when I come back to it and that the compiler would have probably optimized it to anyway lol
I personally have never shortened code like that...it seems like a good idea but I feel like that would make my code a little more confusing than I would like. I DO do some of the rest of what you mentioned, including a single file with utility scripts. Now that I'm thinking about it though, some of the function names in my input system are pretty long...maybe I will add some macros to make them shorter like that just for someone's optional usage.
 

samspade

Member
But one really odd thing happened. I deleted all folders I wasn't going to use (Notes, or Timelines for example).

Now I just opened my project.... the folders OBJECTS doesn't have any of the folders it used to have. But now I have 2 "Notes" folders..... (and remember I had deleted the Notes folder before). .... and in both of them I have... two Objects folders... with all my other objects.... everything is being shown twice.
I had this happen to me as well. Were you using git for this project by any chance?
 

Yal

🐧 *penguin noises*
GMC Elder
I personally have never shortened code like that...it seems like a good idea but I feel like that would make my code a little more confusing than I would like. I DO do some of the rest of what you mentioned, including a single file with utility scripts. Now that I'm thinking about it though, some of the function names in my input system are pretty long...maybe I will add some macros to make them shorter like that just for someone's optional usage.
I'm personally a fan of the ruling "the less often you use a name, the more descriptive it should be"... things you use constantly get more convenient with shorter names (I use the likes of k_l for "key left" and c for "counter", for instance) which also results in terser code that's easier for your feeble human mind to parse, while a variable you use once or twice being named lifetime_total_collected_poison_mushrooms saves you the trouble to look up its definition because all the info you need is right there in its name.

Always using long names makes you write code that's slow to type and slow to read and parse later, always using short names makes you confused due to the missing information later. You'll get the most readable code if you use both, and know when each convention is appropriate.
 
I personally have never shortened code like that...it seems like a good idea but I feel like that would make my code a little more confusing than I would like.
I should add that I'm the only one who will ever work on my code so I'm customizing things based on what make sense to me. Like I know I'LL never confuse "rect" in a draw event for "point_in_rectangle" or "collision_rectangle" lol but if I was working with others I probably wouldn't do this. But working solo I find the left code way nicer to look and still clear to read VS the bulky right (less horizontal space used too, I try to stick to that 80 char width rule):

gml_macros.png
I'm personally a fan of the ruling "the less often you use a name, the more descriptive it should be" [...] Always using long names makes you write code that's slow to type and slow to read and parse later, always using short names makes you confused due to the missing information later. You'll get the most readable code if you use both, and know when each convention is appropriate.
This sounds like a great guideline! And with macros there's always the option to type the full thing out if you need clarity somewhere and to be fair to YoYo I'm totally fine with them naming things verbosely like that because I think it helps as a newbie programmer to learn to think "okay I'm in the DRAW event and I want to SET the COLOR" or "okay I want the MOUSE to CHECK if a BUTTON is PRESSED"...but man am I tired of typing array_length or draw_set_whatever lol
 
Last edited:

kburkhart84

Firehammer Games
I'm personally a fan of the ruling "the less often you use a name, the more descriptive it should be"... things you use constantly get more convenient with shorter names (I use the likes of k_l for "key left" and c for "counter", for instance) which also results in terser code that's easier for your feeble human mind to parse, while a variable you use once or twice being named lifetime_total_collected_poison_mushrooms saves you the trouble to look up its definition because all the info you need is right there in its name.

Always using long names makes you write code that's slow to type and slow to read and parse later, always using short names makes you confused due to the missing information later. You'll get the most readable code if you use both, and know when each convention is appropriate.
I agree, this makes sense to me. Its part of what I was thinking about when I decided I'll likely add some macros just to shorten the names of the functions in my assets(starting with my input system I'm still working on the re-write for). This way would allow you to choose the descriptive version or the short version, and it would all be documented too. I would only do it for functions the user would actually call(I don't mind the longer names for internally called stuff).

I should add that I'm the only one who will ever work on my code so I'm customizing things based on what make sense to me. Like I know I'LL never confuse "rect" in a draw event for "point_in_rectangle" or "collision_rectangle" lol but if I was working with others I probably wouldn't do this. But working solo I find the left code way nicer to look and still clear to read VS the bulky right (less horizontal space used too, I try to stick to that 80 char width rule):
I feel like if you are successfully working with it and are the only one going to look back at it...do whatever the hell you want that works! At that point, even if we disagreed it wouldn't matter. more power to ya!
 
I had this happen to me as well. Were you using git for this project by any chance?
No, I am not. After I reorganized all my folders and files again, next time I opened the project I AGAIN had the Notes folder back and duplicated, but there was more stuff out of place and more stuff appearing twice.

I deleted that project, converted the old file to the new version again and didn't mess with the folders strucuture anymore just to be safe.
 

samspade

Member
No, I am not. After I reorganized all my folders and files again, next time I opened the project I AGAIN had the Notes folder back and duplicated, but there was more stuff out of place and more stuff appearing twice.

I deleted that project, converted the old file to the new version again and didn't mess with the folders strucuture anymore just to be safe.
I was also messing around with my folder structure fairly recently before it happened as well. It was also an imported project. I haven't had it happen since or in any other projects.
 
GMS2 crashed, prompted a update. Now I can't "convert" my old file(s), and I can't even test anything with the previous version. I created a blank project with just a room and object to see if that would work and it just builds indefinitely too.

What do I even do now?
 

chirpy

Member
Hi, is there documentation on minimum macOS version supported by the Mac IDE? I'd like to install on an old macbook air but can't find this information on the required SDKs page.
I see that dependency of Mono 6.10 required macOS 10.9 and above, but cannot seem to easily find the GMS2 IDE's requirement.
 

Sandro

Member
Hi, is there documentation on minimum macOS version supported by the Mac IDE? I'd like to install on an old macbook air but can't find this information on the required SDKs page.
I see that dependency of Mono 6.10 required macOS 10.9 and above, but cannot seem to easily find the GMS2 IDE's requirement.
I have it running on a late 2012 mac mini, OS X 10.13.6 High Sierra. Studio and the VM run fine, but I need to switch to a newer OS, for a new enough XCode to use YYC. (I'm able to do this on the same system by duel booting, just stuck on 10.13, since Nivida won't update their mac drivers anymore)
 

gnysek

Member
when comes the next real release?
Every day on nightly channel, very often on "console API hotfix" channel, every few weeks on Beta channel, and every few months on stable ;) Sadly, two first are available on request and require separate activation in user profile for to run.

I'm keeping eye on 2.3.1 beta - but as for today, I don't see any movement on "hidden" channel they used to prepare betas, nor on bugtracker, so hard to even guess where they are. I only know that at least dozen of new smaller features is done already and works :squirrel: - but that's far from official yet.

It just come to my mind, that they might work on PS5 and Xbox Series X exporters already to have them ready at end of year (for sure not in 2.3.1), but I saw no traces of it yet (and maybe that's a good sign, cause Sony and Microsoft would make bad things...).
 

Dan

YoYo Games Staff
YYG Staff
1599129460778.png
To answer the question anyway, because we only talk about which versions of the software are suitable for publishing/releasing/sharing games with under Apple's rules and which versions of macOS support a suitable version of Xcode, then Mojave and above are the only macOS versions we say are valid.

GMS2 itself may run on older versions (although you may need to use an older version of GMS2), but we will not offer support for this. High Sierra as mentioned above must be an old version of GMS2, an old version of Xcode, and would now not be able to pass games to other people on newer versions of macOS thanks to notarisation requirements on Apple's end, so we would not recommend going that far back at all.
 

chirpy

Member
@Dan
Thanks for the clarification. I'm aware of Apple's publishing policy and Xcode's limitations. Still happy to see the IDE and code editor runs on older machines, so I can do local tests on some things e.g. building for Android. It's okay to have no support.
 
Am I the only one who has a problem accessing the manual for "window" functions like window_center() or window_mouse_ get_x() when I middle click the function on gml?
 

STANN.co

Member
I don't know where you can post suggestions and stuff, cause looking at the new animation curves it's pretty bizzare how it works. Ideally it'd be like after effects, where you have a graph with bezier curves. But in gamemaker you get an option between either linear or interpolated. Not much control.
GameMakerStudio_XQTpStZWFR.png

They should make it like this, or at-least as an alternative to the smooth option. For full control over the curves.
Nearly all animation programs have this, it's just called bezier curves, i'd imagine it'd be not too complicated to implement. Look at the graph editor in after effects for examples
bezier.jpg

Also you can't undo, while making changes using it with the sequence editor /:
all around pretty iffy
 
Last edited:

kburkhart84

Firehammer Games
I don't know where you can post suggestions and stuff, cause looking at the new animation curves it's pretty bizzare how it works. Ideally it'd be like after effects, where you have a graph with bezier curves. But in gamemaker you get an option between either linear or interpolated. Not much control.
View attachment 34064

They should make it like this, or at-least as an alternative to the smooth option. For full control over the curves.
Nearly all animation programs have this, it's just called bezier curves, i'd imagine it'd be not too complicated to implement. Look at the graph editor in after effects for examples
View attachment 34065

Also you can't undo, while making changes using it with the sequence editor /:
all around pretty iffy
Its been said before...its an upcoming feature as far as I know...and in fact was "squirreled" in an image by someone who was using an internal beta....give it some more time and you will see it eventually.
 

Zhanghua

Member
Check out this thread for how to re-install the earlier version (and maybe keep a copy somewhere incase you have to update your game in a few years and this link doesn't work anymore lol):


Hope that helps!
Thanks for the support!
 

FrostyCat

Member
Recently the Q&A is flooded with novices trying to copy pre-2.3 syntax scripts from tutorials into GMS 2.3. Does YoYo plan to contact the authors of tutorials on the official Learn page, or replace it with up-to-date material? Officially endorsing tutorials whose content won't work due to version differences is a bad way to make a first impression.
 

samspade

Member
Recently the Q&A is flooded with novices trying to copy pre-2.3 syntax scripts from tutorials into GMS 2.3. Does YoYo plan to contact the authors of tutorials on the official Learn page, or replace it with up-to-date material? Officially endorsing tutorials whose content won't work due to version differences is a bad way to make a first impression.
There are a couple issues with the learn page. For example the videos shown when looking at the video section before and after expanding are different and Gloomy Toad unfortunately deactivated his entire YouTube channel so those are dead links. Some of the other resources are also significantly outdated. I don't think there's been a change to it in nearly a year. Personally, I wish this was a section of their website that YoYo kept up on, mostly for selfish reasons (it'd be nice if my videos had a chance of making it up there) but also because I think there is a lot of interesting stuff out there, that I would find interesting, that just doesn't show up. In a lot of ways, I think this forum serves that purpose instead (the tutorials section here is much better, the marketplace section is much better for learning about new resources, and so on).

The 2.3 question is a little harder though. Right now, there isn't enough quality content out there to actually make this doable in my opinion. Certainly there are no game tutorials out there on it yet which is one of the key selling points for GameMaker. Not even YoYo's own official tutorials are for 2.3 yet. Also, and I'm sure YoYo has a better understanding of this, but I'd be willing to be a lot of people aren't updating. So for many people, the older tutorials are going to be good for a long time. Not to mention that many things are valid across multiple versions of GM (even back to 1.4).
 
Top