• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

OFFICIAL GMS 2.3.0 BETA ANNOUNCEMENT

Status
Not open for further replies.

xDGameStudios

GameMaker Staff
GameMaker Dev.
They did specifically put that they would be sending invites on a first-come-first-serve basis. Only reason I busted out my sad face. lol


EDIT: I guess I just had to whine first. haha Literally JUST got the email.

I'm guessing we should just be patient. Looks like they're actively pushing these out as we speak.
what was your ticket ID?
 
D

dcm

Guest
ah man. I thought I actually got an early sign up. I had been F5ing for daaaaaays. my ticket number was 169153 though..... my heart </3
 
H

Homunculus

Guest
Apparently, structs are subject to "with" statements as well. Well, they were called "lightweight objects" earlier on for a reason, I guess?

For example, you can do:
GML:
var someStruct = {};
with (someStruct) {
    x = 123;
    y = 456;
    z = 789;
    test = function() {
        show_debug_message([x, y, z]);
    }
}
someStruct.test();
And then you get the struct with properly assigned values.

Sadly, it seems GML doesn't treat its assignments as expressions, so this won't work:
GML:
with (someStruct = {}) {
    // insert code here
}
Is this supposed to work in a stable release? I had no success at all so far using with and structs.
 

mimusic

Member
Super excited for these new changes!

Based on the number of my ticket, I have a feeling I was too late to the party to get into this first wave... hopefully the next wave comes soon though. Been learning a lot of things around data-oriented game design and ECS architecture, seems like these changes would let me really test some (if not all) of what I've been digging into. Current approach has used a whole lot of enums and array_create....
 

Zhanghua

Member
Super excited for these new changes!

Based on the number of my ticket, I have a feeling I was too late to the party to get into this first wave... hopefully the next wave comes soon though. Been learning a lot of things around data-oriented game design and ECS architecture, seems like these changes would let me really test some (if not all) of what I've been digging into. Current approach has used a whole lot of enums and array_create....
Yes, that's the right way.....before 2.3
 

xDGameStudios

GameMaker Staff
GameMaker Dev.
the problem is that I don't think they will send tickets during the weekend... so.. we will have to wait 2 more days :(
can we get the manual for at least start preparing some tutorials/assets?
 

gnysek

Member
Yep, lot will change, especially keeping data in arrays would be now easier, as you can put as many levels as you want in any of array rows, and you can write a[1][2][3][| 5][? "test"][# 7, 8]. That saves a lot of work.
 

hippyman

Member
RIP inheritance?
Not sure why you say this. lol

GML:
function parentClass(arg0) constructor
{
    a = arg0;
}

function childClass(arg0, arg1) : parentClass(arg0) constructor
{
    b = arg1;
}
c = new childClass(7, 6);
//c.a == 7
//c.b == 6
According to somebody on the discord something like the above is totally possible.





To the people who still haven't received theirs yet. I know this is easier said than done and I was literally just complaining about not having my invite either yet. But just remember the day is barely through. :)
 
A

altarar

Guest
Not sure why you say this. lol

GML:
function parentClass(arg0) constructor
{
    a = arg0;
}

function childClass(arg0, arg1) : parentClass(arg0) constructor
{
    b = arg1;
}
c = new childClass(7, 6);
//c.a == 7
//c.b == 6
According to somebody on the discord something like the above is totally possible.





To the people who still haven't received theirs yet. I know this is easier said than done and I was literally just complaining about not having my invite either yet. But just remember the day is barely through. :)
No problem in that case, however there is nothing about inheritance in the official post
 

Zhanghua

Member
View attachment 30433
I'M SORRY, BUT THIS IS THE BEST PART OF THIS UPDATE.
It did this by default, no #region/#endregion!
I'm so haaaappppyyyyy.
More detail

No problem in that case, however there is nothing about inheritance in the official post
full characteristic of OOP

I wouldn't be surprised as how long it took 2.3 to come out that 2.4 is already well into development. Those functions are looking mighty tasty.
And I'm brooking no delay for buying the GMS3.0 after the 2.4.999999999 :D
 

Alice

Darts addict
Forum Staff
Moderator
Is this supposed to work in a stable release? I had no success at all so far using with and structs.
It worked for the release I downloaded yesterday, so I guess it should?

Have you tried running this exact snippet I posted (e.g. somewhere in the script global scope)? It should output the correct array [123, 456, 789] in the console when executed.
 
H

Homunculus

Guest
Have you tried running this exact snippet I posted (e.g. somewhere in the script global scope)? It should output the correct array [123, 456, 789] in the console when executed.
I tried in the create event of an instance, and it does throw an error on someStruct.test() (or any other expression that tries to reference the struct variables or methods), as if the with clause had no effect at all.
 

Nocturne

Friendly Tyrant
Forum Staff
Admin
@Nocturne said he was going to try to take care of that... just hope we can get access to that manual at least :)
We're discussing updating the current online manual with all the new stuff... but it'll be Monday before it happens.

@Nocturne the "known issues" page seems not to work for me, they are assigned manually per user?
Not sure what link you mean. COuld you send it via PM to me please?
 

Nocturne

Friendly Tyrant
Forum Staff
Admin
Can we find instances by tag? Or is it just an asset thing?
Instances will have tags, but they will be the ones you assigned the OBJECT in the asset browser. So, you can call new functions to find all instances that have a specific tag, but (iirc) you can't assign a a new tag to a specific instance, only a specific object.
 

TsukaYuriko

☄️
Forum Staff
Moderator
There's a tag_get_asset_ids, so you can find all resources with a given tag. Filter this by objects and you have a list of all objects with a given tag. Iterate over all instances of these objects in the room and you have a list of all instances with the tag.
 
Very excited to try the beta! Tags are a special welcome surprise, so I can finally do actual object property kind of things. (Like tag flammable objects to have them burn).
Also nervous because I did a lot of custom data structures in my main project, and transitioning over might take a long time. But the end result will be so much more elegant!
 

MudbuG

Member
My ticket is #169304
I am anxiously waiting 6 feet behind that strange looking developer in front of me. It seems like there may be 300 or so people in line, its hard to see that far. If step out of line to use the restroom, will I lose my place?
I "applied" as soon as I got the email notice from announcements yesterday.
 

xDGameStudios

GameMaker Staff
GameMaker Dev.
I was thinking more about a “with” operation that could iterate over all instances with a given tag or given tags...
Or a function that would return the Ids of the instances with a given tag.

I know you can this by getting obj asset tag then using “with“ for each object populating a list and returning it to be iterated upon.. but this seems to be a lot of operations and probably heavy ones that why I asked if there was a built in way of getting the instances.
 

Cpaz

Member
Just got my confirmation this morning, can't wait to try the new stuff out!
Same here. I'll be installing it over lunch, but won't be able to toy with it for real until late this afternoon.

Ah the joys of working from home.
 

xDGameStudios

GameMaker Staff
GameMaker Dev.
Instances will have tags, but they will be the ones you assigned the OBJECT in the asset browser. So, you can call new functions to find all instances that have a specific tag, but (iirc) you can't assign a a new tag to a specific instance, only a specific object.

I was thinking more about a “with” operation that could iterate over all instances with a given tag or given tags...
Or a function that would return the Ids of the instances with a given tag.

I know you can this by getting obj asset tag then using “with“ for each object populating a list and returning it to be iterated upon.. but this seems to be a lot of operations and probably heavy ones that why I asked if there was a built in way of getting the instances.
 
D

Deleted member 45063

Guest
My ticket is #169304
I am anxiously waiting 6 feet behind that strange looking developer in front of me. It seems like there may be 300 or so people in line, its hard to see that far. If step out of line to use the restroom, will I lose my place?
I "applied" as soon as I got the email notice from announcements yesterday.
I only got mine around lunchtime today and I applied within 3 to 5 minutes of this thread being posted by Nocturne. My ID was 169043, so it seems like there was quite an influx of registrations happening on that initial time frame (as expected due to all the hype).
 

saffeine

Member
so far from looking at a handful of examples related to functions, i've noticed that the vast majority of them ( that come from actual hands-on experience with the beta ) include a constructor tag after the function name and parameters.
is this actually a requirement or can it be omitted due to preference?
i'm so used to declaring functions in other languages with just function functionName( param1 ){ } and as small as it is, it'd be a pain to get used to.

another question i have is if there's an ETA for a public release? i'm not in a huge rush to get my hands on it, but i've never been too involved with the beta cycles of studio, so i have no clue what the timeframes usually are between the closed beta, open beta, and final release ( provided things go smoothly, of course ).
keep up the hard work though, studio is shaping up to be incredibly powerful and pleasant to use!
 

Zhanghua

Member
Instances will have tags, but they will be the ones you assigned the OBJECT in the asset browser. So, you can call new functions to find all instances that have a specific tag, but (iirc) you can't assign a a new tag to a specific instance, only a specific object.
Although tag is read-only at runtime but that's an amazing group function like the godot or unity.
 

Nocturne

Friendly Tyrant
Forum Staff
Admin
so far from looking at a handful of examples related to functions, i've noticed that the vast majority of them ( that come from actual hands-on experience with the beta ) include a constructor tag after the function name and parameters.
The constructor keyword is only for functions that are going to be creating a struct. If you see it being used a lot it's because people are creating lots of structs... :) It isn't essential or necessary for any other reason.


another question i have is if there's an ETA for a public release? i'm not in a huge rush to get my hands on it, but i've never been too involved with the beta cycles of studio, so i have no clue what the timeframes usually are between the closed beta, open beta, and final release ( provided things go smoothly, of course ).
No, sorry. It all depends on how this public beta stage goes. If there are few bugs or issues, then it'll be sooner, but if people find anything major or even lots of minor things, then it'll be later.
 

saffeine

Member
“Constructor” will make a function into a struct you can instantiate using “new” keyword... if you omit it then it is just a function ;)
pfft, at first i couldn't figure out where that would be useful, and then once it occurred to me what a constructor is in other languages it made so much more sense.
thanks for clarification!

No, sorry. It all depends on how this public beta stage goes. If there are few bugs or issues, then it'll be sooner, but if people find anything major or even lots of minor things, then it'll be later.
sounds pretty much like what i expected. here's to hoping that the builds go smoothly and there are minimal issues along the way.
 
Last edited:

Yal

🐧 *penguin noises*
GMC Elder
and every row can have different height now
They've been able to for years. This code will give you an error in 1.4:
foo[20,30] = 0;
bar = foo[18,29]


Don't get too excited : it's indeed a beta and also a massive change. My 2.2 project rises over 800 errors in 2.3 beta.
I'm not even sure if some are bugs or change in gml, like
GML:
if (_image_speed > 0) ++ _image;    //doesn't work anymore

if (_image_speed > 0){ ++ _image;}    //works fine
Is this expected? Nothing was written in the GML change about that, but it might be a desired effect.
I'm surprised it worked in the first place, tbh :p Flow control exists for a reason...
 

Coercive

Member
View attachment 30433
I'M SORRY, BUT THIS IS THE BEST PART OF THIS UPDATE.
It did this by default, no #region/#endregion!
I'm so haaaappppyyyyy.
I had not noticed that until I read your post. Haha! That was such a minor thing that I hated so much. Glad to see they have changed it.

I'm in beta. Woot! Time to see how many horses this thing has under the hood.
 
Last edited:
Status
Not open for further replies.
Top