OFFICIAL GMS 2.3.0 BETA ANNOUNCEMENT

Status
Not open for further replies.

rmanthorp

GameMaker Staff
Admin
GameMaker Dev.
It really is a tricky balance and I fully appreciate everyone's enthusiasm and patience. I can not wait for it to go into totally open beta and I wish I could tell you more about when that will be but it all just depends on how the feedback goes as we add more and more users. It's been going well recently! 🤞
 
D

DigitalBird

Guest
It really is a tricky balance and I fully appreciate everyone's enthusiasm and patience. I can not wait for it to go into totally open beta and I wish I could tell you more about when that will be but it all just depends on how the feedback goes as we add more and more users. It's been going well recently! 🤞
Cheers for the update. Good to hear it's going well
 

firat

Member
Off the topic but what I miss from GMS 1 is add multiply same event to an object. I want more than one step events in my object.
 

FrostyCat

Redemption Seeker
Off the topic but what I miss from GMS 1 is add multiply same event to an object. I want more than one step events in my object.
That's what #region and #endregion are for.
The Manual said:
Apart from comments you can also use special #region tags to mark a section of code for Code Folding. How this works is that you add a #region tag (along with any comment text) to the top of a section of code and then add a corresponding #endregion tag to the bottom of the section and then you can "fold" the code, ie: hide it away so you can cut down on the number of lines of code visible in the editor at any one time:

Script Editor Code Regions
By the way, this is already available in stock GMS 2.2.5, no need to be in the open beta.
 
I wish I had the skill of @FrostyCat and @BPOutlaws_Jeff. I'd love to be able to code like that.
lol I'm super flattered! But I'm like a massive amateur & self-taught so I spend half my time looking like the "I have no idea what I'm doing" dog meme lol I'm always trying to get better though. I went through a phase earlier in the year where I was trying to obsessively overly-optimize every single line and reduce everything into as little code as possible like some amazing hacker pro "look at me I'm John Carmack" lol but then I went back to code like this a couple months later:
GML:
if ((ANIM_CUR == ANIM_LAST && ANIM_DONE)) {exit;}
ANIM_NUM_LOOPS -= ANIM_NUM_LOOPS > 0;
if (ANIM_CUR < ANIM_LAST && ANIM_DONE)
    {ANIM_CUR += ANIM_DONE - ANIM_LAST ? ANIM_CUR : ANIM_CUR;}
if (ANIM_NUM_LOOPS != 0) {scr_anim_play();}
//scr_anim_play(ANIM_CUR + (ANIM_CUR < ANIM_LAST));//force anim
...and was like ya I have literally NO idea wtf this does anymore and I had to spend an hour trying to decipher it and re-writing it out but expanded and step by step to try to follow my previous self's insanity all just to change some tiny thing lol

So now I'm trying to just write my code as clean and readable as possible. That's why I'm loving this struct stuff, getting rid of all that "///@arg _whatever var _whatever = argument3;" stuff and getting rid of bulky looking 2D arrays full of enums and being able to just use ".update()" on a dozen things instead of "scr_button_update()" "scr_player_update()" and "scr_anim_update()" etc looks so much cleaner and minimalist without being hard to understand when you just glance through it.

Also it's cool to see the pro level coders here getting to finally drop some of their wisdom bombs on us, I know they've been waiting for years for these kinds of features because other languages have them so us getting to see what kind of cool things they can show us that we can go apply with all this is awesome. Like @FrostyCat showing @Mool's code can be reduced even more to just direct calls on the last page...that stuff is eye-opening!

And on the subject of learning, I was experimenting with the imgui concept back when I was looking into efficient ways to make menus and I tried roughing out an understanding of how I could do an imgui with this new GML stuff and ended up with this general idea (again I'm sure the syntax is way off, I don't actually have the beta yet I'm just trying to get a head start learning):
GML:
//some gui Draw Event:
gui_x = 0;
gui_y = 0;
if (new Button(gui_x, gui_y, "File").is_pressed()) {
    if (new Button(gui_x, gui_y, "New" ).is_pressed()) {scr_new();}
    if (new Button(gui_x, gui_y, "Open").is_pressed()) {scr_open();}

    if (new Button(gui_x, gui_y, "Save").is_pressed()) {
        if (new Button(gui_x, gui_y, "Some other button").is_pressed()) {
            scr_save();
        }
    }

    if (new Button(gui_x, gui_y, "Quit").is_pressed()) {scr_quit();}
}

//--------------------------------------------------

function Button(_x1, _y1, _label) constructor {
    var _width  = 100,
        _height =  20;

    is_pressed = function() {
        var _is_pressed = update();//check for interaction
        draw();
        gui_y += _height;//next button will be beneath this one
        return _is_pressed;
    }

    update = function() {
        bg_color = c_white;

        //hovering
        if (point_in_rectangle(mouse_x, mouse_y, _x1, _y1, _x1 + _width, _y1 + _height)) {
            bg_color = hovering_color;

            //clicked
            if (mouse_check_button_pressed(mb_left)) {
                bg_color = clicked_color;
                return true;
            }
        }
    }

    draw = function() {
        draw_set_color(bg_color);
        draw_rectangle(_x1, _y1, _x1 + _width, _y1 + _height, false);

        draw_set_color(c_black);
        draw_text(_x1, _y1, _label);
    }
}
And that experiment got me wondering some quick questions for anyone who's more experienced:

1) Would the above be super slow because it's making all these "new Button" structs every step?

2) Would doing something with "static" fix that? It seems to be something to do with only doing things once but I don't understand exactly what it's for yet...

3) Would you need to delete the structs each step memory-wise, like is this making a million button structs in memory? lol

4) ...or is trying to use structs for an imgui a case of the right tool for the wrong job? Doing it with scripts was pretty straightforward and you get to just do "if (scr_button(x, y, "Label")) {}" instead of having to write "new" and call a function inside it to get it to do something, plus the potential memory/slowness issues I'm referring to in the above 3 questions lol This is more just an exercise in curiosity & learning.

Actually I guess if something just exists for one frame there's not really any point using a struct for it since you're just calling all the functions at once...might as well just use a script for that. A struct probably only makes sense if you need the thing to stick around hmm...so ya this might be the wrong tool for doing an imgui

5) Also can you do something like this in a struct where some actual code (not just assigning variables) is run only once upon creation of the struct:
GML:
function Button(_x1, _y1, _label) constructor {
    var _width  = 100,
        _height =  20;

    //would this block of code below that's not inside any function only run once
    //upon creation, removing the need for the ".is_pressed()" in the other version?:
    var _is_pressed = update();
    draw();
    gui_y += height;
    return _is_pressed;

    update = function() {return whatever;}
    draw   = function() {draw whatever;}
}
...or does a struct always need something external to call at LEAST one function inside it (and from there it can call its own other functions)?
 

FrostyCat

Redemption Seeker
And on the subject of learning, I was experimenting with the imgui concept back when I was looking into efficient ways to make menus and I tried roughing out an understanding of how I could do an imgui with this new GML stuff and ended up with this general idea (again I'm sure the syntax is way off, I don't actually have the beta yet I'm just trying to get a head start learning):
GML:
//some gui Draw Event:
gui_x = 0;
gui_y = 0;
if (new Button(gui_x, gui_y, "File").is_pressed()) {
if (new Button(gui_x, gui_y, "New" ).is_pressed()) {scr_new();}
if (new Button(gui_x, gui_y, "Open").is_pressed()) {scr_open();}

if (new Button(gui_x, gui_y, "Save").is_pressed()) {
if (new Button(gui_x, gui_y, "Some other button").is_pressed()) {
scr_save();
}
}

if (new Button(gui_x, gui_y, "Quit").is_pressed()) {scr_quit();}
}

//--------------------------------------------------

function Button(_x1, _y1, _label) constructor {
var _width = 100,
_height = 20;

is_pressed = function() {
var _is_pressed = update();//check for interaction
draw();
gui_y += _height;//next button will be beneath this one
return _is_pressed;
}

update = function() {
bg_color = c_white;

//hovering
if (point_in_rectangle(mouse_x, mouse_y, _x1, _y1, _x1 + _width, _y1 + _height)) {
bg_color = hovering_color;

//clicked
if (mouse_check_button_pressed(mb_left)) {
bg_color = clicked_color;
return true;
}
}
}

draw = function() {
draw_set_color(bg_color);
draw_rectangle(_x1, _y1, _x1 + _width, _y1 + _height, false);

draw_set_color(c_black);
draw_text(_x1, _y1, _label);
}
}
And that experiment got me wondering some quick questions for anyone who's more experienced:
There's a way to do it that makes questions 1-4 all irrelevant.

First set them up as instance variables in the Create event:
GML:
newButton = new Button(gui_x, gui_y, "New");
Then in the Step event call its click checks like this:
GML:
if (newButton.is_pressed())
Then in the Draw GUI event call its draw actions like this (which answers question 5):
GML:
newButton.draw();
Don't just think of the OOP additions as extra prefixes on scripts. Instead think of it as a way to make lightweight, independent entities with associated actions.
 

Miradur

Member
I waited over a year for sequences and now the beta has been there for almost two weeks and I still don't know what you can (or can't) do with it. But there is a lot of discussion here about who is the better programmer and who can best handle the new changes. I can't believe that in one year of development, no videos/tutorials have been created that can show what the changes really mean to us and where they will support us in the future. Btw, we probably won't get to see anything until the roadmap is updated :D

Miradur
 

FrostyCat

Redemption Seeker
I waited over a year for sequences and now the beta has been there for almost two weeks and I still don't know what you can (or can't) do with it. But there is a lot of discussion here about who is the better programmer and who can best handle the new changes. I can't believe that in one year of development, no videos/tutorials have been created that can show what the changes really mean to us and where they will support us in the future.
There is a link to this video playlist in the announcement showing you how sequences work.
 

kraifpatrik

(edited)
GameMaker Dev.
Do you often use hammers for cutting wood?
I have to side with @Zhanghua on this one. I wouldn't go as far to say "why even use 2.3, when arrays are faster than struct", but if performance is concern, I definitely wouldn't choose structs over arrays just because it seems more "right". I'm using arrays + enums right now in 2.2 to simulate 2.3 structs, but simply having 2.3 structs later on won't make me rewrite my library, if it would mean that instead of 60fps action I would get a powerpoint slideshow. There's just some stuff that has to run hundreds of times every single frame, and the new GML's OOP just isn't going to change the old ways of writing effective code, unless it improves a lot. If it doesn't, then arrays + enums will stay with us here.

Also, not everything that can be described as an object should be done so, just because the programming language allows you to do so. I can give you a simple example on that - graphs. Graphs consist of nodes and edges, those are 3 objects in total, plus you also need a data structure in which graph keep its nodes and for each node you need a list in which they keep their edges. In OOP, this may be easy to write and result into a simple and beautiful public API, but the data is scattered around in memory, there's multiple levels of indirection and additionally speed of your algorithms is affected by internal implementation of used data structures. A much more efficient representation of graphs (in both memory an speed), is a simple 2D array (which can be simulated with 1D array), where number of rows and columns is total number of nodes and a value on a row A and column B tells us whether there is an edge between node A and B. So talking about cutting wood, if graphs are the wood here, then OOP may be an axe, but data oriented programming is a freaking chainsaw.
 

Miradur

Member
Thx @FrostyCat, I already knew the videos and since you pointed them out to me, my worst fear is confirmed. So YoYo spent a year programming a GUI for the lerp function. Or am I missing something?


Miradur
 
H

Homunculus

Guest
Thx @FrostyCat, I already knew the videos and since you pointed them out to me, my worst fear is confirmed. So YoYo spent a year programming a GUI for the lerp function. Or am I missing something?


Miradur
All the other features that have been added? This is sarcasm, right?
 

Nocturne

Friendly Tyrant
Forum Staff
Admin
So YoYo spent a year programming a GUI for the lerp function. Or am I missing something?
Hmmm... I guess you didn't read the tech blogs linked in the announcement post...? And sorry, but your post is rather insulting to the devs... they have built a full-on animation editor from scratch and given you the power to use it in multiple ways within your games (amongst many other things). Please show a little respect for the incredibly hard working team behind GameMaker, even if you don't agree with their decisions. ;)
 
Thx @FrostyCat, I already knew the videos and since you pointed them out to me, my worst fear is confirmed. So YoYo spent a year programming a GUI for the lerp function. Or am I missing something?


Miradur
I honestly don't understand how that is what you got from the videos FrostyCat linked. They added a keyframe animator along with an entire new resource for it. And that's if you're ignoring the rest of the improvements, like completely rehauling the programming language, retooling the resource tree to make it easier to organize, and making source control more reasonable by improving GMS' project file structure.
 

TheMagician

Member
I have to admit that I was underwhelmed, too, when I saw the videos of the Sequence Editor. I guess part of the reason is that other engines have had features like that for a long time and that the shown examples are very simplistic - move a character from left to right, rotate a bat 306 degrees ...

However, when you read the manual you start to understand that there is more to sequences than meets the eye and that they can be quite versatile and will hopefully be expanded on in the future. I hope that Yoyo (or GMS YouTubers) will post tutorials on what is really possible with the system.
 

Miradur

Member
@Nocturne, I was only interested in sequences and so I exaggerated a bit, but I stick to it.
Currently it looks like a GUI for Lerp. Not more and not less. But I still have the hope that we will get to know the real meaning by the final date.

Miradur
 

FrostyCat

Redemption Seeker
I have to admit that I was underwhelmed, too, when I saw the videos of the Sequence Editor. I guess part of the reason is that other engines have had features like that for a long time and that the shown examples are very simplistic - move a character from left to right, rotate a bat 306 degrees ...
Currently it looks like a GUI for Lerp. Not more and not less.
It looks drab, flat and underwhelming because animation curves weren't covered in the videos, which is the key ingredient in turning the linear behaviour to non-linear. Right click on a parameter track and select "Convert to embedded anim curve". Pick something you want to play with on this page (easeInOutBack is a good starter), then double-click the parameter track and try your best to replicate the shape there (make sure it's the smooth curve type). Preview it and notice the difference.
 

Posh Indie

That Guy
@Nocturne, I was only interested in sequences and so I exaggerated a bit, but I stick to it.
Currently it looks like a GUI for Lerp. Not more and not less. But I still have the hope that we will get to know the real meaning by the final date.

Miradur
EDIT: For those of you wanting a sneak peak of the changes and features, here's a link to download the Beta manual:


Keep in mind, this is NOT THE FINAL DOCUMENTATION and features may still change or be added or removed. ;)

Just download the ZIP, unzip it somewhere, then run the "index.html" file. Enjoy!
@Miradur All your answers are there... For someone this invested in a single feature, I am shocked that you trashed the work of the developers before properly researching it and understanding it. Also, as @Nocturne noted, it is not the final documentation and subject to change (In any capacity), but should be sufficient enough to show that there is a lot more than a "Lerp GUI" happening.
 

TheMagician

Member
I think if they had shown a mech boss with moving parts completely animated via the Sequence Editor, using Broadcast Messages to fire off missiles, etc ... the power of this editor would have become clearer. But I also understand that this is only the beta release and no final promotional material has been released.

But just to be clear - I'm happy with what we are getting.
 

FrostyCat

Redemption Seeker
I think if they had shown a mech boss with moving parts completely animated via the Sequence Editor, using Broadcast Messages to fire off missiles, etc ... the power of this editor would have become clearer.
That actually isn't an ideal use case for the Sequence Editor. An in-game boss often takes the player's current position into account, and there is no real room for runtime-determined info like that in the current system. The current use case seems to be values that can be exactly planned in advance, things like cutscenes and fixed animations.

I actually have plans for deep-diving the Sequence Editor with some holiday photos to make an animated scrapbook, probably in June after the GMC Jam. It likely won't look all that good because graphics and video editing aren't my major suits, but aside from getting a specialist to use it, this is the extent to which I can demonstrate its power.
 

Posh Indie

That Guy
That actually isn't an ideal use case for the Sequence Editor. An in-game boss often takes the player's current position into account, and there is no real room for runtime-determined info like that in the current system. The current use case seems to be values that can be exactly planned in advance, things like cutscenes and fixed animations.

I actually have plans for deep-diving the Sequence Editor with some holiday photos to make an animated scrapbook, probably in June after the GMC Jam. It likely won't look all that good because graphics and video editing aren't my major suits, but aside from getting a specialist to use it, this is the extent to which I can demonstrate its power.
Download the documentation in the first post. Within the documentation, click "Index" (at the top), and then scroll down until you see "Sequence Events" and "Sequence Moments". I feel like you might be a little surprised!
 
S

Sybok

Guest
moderator himself is saying that we are small company and not capable of handling bug reports if everyone starts submitting one . that's why we are not going open beta.
Do you sit out the front of the Toyota head office banging the door demanding to own the 2021 model?
 

gnysek

Member
To all who criticize GMS2... IMHO, if you don't like GMS, there's so many other tools, some even free and open-source. If you like them, why not use them instead of GMS2? What? You get used to GMS2, and it's easier to make game in it? Seems it's no so bad then, or others also have their problems. GMS might have some things that we don't like, but the fact that we still use it (in my case - 17 years now!) is because others aren't perfect too. I know that YYG isn't always making what we think is the best, but the truth is, after so many days it's not easy to find a good competitor for GMS2 in 2d games league. You have either apps that aren't that user-friendly, or doesn't have so many exporters, or are more expensive, or just harder to learn. Even if they allow more in some aspects, most of people who still have GMS2 on their disk seem to be dissatisfied with other choices.
And with 2.3 changes... they just opened a big gate to new, future updates. Don't forget, that right after open beta they starts next stage of Sequence updates (there should be 2-3 waves of new features according to roadmap, except they already included some - I have no idea yet), and according to my "sources", even next beta release should have around 10+ new GML functions. They really changed the volume of updates and finally given a "fat" update.
GMS2 is like a life partner. Have it's bad sides, but still, I would not divorce with it, we know each other too much :D
 

kburkhart84

Firehammer Games
@gnysek has a really good point. The only things I can see other engines beating out GMS2 are on 2 very specific points: price, and raw power(more leaning into 3d here). As far as 2d(and 2d only), if you don't consider price, I can't find a better engine overall, with more or better features. There is simply too much good stuff to be had with GMS2 that either can't be found elsewhere, isn't done as well elsewhere, or is simply harder to do elsewhere. Some other engines have 2d really as a tack-on feature(similar to how GMS has always had 3d as a tack-on feature). And even with other engines where 2d is a first class citizen, it simply isn't as good as it is here, in terms of power and ease of use.
 

❤️×1

Member
I can't find a better engine overall, with more or better features
I wasn't planning on entering the engine war -which is quite off topic, honestly- but... GMS is a game engine with no built-in controller manager. We each stay with GMS2 for a lot of reason, but feature completion ain't one of them.
 

Anuj Raghav

Member
Do you sit out the front of the Toyota head office banging the door demanding to own the 2021 model?
Am glad that even though it took you whole day but you finally came up with something so relevant for community. but I don't blame you, You are new member so not your fault .
when even moderator gets offended by users posting their observation on the software they paid for , this is expected behavior from other users as well.
every other post moderator is mentioning ..its insulting ...its insulting for devs ….gone are the days when moderators use to explain things to make users understand things .Rather than telling users you are insulting the company and developers.
its as if you are welcome here on the forum only to write good things about yoyogames.
and last but not the least ...here comes the good old argument ..if you don't like it don't use it. Use other tools available . …..Sigh! you think we are not using other tools? . but does that takes away my right to comment on the software I paid for ? . even others can say that if "YOU" don't like criticism , just ignore it ...but no we don't say that, because unlike you, we consider its everyones right to express himself .
When Your selling point is that "We are least bad of the lot" , that sums it up .
Note to Myself : GMS2 is not a freeware and I did not get a free copy of it , so I have every right to ask things here no matter if its insulting to someone for no reason.
 

kburkhart84

Firehammer Games
I wasn't planning on entering the engine war -which is quite off topic, honestly- but... GMS is a game engine with no built-in controller manager. We each stay with GMS2 for a lot of reason, but feature completion ain't one of them.
If by controller manager you are referring to input system type stuff, then I 100% agree that it is indeed something that is missing. I believe they haven't made something in that regard just to keep things easier for new users, as GMS has always tried to be friendly for newer users but powerful enough for everybody. As far as input goes, that's why I have a nice input system I've coded(see signature) to fill that gap in. I'm actually working on converting the internals to use the new GMS2.3 features, and will be adding other features to the system as well.

No game engine has every single feature everybody will ever want. Remember that there are intangible features, like Ease of Use, Quality of Life, etc... that should be accounted for as well. We use what we like best.
 
S

Sybok

Guest
Am glad that even though it took you whole day but you finally came up with something so relevant for community. but I don't blame you, You are new member so not your fault.
Only a fool would correlate experience and knowledge with a mere join date on a forum.


Note to Myself : GMS2 is not a freeware and I did not get a free copy of it , so I have every right to ask things here no matter if its insulting to someone for no reason.
Yes, you have every right to ask things. What you don't have, however, is every right to expect. What is it that gives you the right to expect something that you don't have the right to have yet?
 

Anuj Raghav

Member
Only a fool would correlate experience and knowledge with a mere join date on a forum.




Yes, you have every right to ask things. What you don't have, however, is every right to expect. What is it that gives you the right to expect something that you don't have the right to have yet?
Kudos ! you are on right path to become next moderator.


as for correlation with join date, read the @kburkhart84 reply on controller system , i don't know about you but for me that is more constructive reply
 
S

Sybok

Guest
as for correlation with join date, read the @kburkhart84 reply on controller system , i don't know about you but for me that is more constructive reply
I very much agree with you. That is way more constructive than a user who is flooding the forum, entitled, demanding to be the next beta tester.

We get it. You want to play with 2.3. Now let it be...
 

Anuj Raghav

Member
I very much agree with you. That is way more constructive than a user who is flooding the forum, entitled, demanding to be the next beta tester.

We get it. You want to play with 2.3. Now let it be...
it maybe a wrong thing in your opinion , but I do think that I have a right to demand the software which is available for few here who paid as much as I did .
I don't find anything wrong in it , but even then I clearly mentioned way back in this forum that I leave it to wisdom of you guys and don't want to drag it further if you don't agree with my views . but you still preferred to ignore it and keep those things alive in this forum which are "irrelevant" by your own standards.
 
S

Sybok

Guest
it maybe a wrong thing in your opinion , but I do think that I have a right to demand the software which is available for few here who paid as much as I did .
Why? It's a closed beta. You have the right to nothing.

They are serving the requests in a first in first served basis, they have been very open about this.

If you prefer the "pay to win" model. Candy Crush Saga might be more your speed.
 

gnysek

Member
it maybe a wrong thing in your opinion , but I do think that I have a right to demand the software which is available for few here who paid as much as I did .
You can always re-read a license to be sure for what you paid https://www.yoyogames.com/legal/eula ;) I understand, that there may be criticism for many things, I also added my two cents several times, but by reading your posts I started to think that maybe you sold at least 8 wheels of your Mac Pro to get each GMS license, and they owe you now :)

I know that beta is a good time to complain about GMS2 in general, as it's more open to suggestions, but maybe instead of making a list what they made wrong in the past, try to help polish 2.3, and give opinions about it? it's better to concentrate our efforts on bringing at least those all new changes to us in best shape, instead of complaining about pace at which is made, as that's what we can't change, while we can impact in some way current changes. That's what's this beta is for.

I understand that some people aren't into beta yet and gets angry, but nobody stolen anything from you, don't be so offensive. All will be soon available to everyone, and beta will be long enough - in my opinion it will lasts (including future public beta) at least until late June.
 

Anuj Raghav

Member
Ok Guys you win , I cant keep on arguing like this . will not post anything further .
just a quote from GB shaw- "I learned long ago, never to wrestle with a pig. You get dirty, and besides, the pig likes it."
anyways thank you for all that feedback , I am done .
happy coding!
 

Zhanghua

Member
You can always re-read a license to be sure for what you paid https://www.yoyogames.com/legal/eula ;) I understand, that there may be criticism for many things, I also added my two cents several times, but by reading your posts I started to think that maybe you sold at least 8 wheels of your Mac Pro to get each GMS license, and they owe you now :)

I know that beta is a good time to complain about GMS2 in general, as it's more open to suggestions, but maybe instead of making a list what they made wrong in the past, try to help polish 2.3, and give opinions about it? it's better to concentrate our efforts on bringing at least those all new changes to us in best shape, instead of complaining about pace at which is made, as that's what we can't change, while we can impact in some way current changes. That's what's this beta is for.

I understand that some people aren't into beta yet and gets angry, but nobody stolen anything from you, don't be so offensive. All will be soon available to everyone, and beta will be long enough - in my opinion it will lasts (including future public beta) at least until late June.
This reply is a classic, we all have a contact, AHA.
 
S

Sybok

Guest
Ok Guys you win , I cant keep on arguing like this . will not post anything further .
just a quote from GB shaw- "I learned long ago, never to wrestle with a pig. You get dirty, and besides, the pig likes it."
anyways thank you for all that feedback , I am done .
happy coding!
There is a similar one about playing chess with pigeons. Your posts fit that one perfectly. I'm glad you came to your senses before 'strutting all over the place'.
 
D

DigitalBird

Guest
I can see why you fellas might take issue with Anuj's tone which is fair, but I don't think it's unreasonable to have expectations. This update is 6 months overdue (No fault of the devs, just a an error in mismanaging expectations).
I think it's more complicated than Sybok's Toyota 2021 analogy. I probably would be banging on Toyota's door if: 1) I had a Toyota subscription or 2) I made a one time payment but had the expectation that my Toyota was going to be updated as the industry evolves. *Edit: before coming at me too hard though Sybok, please note that I am just a lowly new member too ;)

Overall though, I do agree with Gnysek the most, GMS2 is the best software for 2d and has an amazing team.

A weird side effect of this amazing GML update incoming, is that I can't be motivated to work on the coding side of my game, knowing that there will be a better way of doing things coming shortly :p. I've had to move onto just focussing on art.
 
S

Sybok

Guest
I'd agree if it were a case of 2.3 having been released and they were withholding the upgrade to him. But the fact is, it's not been released yet.

He'd be the first to cry foul if his Toyota was handed to him before time and it drove off into a wall.

If he had a contract with YYG to say that he will get a major update on the first of every year, then yes, he can get angry.

YYG are under no obligation to release anything on a set timeline. No obligation to release major updates at all for that matter.

I just struggle to comprehend why people automatically think they are entitled to what is essentially a WIP build.
 
Last edited by a moderator:

kburkhart84

Firehammer Games
A weird side effect of this amazing GML update incoming, is that I can't be motivated to work on the coding side of my game, knowing that there will be a better way of doing things coming shortly :p. I've had to move onto just focussing on art.
LOL, I was lucky and got into the beta. I'm also unwilling to code the old way so part of my testing of 2.3 is both porting my stuff and coding my new stuff with it.
 
D

DigitalBird

Guest
LOL, I was lucky and got into the beta. I'm also unwilling to code the old way so part of my testing of 2.3 is both porting my stuff and coding my new stuff with it.
Yeah definitely jealous haha. I'm in the 700 thousands so I will be awaiting open beta.
 

kburkhart84

Firehammer Games
So I was messing around with converting my input system to this beta, switching to using structs, etc... and I got hit with the asset browser being corrupt and not showing the resources, despite you being able to run things like normal, and find the resources using ctrl-t. I saw somewhere(in a Discord I think) that it was doing this due to spaces in the group names, but I didn't have any. So, I'm not upset(I didn't do that much work and I know well that this is beta).

That said, if you do anything you'd like to use after the fact, make sure you are consistently saving, backing up, etc... Even its a beta, you don't want to lose work if you are doing testing while upgrading your assets, etc...
 

Zhanghua

Member
C++:
#include<vector>
using namespace std;

class IContext {
public:
    virtual ~IContext()=0;
};

class ICondition {
public:
    virtual bool VAL()=0;
    virtual ~ICondition()=0;
};

class IConditionEle:public ICondition {
private:
    IContext* m_pCtx = NULL;
    bool m_bCheckVal = false;
    bool m_bTrigUpgate = true;
public:
    virtual ~IConditionEle()=0;
    virtual bool Check()=0;
public:
    IConditionEle(IContext *pCtx) {
        m_pCtx = pCtx;
    }

    virtual bool VAL() override {
        if(m_bTrigUpgate) {
            m_bCheckVal=Check();
            m_bTrigUpgate=false;
        }
        return m_bCheckVal;
    }

    void Reset() {
        m_bTrigUpgate=true;
    }
};

class IConditions:public ICondition {
protected:
    vector<ICondition*> m_vEles;
    vector<bool> m_vChks;
public:
    virtual ~IConditions()=0;
    void pushCondition(ICondition* ele, bool val) {
        m_vEles.push_back(ele);
        m_vChks.push_back(val);
    }
};

class ConditionsAND:public IConditions {
    virtual bool VAL() override {
        bool bRet = true;
        for(int c=0; c<m_vEles.size(); c++) {
            if( m_vChks.at(c) != m_vEles.at(c)->VAL()) {
                bRet=false;
                break;
            }
        }
        return bRet;
    }
};

class ConditionsOR:public IConditions {
    virtual bool VAL() override {
        bool bRet = false;
        for(int c=0; c<m_vEles.size(); c++) {
            if( m_vChks.at(c) == m_vEles.at(c)->VAL()) {
                bRet=true;
                break;
            }
        }
        return bRet;
    }
};
I want to known whether the new gml can implement this demo of Conditional Interfaces.
 

XanthorXIII

Member
I'm just bitter I didn't get in as of yet since I'm a first day sign up. With that being said, the developers behind GameMaker have been fantastic. I honestly don't know of a Game Engine that allows me to build a game as fast as GameMaker can. I've done two Holiday Games, Christmas and Halloween and both in Two Weeks which were fun to build. I work a full time job that can eat up my evenings if something there goes wrong so my time was limited for those two. There are only really two things that I think YoYo needs to work on, Being Overly Secretive and engaging the community more. We've seen improvement, but there are some things they can do to bolster this. For example, why not a Twitch or Youtube Livestream with someone from YoYo building a simple game, say with FriendlyCosmonaut? Just those kind of things would be nice to see happening.
 
Last edited:

xDGameStudios

GameMaker Staff
GameMaker Dev.
I have to side with @Zhanghua on this one. I wouldn't go as far to say "why even use 2.3, when arrays are faster than struct", but if performance is concern, I definitely wouldn't choose structs over arrays just because it seems more "right". I'm using arrays + enums right now in 2.2 to simulate 2.3 structs, but simply having 2.3 structs later on won't make me rewrite my library, if it would mean that instead of 60fps action I would get a powerpoint slideshow. There's just some stuff that has to run hundreds of times every single frame, and the new GML's OOP just isn't going to change the old ways of writing effective code, unless it improves a lot. If it doesn't, then arrays + enums will stay with us here.

Also, not everything that can be described as an object should be done so, just because the programming language allows you to do so. I can give you a simple example on that - graphs. Graphs consist of nodes and edges, those are 3 objects in total, plus you also need a data structure in which graph keep its nodes and for each node you need a list in which they keep their edges. In OOP, this may be easy to write and result into a simple and beautiful public API, but the data is scattered around in memory, there's multiple levels of indirection and additionally speed of your algorithms is affected by internal implementation of used data structures. A much more efficient representation of graphs (in both memory an speed), is a simple 2D array (which can be simulated with 1D array), where number of rows and columns is total number of nodes and a value on a row A and column B tells us whether there is an edge between node A and B. So talking about cutting wood, if graphs are the wood here, then OOP may be an axe, but data oriented programming is a freaking chainsaw.
@kraifpatrik I've read your topic and suddenly it came to my mind that you might be the right person to ask a few things about graphs I have some questions and needed some help ;) would you mind private message me or tell me a way of how can I contact you privately (discord.. whatever)? thank you
 
Status
Not open for further replies.
Top