OFFICIAL GMS 2.3.0 BETA ANNOUNCEMENT

Status
Not open for further replies.

FrostyCat

Redemption Seeker
New Beta version 9 is out: https://help.yoyogames.com/hc/en-us...se-Notes-IDE-v23-1-1-157-Runtime-v23-1-1-146-
Full, open to all, beta access news tomorrow. Thanks!
I would strongly advise against an open beta given what I just saw in Beta 9.
  • Its OOP is 100% dead-on-arrival on every export. (redacted: It turned out to be a cascading effect from a bug in variable_struct_get())
  • Only 6 sections out of 23 remain in the Manual's GML function listings category
This is without doubt the least usable beta version I've seen, even including those from the closed beta. YoYo would be setting itself up for embarrassment if it rams through with an open beta tomorrow. The whole thing needs to go back to the workshop, and I don't say this lightly.
 
Last edited:

rmanthorp

GameMaker Staff
Admin
GameMaker Dev.
Thanks for your feedback. We will push back the open release if we feel we have to. The first point, I hope those issues are fully detailed and reported in the beta forums. The second point, we are aware and it has been called out in the release notes.
 

Nocturne

Friendly Tyrant
Forum Staff
Admin
  • Only 6 sections out of 23 remain in the Manual's GML function listings category
That's IT???? That's all you have to say???? After working 12 hours a day for the last month and a half to re-write everything, not to mention the massive amount of new content that's in there, plus all the new features like the glossary, the improved search system, the improved table of contents, and all the general overall UX improvements, and that's all you have to say???



Seriously though, I'm aware of what's still to be done on the manual and the intention is to have it all finished for the stable release. It's a big task, but we're nearly there and it's on target to meet the deadline and be complete... Oh, and any other feedback would actually be very welcome. :)
 

FrostyCat

Redemption Seeker
Thanks for your feedback. We will push back the open release if we feel we have to. The first point, I hope those issues are fully detailed and reported in the beta forums. The second point, we are aware and it has been called out in the release notes.
I've reported the OOP problem, and there's a sister problem that had been on there since the last beta but still isn't resolved.

The second point, we are aware and it has been called out in the release notes.
I see that point now, I thought the "user guide" referred to the Manual (it's actually a section in the Manual).

Even within the material that's there, some things are still missing. For example, the Index tab can't find any of the GML control structure keywords (e.g. if, for, while, with), but they all have a Manual entry. In the current GMS 2.2.5 Manual, they are all searchable on the Index tab.

That's IT???? That's all you have to say???? After working 12 hours a day for the last month and a half to re-write everything, not to mention the massive amount of new content that's in there, plus all the new features like the glossary, the improved search system, the improved table of contents, and all the general overall UX improvements, and that's all you have to say???
I'm sorry, but Pareto's Law is a cruel beast. Of all the times I use the Manual these days, at least 80% of the time I'm using and linking to a particular 20% part of the Manual called "GameMaker Language Reference", and I think this use case is not unique. When the missing material gets concentrated in that area, people like me are put in a poor position to give real feedback, except for general comments on how the UI looks and operates.

But hey, if there's any silver lining to this, it's that I can bookmark and copy-and-paste the URL directly, without reaching inside frames. The links even contain highlighting and search field information, which I find convenient. You've just made the work of chronic Manual linkers like me much easier. Thank you.
 

Nocturne

Friendly Tyrant
Forum Staff
Admin
Are you illiterate?
Are you????

I'm not saying it's bad
Hmmmm....
Over for me.
Please don't insult other members because they take what you say at face value. You literally said it's OVER FOR YOU because you just started with the latest version... That's a negative comment, and the reply you were given was commenting on that negativity. Before accusing others of being illiterate, maybe check and make sure that your own grasp of the English language is perfect. ;)
 

Juju

Member
For what it's worth, I think the new manual is a huge step up, and you know how hard I am to impress.

I very much appreciate the new sections on the miscellaneous extra bits (compatibility functions and type tables and so on) that don't really fit inside the traditional documentation. Hopefully this means the transition into the new world of struct+array data structures can be be a little smoother than it would otherwise, and that we'll see more esoteric knowledge getting officially recorded (like the sorting algos used for various functions).

I do think some of the CSS animations are a bit Much though e.g. the flash when you change tabs, and the ponderous unfolding animation on the tree. Feels like it could be snappier!
 

Nocturne

Friendly Tyrant
Forum Staff
Admin
Thanks for the good words JuJu!

I do think some of the CSS animations are a bit Much though e.g. the flash when you change tabs, and the ponderous unfolding animation on the tree. Feels like it could be snappier!
I'll look into it... Been working on it so long that I just kind of take things for granted and never really thought about those aspects. Thanks! :)
 

gnysek

Member
There are big manual changes finally? Gosh, so sad that I'm on Linux now, I would love to see it, but need to wait until end of work day... chromium embedded removed finally? Love it, dozens of MB saved.

btw. @Nocturne wouldn't it be time to finally move docs2.yoyogames.com to docs.yoyogames.com (with redirection), and remove old 1.x manual from web at all (it's still included in GMS 1.4 in same form). I've seen many times that people links GMS2 users to 1.x manual...
 
Last edited:

Hyomoto

Member
Apparently it dropped yesterday but I'm only hearing about it today. I guess I must have opened it up in the morning before the update and not seen the update come in. An well, something to look at later then!

@Nocturne Your efforts are grand and inspiring, but if other people deserve some credit I don't want to send it all to you! I really appreciate everyone whose long hours have gone into 2.3, and the new manual is a surprise and very welcome. So, thank you for those long days, and thank you to the names I don't know who also made it happen!
 

Posh Indie

That Guy
That's IT???? That's all you have to say???? After working 12 hours a day for the last month and a half to re-write everything, not to mention the massive amount of new content that's in there, plus all the new features like the glossary, the improved search system, the improved table of contents, and all the general overall UX improvements, and that's all you have to say???
@Nocturne Work faster you... you... SNAIL!

I'm just saying that it might pose problems for me since I just started and it would be a real shame if they fundamentally changed the program.
The best time to receive the overhaul! Saves you from needing to unlearn bad practices going forward. You are in a very beneficial position, even if you don't realize it at this moment.

Also, if Yoyo Games had to wait for every single person to be done learning the current GMS to update... we would never get an update.
 

rmanthorp

GameMaker Staff
Admin
GameMaker Dev.
Hi all. I got a mail about the open beta but I can't see v2.3 in the download page. How can I download it?
Hey. Please send me a message on here with your account email and I'll take a look. You should have a tab on the downloads page for the beta.
 

BlueHarrier

Member
I see I'm not the only one having troubles with getting the beta, is there any fix yet?

Just in case, I have the GM:S Desktop via Steam.
 
Hello.
Looks like I have the same problem. There is no download link for the 2.3 beta on my account download page. I see the links for the current 2.2 version, and the tab for the previous 1.4 Gamemaker: studio.
My license is a steam license (don't know if it's a useful information).

How do I send you my account email (in case you need it to check)? Using the "Start conversation" function?

Thanks.
 

rmanthorp

GameMaker Staff
Admin
GameMaker Dev.
We have realised we've got an issue with Steam licences and the beta downloads. We're currently working on a solution. Sorry!
 

gnysek

Member
Just noticed that there was suggestion to add [$ name] for variable_struct_get() and variable_struct_set(). Love it, hope it gonna be added in RTM/stable version!
 
D

Deleted member 16767

Guest
I still get an error on my painting software when I try to pick a sprite from another room. Layer_sprite_create doesn't exist it says. And my gif script which I paid for is utterly destroyed. :( Well, bye bye Shadowforge.
 

Zhanghua

Member
How to deep-copy a struct while not reference.
This is my unperfect code....

GML:
function test() constructor{
    static kkk = 2222;
    val = random(11111);
    static show = function(){ show_debug_message(val); }
}

function struct_copy(stc){
    var tmp = {};//inefficient when stc hasn't static member
    var names = variable_struct_get_names(stc);
    for( var i=0; i<array_length(names); i++ ){
        var nm = names[i];
        var val = variable_struct_get(stc,nm);
        if( is_struct(val) ){ val = struct_copy(val); }
        variable_struct_set(tmp,nm, val);
    }
    return tmp;
}


var t1 = new test();
var t2 = struct_copy(t1);

t1.val = 1111111;
show_debug_message( t1 )//1111111
show_debug_message( t2 )//keep the original value
show_debug_message( t2.kkk )//error
 

Erik Leppen

Member
I see the new 2.3 beta is out. Yay! I'm currently checking out the manual to see how this whole "struct" thing works, I'm really looking forward to "tidying up" all my scripts and using all the new GML features. I'm very happy with all these new GML possibilities! Also I'm glad that the manual already seems to cover most of it. Great work all on the update! :D

I do have a few questions though, on those new functions stuff.

Argument variables: What will happen to argument[], argument_count, argument0 .. argument15? More specifically, will there be new syntax to write functions that have a variable number of arguments (with no particular maximum)? As an example, I have a simple "concatenation" script that in "old GML" looks like
GML:
///concat(a0, a1, a2, a3, ...)
var str = "";
for (var a = 0; a < argument_count; a += 1) {
    if is_string(argument[a]) {
        str += argument[a];
    }
    else {
        str += string(argument[a]);
    }
}
return str;
I would figure that the "argument" array will still be needed for these cases. Will it remain intact like it is now? Also, will argument be a "normal array" now, so that we could use array_length(argument) to replace argument_count, or call all kinds of array functions on it, such as array_copy?

Syntax coloring system: When playing with the colors, I noticed a few things that I'd like to see extended, but not sure if this is in the pipeline or even feasible...
- Why is there a separate color for "script names"? Do we ever need to call "scripts" still somewhere?
- Will there be a separate color for "built-in functions" vs. "user-defined functions"? I'd like to keep the 2 separate as I was used to in older GM's (when it was functions vs scripts), but without of course having to have a script for every single user function.
- Will there be a separate color for "constructor functions" (both in the function definition, and when calling them with the "new" keyword) so that it's easy to make structs stand out?
- Will there be a separate color for "static functions"? If I define a struct function as "static", it gets a separate color in the definition line, but when I call it, it gets the same color as any other function.

Structs: should I see them as "classes" or as "instances" or even as "ds_maps" or something else?
Should I see function foo (args) constructor {} as class foo (args) {} ?
Is the GML struct {foo: bar} the same thing as a "JS object" or a "dictionary"?
Is it possible for structs to have "static" things that are not functions? One use-case I foresee is that I want to have a struct that can have multiple "instances" but that keeps an list of instances somehow. That array of instances I would see as a static array. Would that be possible? Such as
GML:
function Thing (label) constructor {
    static all_labels = ds_list_create();
    ds_list_add(all_things, label);
}
var li = Thing.all_labels; //the list is now empty
var thing1 = new Thing("a");
var li = Thing.all_labels; //the list now contains "a"
var thing2 = new Thing("b");
var li = Thing.all_labels; //the list now contains "a" and "b"
Will it be possible that instead of the labels, I can have a list of the structs "themselves"? Or should the list then be "outside" the struct definition?
Or is there already some kind of "list of all instances of a struct"? (if that even makes any sense). Or are structs not meant for this, and should i use traditional GM objects if I want to do this? What does instanceof() do?

Objects: is it possible to bind functions to objects or instances? Say I have a traditional object myobject. Can I put myobject.func = function (args) {} in a script, and is the function func then bound to the object (not its instances)? I mean, suppose I want a function
GML:
myobject.sum_of_all_x = function () {
    var sum = 0;
        with myobject {sum += x;}
    return sum;
}
would that work? And if I put ifunc = function (args) {} in the create event, will the function ifunc then be bound to all instances of the object? Or can I put
GML:
var inst = instance_create(myobject);
inst.ifunc = function () {}
in a function to bind functions to instances?

Edits:
- with all scripts now being "global" and executing at game startup instead of when calling them from an event: is there a particular "execution order" that I can rely on? E.g. one script defining something an another script using it?
- why is the variable "value" being colored as if it's something special?
- why is the variable "message" being colored as if it's something special?

Another one:
if I have a struct, and a variable that is an instance of it, will the autocomplete window be changed so that it shows the members/properties (whatever they're called) of my struct?
So I have
GML:
function Foo () constructor {
  bar = 3;
  raise_the_bar = function () {bar += 1;}
}
myfoo = new Foo();
if I now type "myfoo." then it would be nice if the autocomplete shows "bar" and "raise_the_bar" as methods of myfoo.

Also, what's the purpose of "static"? I expected to do this:
GML:
function Foo () constructor {
  static bar = 3;
  static raise_the_bar = function () {bar += 1;}
}
Foo.raise_the_bar();
show_debug_message(Foo.bar); //gives 4
Lots of questions. Sorry if they are in the manual already, or otherwise dumb :)
 
Last edited:

gnysek

Member
argument_count and argument[] is left, argument0...x I think should be removed, as on script conversion to 2.3, they can just use it as method argument names, and then it will work as before, without conflict, but in fact I don't remember now how it was solved - didn't played with beta for last 2-3 weeks.
 
D

Deleted member 16767

Guest
I am reimporting some scripts. Will let you know if it works (will edit this post).

Edit 1: The building is taking forever atm.

Edit 2: I get an illegal array use in my control object.
 
Last edited by a moderator:

Erik Leppen

Member
Also, how to write "jsdoc" comments for the methods of a constructor function (such as the "log" below)?

Also, it seems something is really broken with structs and loops.
GML:
function Debugmessagetester () constructor {
log = function (str) {
show_debug_message(str);
}
}
global.debugmessagetester = new Debugmessagetester();
global.debugmessagetester.log("Debugmessagetester repeat 10 start");
repeat 10 {
global.debugmessagetester.log("Debugmessagetester test");
}
global.debugmessagetester.log("Debugmessagetester repeat 10 end");
gives the following debug output:
Code:
Debugmessagetester repeat 10 start
Debugmessagetester test
Debugmessagetester repeat 10 end
Yep - only 1 "test". This doesn't look intended.
(also, code indentation has problems on this forum.)
 

FrostyCat

Redemption Seeker
How to deep-copy a struct while not reference.
This is my unperfect code....

GML:
function test() constructor{
    static kkk = 2222;
    val = random(11111);
    static show = function(){ show_debug_message(val); }
}

function struct_copy(stc){
    var tmp = {};//inefficient when stc hasn't static member
    var names = variable_struct_get_names(stc);
    for( var i=0; i<array_length(names); i++ ){
        var nm = names[i];
        var val = variable_struct_get(stc,nm);
        if( is_struct(val) ){ val = struct_copy(val); }
        variable_struct_set(tmp,nm, val);
    }
    return tmp;
}


var t1 = new test();
var t2 = struct_copy(t1);

t1.val = 1111111;
show_debug_message( t1 )//1111111
show_debug_message( t2 )//keep the original value
show_debug_message( t2.kkk )//error
If you're deep-copying, you need to handle arrays too since they can also be nested inside structs. But other than that, you have the right idea. This is how it's done.

In any case, deep-copying an arbitrary struct properly is near impossible in the current beta because variable_struct_get() is misbehaving. You have to either run on HTML5 debug (the ONLY one left standing, even HTML5 normal is bad), or downgrade the runtime by one version if you want it to work at least on Windows VM.
 

Zhanghua

Member
If you're deep-copying, you need to handle arrays too since they can also be nested inside structs. But other than that, you have the right idea. This is how it's done.

In any case, deep-copying an arbitrary struct properly is near impossible in the current beta because variable_struct_get() is misbehaving. You have to either run on HTML5 debug (the ONLY one left standing, even HTML5 normal is bad), or downgrade the runtime by one version if you want it to work at least on Windows VM.
You are right, a general deep-copying is much more complex for all division of member.
Maybe we can only customize it for different situation.
 

Toque

Member
Hmmm. I'm looking for the 2.3 open beta download link.

I only see the 2.2.5 download link in my downloads.
I dont' have steam but regular Yoyo purchased GM2.
Is there a secret handshake no one told me about?

I can wait for the official release too..... But it would be fun to learn sequences and use in the next jam.
 
Hmmm. I'm looking for the 2.3 open beta download link.

I only see the 2.2.5 download link in my downloads.
I dont' have steam but regular Yoyo purchased GM2.
Is there a secret handshake no one told me about?

I can wait for the official release too..... But it would be fun to learn sequences and use in the next jam.
Login to your account in yoyogames.com web site. Choose Download and you should see GameMaker Studio 2 Beta. That is 2.3 Beta.
 
V

Venom Friend

Guest
I know that you can download it from the site, but I'm curious if this open beta will be on the steam version as well? The latest beta there is like 2.2.4, so I'm curious if it'll be available in beta there or only after official release.
 

S_Kleer

Member
Finaly I can testing 2.3!
And I have very stupid question. How to declare 3d array?

GML:
array[9][9][9] = 0;
or

GML:
for (var i=0; i<10; i++)
{
    for (var j=0; j<10; j++)
    {
        for (var k=0; k<10; k++)
        {
            array[i][j][k] = 0;
        }
    }
}
Dosen't works...
 
I have an object that destroys itself when it's image_index < 0. Worked in 2.2, but 2.3 broke it. It seems like maybe image_index can't go negative anymore?

It's a fire particle that starts small at image 0, and gets bigger. When it's spawned, it's image counts up. When it's lifetime is over, it's image counts down until it should be destroyed.
 

DesArts

Member
So... Allman style curly bracket blocks don't fold properly.

Haven't found any discussion of this via searching.

As an Allman style user (who definitely won't change, like most I have reasons I use a style) this makes me cringe, still useable technically but in no way pretty or professional. Any chance of seeing this change?
 
Last edited:

FrostyCat

Redemption Seeker
How to declare 3d array?
3D arrays are just 1D arrays nested 3 times. Don't expect any special syntax to do any of the work for you.

Loop form:
GML:
//10x10x10 filled with 0
array = array_create(10);
for (var i = 0; i < 10; ++i) {
    var layer1 = array_create(10);
    for (var j = 0; j < 10; ++j) {
        layer1[j] = array_create(10, 0);
    }
    array[i] = layer1;
}
GML:
//10x10x10 filled with digit string
array = array_create(10);
for (var i = 0; i < 10; ++i) {
    var layer1 = array_create(10);
    for (var j = 0; j < 10; ++j) {
        var layer2 = array_create(10);
        for (var k = 0; k < 10; ++k) {
            layer2[k] =  string(i) + string(j) + string(k);
        }
        layer1[j] = layer2;
    }
    array[i] = layer1;
}
Literal form:
GML:
//3x3x3
array = [
    [
        ["000", "001", "002"],
        {"010", "011", "012"],
        {"020", "021", "022"]
    ],
    [
        ["100", "101", "102"],
        {"110", "111", "112"],
        {"120", "121", "122"]
    ],
    [
        ["200", "201", "202"],
        {"210", "211", "212"],
        {"220", "221", "222"]
    ]
];
 

Erik Leppen

Member
How to declare 3d array?
GML:
var arr;
for (var i=0; i<10; i++)
{
    for (var j=0; j<10; j++)
    {
        for (var k=0; k<10; k++)
        {
            arr[i][j][k] = 0;
        }
    }
}
show_debug_message(arr);
works for me... (only difference is the "var arr;" at the top).


I tried being smart and tested
GML:
var arr = array_create(10, array_create(10, 0));
show_debug_message(arr);
but that gives

Code:
[ [ 0,0,0,0,0,0,0,0,0,0 ],"Warning: recursive array found","Warning: recursive array found","Warning: recursive array found","Warning: recursive array found","Warning: recursive array found","Warning: recursive array found","Warning: recursive array found","Warning: recursive array found","Warning: recursive array found" ]
Yeah... not sure what to think of that, but whatever.
 
D

Deleted member 45063

Guest
Yeah... not sure what to think of that, but whatever.
That's because array_create takes the value to initialize the indexes to, and in your case you're setting it always to the same array (which is the result of the inner array_create call). That is effectively the same as doing:
GML:
var array_that_will_be_set_to_all_indexes = array_create(10);
var arr = array_create(10, array_that_will_be_set_to_all_indexes);
 
Status
Not open for further replies.
Top