• 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 GMS2 Version 2.3.1 (Beta Release)

Status
Not open for further replies.

gnysek

Member
Let's not forget about GM's headless mode only being documented as a side note to an obscure drawing mode function when it deserves its own page...
Few days ago I wanted to point out that they still didn't made it, as that would be useful for linux game-servers (VPNs aren't that expensive nowadays), and now you're telling me, that this exists for a long time?! Nice... I would really want to get more info about it :D
 

kupo15

Member
Im excited to find out that now I can compile 64bit. I wonder if I can do games for raspberry pi with this. I could build up my own arcade box finally. lol me just dreaming big ... ^^'
Are exports for the pi an option now with this new version? I've always thought perhaps getting a pi would be the perfect little cpu to have as a dedicated server for making mobile apps for phones to interact with instead of using a full cpu or spending money on a service unless I'm mistaken about this
 

O.Stogden

Member
Are exports for the pi an option now with this new version? I've always thought perhaps getting a pi would be the perfect little cpu to have as a dedicated server for making mobile apps for phones to interact with instead of using a full cpu or spending money on a service unless I'm mistaken about this
It is an option yes, 2.3.1 adds ARM support for the Linux export, and RPi uses an ARM CPU, and Linux as an operating system, generally.

No idea on performance, but games exported under Ubuntu ARM export should at least boot on the RPi now.

The downside being single-core performance is weak on an RPi, and GM apps can only use 1 core, it wouldn't take advantage of the 4 cores the RPi has, which it relies on.
 

Tornado

Member
I'm on the latest GMS2 Beta: IDE v23.1.1.214, runtime v23.1.1.212.
When I create an extension, in the "extensions" folder the folders "AndroidSource" and "iOSSource", etc... are NOT created!!! Therefore it is also not possible to add any source files via "Add Source" button!
As a workaround to be able to test some extensions stuff I used GMS 2.2.5 to create a test project, then I created an extension there and then I converted the project to GMS 2.3.1.

But for the main project I cannot do that because it is already on 2.3.1. So I can't create any extension in 2.3.1.
I reported the bug to Yoyo.

Does someone know any workaround for this? (except trying to manually edit yy file)
 
Last edited:

chirpy

Member
Hey, so I'm trying out 2.3.1 beta and got confused about this ds_*_read issue. Is it that the _write format had changed in 2.3, and therefore there's the "legacy" option in _read?
If so, isn't there supposed to be a _write(.. legacy) counterpart? Otherwise we wouldn't be able to handle backward compatibility silently, no?

The scenario I'm facing is that I have cloud saves for users to play across devices, so device A may have the updated game, using new save format.
Device B then may not be up-to-date, but it needs to access the cloud-synchronized save file.
However, now device A cannot possibly write anything that device B's old version game can _read.
If there's this _write(legacy) option, I'd at least be able to write two save sections, that the player won't notice even if device A is using the (only slightly) older version.

I understand that this is kinda a weird corner case, and I should probably try to force players to update the game when there's a save format change.
Anyway, I'd probably just migrate to JSON using 2.2.5 .. :-\
 

Zhanghua

Member
It is an option yes, 2.3.1 adds ARM support for the Linux export, and RPi uses an ARM CPU, and Linux as an operating system, generally.

No idea on performance, but games exported under Ubuntu ARM export should at least boot on the RPi now.

The downside being single-core performance is weak on an RPi, and GM apps can only use 1 core, it wouldn't take advantage of the 4 cores the RPi has, which it relies on.
I run the BIN on pi, but the log shows me that "error while loading shared libraries: libXxf86vm.so.1: cannot open shared object file: No such file or directory".
It's on the Ubuntu X86 version, so how can I change to the arm architecture?
TKS


---------------------------------------------------------
And I always get the error when use yyc or vm:
Renci.SshNet.Common.ScpException: scp: /home/pi/GameMakerStudio2/yyc/TEST/TEST: No such file or directory
 
Last edited:
Let's not forget about GM's headless mode only being documented as a side note to an obscure drawing mode function when it deserves its own page...

View attachment 35358
I literally read that entry yesterday when Nocturne posted a semi-unrelated link to it and I was like "...Wtf, that exists? That's a pretty important thing that this function does only in relation to the execution order and it's not mentioned at all outside of this one little side note in an obscure function".
 

Zhanghua

Member
I build the yyc version test on RaspberryPi without Desktop Show.
And I use the "draw_enable_drawevent(false)" for no UI.

PS: I use the SecureCRT for SSH2 connect.

But it recommend me this:
***************************************
* YoYo Games Linux Runner V1.3 *
***************************************
CommandLine: -game game.unx
ExeName= /home/pi/GameMakerStudio2/yyc/TEST/TEST
MemoryManager allocated: 27532
INI DisplayName=Created with GameMaker Studio 2
SavePrePend /root/.config/TEST/
GAMEPAD: Initialising Ubuntu support
Attempting to set gamepadcount to 32
Cannot open X Display
 

clee2005

Member
Hey, so I'm trying out 2.3.1 beta and got confused about this ds_*_read issue. Is it that the _write format had changed in 2.3, and therefore there's the "legacy" option in _read?
If so, isn't there supposed to be a _write(.. legacy) counterpart? Otherwise we wouldn't be able to handle backward compatibility silently, no?
@Tornado had pointed out the single letter difference between 2.2.5 and 2.3.1 ds_grid_write was just A and B at the beginning of the output string. It seems to be the same with ds_list_write :

GML:
2.3.1
s = "2F01000004000000010000000700000054657374696E67000000000000000000C05E40010000000A00000054657374506C65617365000000000000000000807C40"

2.2.5
s = "2E01000004000000010000000700000054657374696E67000000000000000000C05E40010000000A00000054657374506C65617365000000000000000000807C40"
Just the E for 2.2.5 and F for 2.3.1 at the beginning. May not be a great idea, but you could just change that letter before saving in the 2.3.1 format. Then it would be readable for those on 2.2.5 versions, and still readable for the 2.3.1 versions since it's able to be backward compatible.

I think going all json is a great idea, and I'm going this way as well given these issues that we're seeing currently with this format change.
 

clee2005

Member
@clee2005: This bug is fixed in the latest beta and data can be read again normally. (at least for ds_grid_read)
Yes, you can read it in 2.3.1 now, but I think @chirpy is talking about older versions of his games created on 2.2.5 and older reading output saved from 2.3.1. Which I just tested and confirmed for our games which do the same thing (cloud saves allowing other devices to access saved ds_list strings from other versions).
 

clee2005

Member
Anyone try to do a custom handler for iOS and Android using exception_unhandled_handler ? When I tried to present the error in a show_message_async or an Android AlertDialog (extension) the game just ended and nothing was seen. All the rest of the code in the handler fired though. I think it's because there is no blocking dialogs allowed and so that event code just executes and then terminates the app. Would be nice to be able to present a dialog that shows something before just closing down. It works as expected on Windows, just not on mobile.
 

Lukan

Gay Wizard Freak
I'm noticing the latest beta seems more stable than the previous full release.
I could not get Homestead to run in VM mode at all in 2.3.0. It just closed with no errors and the debugger never showed anything wrong happening.
Not sure what has changed under the hood so far, but I've begun the porting from 2.2 to 2.3 with the latest beta. (I know it's frowned upon to do so, but I can't use the stable)
Thanks for listening to me ramble. <3
 

gnysek

Member
it's not mentioned at all outside of this one
And we even can't ask Nocturne to update manual, as he left YYG at end of October. There will be someone new now, but I have no idea who, and also that person might be not as open to discuss as Nocturne was.
 

clee2005

Member
Would be nice if the project file didn't autosave upon opening - or if there was an option to turn that off. I'm finding that simply opening a project causes it to resave sometimes... and that is forcing me to go to a backup of the project file when it happens I'm on another machine and some files haven't sync'd from Dropbox yet. GMS2 complains and then alters the project and saves it. Before I could just close the project and reopen it without consequence.
 

gnysek

Member
Would be nice if the project file didn't autosave upon opening - or if there was an option to turn that off. I'm finding that simply opening a project causes it to resave sometimes... and that is forcing me to go to a backup of the project file when it happens I'm on another machine and some files haven't sync'd from Dropbox yet. GMS2 complains and then alters the project and saves it. Before I could just close the project and reopen it without consequence.
1) never use dropbox or gdrive as working directory, as those aren't version control systems - use git for it (you can use git outside of IDE too, if you don't like how YYG integrated it). Same issue will happen for all multi-file projects, not only for game maker ones.
2) it must save after load, as there might be file format changes, so it converts to new version - otherwise changing something externally would break project
 

clee2005

Member
1) never use dropbox or gdrive as working directory, as those aren't version control systems - use git for it (you can use git outside of IDE too, if you don't like how YYG integrated it). Same issue will happen for all multi-file projects, not only for game maker ones.
2) it must save after load, as there might be file format changes, so it converts to new version - otherwise changing something externally would break project
I should have put a note on my posting that I'm not worried about Dropbox, been using it and Git for years. It works perfectly and very conveniently for both my Macs and PC's.
 
This is an excellent update, thanks again everyone at YoYo!

I've been playing around with the weak references and I'm not entirely sure if I've run into a bug or not, so I have a quick question:

GML:
/// @description sprite
/// @param _sprite_index {int}
/// @param _sprite_frame {int}
/// @param _x
/// @param _y
function sprite(_sprite_index, _sprite_frame, _x, _y) constructor
{
    sprite_index = _sprite_index;
    image_index = _sprite_frame;
    x = _x;
    y = _y;
    #region Functions
        function step()
        {
            x = mouse_x;
            y = mouse_y;
        }
        function draw()
        {
            draw_sprite(sprite_index, image_index, x, y);
        }
    #endregion
    sprite_list_master_add(weak_ref_create(self));
}

/// @description sprite_list_master_step
function sprite_list_master_step()
{
    var _i;
    var _list;
    var _list_size;
    var _list_sprite;
    
    with (obj_manager_game)
    {
        _list = sprite_list_master_get();
        _list_size = sprite_list_master_size_get();
        
        for (_i = 0; _i < _list_size; ++_i)
        {
            _list_sprite = sprite_list_master_index_get(_i);
            if weak_ref_alive(_list_sprite)
            {
                with (_list_sprite)
                    step();
            }
            else
            {
                ds_list_delete(_list, _i);
            }
        }
    }
}
I have a ds_list that I use for drawing sprite structs. When I create a sprite_struct it adds a weak ref of itself to the list, and when I call that weak ref from the list it does reference the struct (if it currently exists), and I can even print the weak ref with show_debug_message and see all of its info and functions, but when I try to run one of the functions it throws an error?
 

gnysek

Member
Above code is missing the part where you sets weak ref, and error iself, so it's hard to tell what crashes.
 
Above code is missing the part where you sets weak ref, and error iself, so it's hard to tell what crashes.
My bad!

At the bottom of the sprite struct I do this:
GML:
sprite_list_master_add(weak_ref_create(self));
and this part works, it does add itself to the list.

The error I get is:
############################################################################################
ERROR in
action number 1
of Step Event0
for object obj_manager_game:

Variable <unknown_object>.step(100028, -2147483648) not set before reading it.
at gml_Script_sprite_list_master_step (line 77) - step();
############################################################################################
gml_Script_sprite_list_master_step (line 77)
gml_Object_obj_manager_game_Step_0 (line 3) - sprite_list_master_step();

It seems like even though it returns the sprite struct it isn't treating it as the sprite struct, so it can't find the step function I put in it. I don't know if I found a bug or if I'm not using this correctly.
 

Mool

Member
Will there be a date, when this version will be relased? I am thinking about using the beta to update my game. Not sure if it is clever
 

kupo15

Member
It is an option yes, 2.3.1 adds ARM support for the Linux export, and RPi uses an ARM CPU, and Linux as an operating system, generally.

No idea on performance, but games exported under Ubuntu ARM export should at least boot on the RPi now.

The downside being single-core performance is weak on an RPi, and GM apps can only use 1 core, it wouldn't take advantage of the 4 cores the RPi has, which it relies on.
That's great to hear! I might need to get myself a pi and learn more about it!

And when you say linux export, does this mean windows can export things for anything apple? Like ios perhaps without needing to go through the apple store? Somehow I doubt that but the Linux part got me curious.

Will there be a date, when this version will be relased? I am thinking about using the beta to update my game. Not sure if it is clever
I really hope its soon! I can hold out and still develop but there are updates to it that I want and I'm afraid for my other more serious projects of using the beta channel. This one project of mine Im not too worried about but I think I have to wait until stable to make sure beta versions don't leak into other projects I don't want it in
 

O.Stogden

Member
That's great to hear! I might need to get myself a pi and learn more about it!

And when you say linux export, does this mean windows can export things for anything apple? Like ios perhaps without needing to go through the apple store? Somehow I doubt that but the Linux part got me curious.


I really hope its soon! I can hold out and still develop but there are updates to it that I want and I'm afraid for my other more serious projects of using the beta channel. This one project of mine Im not too worried about but I think I have to wait until stable to make sure beta versions don't leak into other projects I don't want it in
Linux has always been a part of GMS, this just means you can put it on ARM Linux devices, not just x86. ARM is another sort of CPU architecture. PC's and Laptops use x86, phones, tablets and smaller electronics (Raspberry Pi, Switch, 3DS) use ARM. Raspberry Pi is one of the main ARM devices to run on Linux though.

iOS and Mac OS X are not Linux OS's. Things like Ubuntu, Debian etc. are Linux. So it won't have any affect on Apple's products I'm afraid. You still need to own a Mac to export to Mac, and a Mac and an iOS device to export to iOS.
 
S

Sam (Deleted User)

Guest
Let's not forget about GM's headless mode only being documented as a side note to an obscure drawing mode function when it deserves its own page...

View attachment 35358
that existed for a while now. I found out it did that by accident, without reading the docs on it. XD
 

kupo15

Member
Linux has always been a part of GMS, this just means you can put it on ARM Linux devices, not just x86. ARM is another sort of CPU architecture. PC's and Laptops use x86, phones, tablets and smaller electronics (Raspberry Pi, Switch, 3DS) use ARM. Raspberry Pi is one of the main ARM devices to run on Linux though.

iOS and Mac OS X are not Linux OS's. Things like Ubuntu, Debian etc. are Linux. So it won't have any affect on Apple's products I'm afraid. You still need to own a Mac to export to Mac, and a Mac and an iOS device to export to iOS.
Ahh got it. Thanks for the clarification and information! I guess unless I buy a mac and have access to ios that way, the best I can do for integrating android and ios users together is to use html or ios users maybe. Or even for standalone apps I guess html is the only way to have them use the app...unless of course...they somehow can't open that export either. And/or unless html export can't save ini or buffer files? Im pretty sure they can save and load data otherwise that'd be a pretty useless export for me
 
S

Sam (Deleted User)

Guest
@Dan sorry to ping you but just for clarity the PinePhone and PineBook Pro (or all pine64 products) are aarch64 architecture, I don't know why I said arm64. I'm not sure if there is any difference, I don't know much more than my pine book pro is aarch64 and it has "ARM" on the desktop background, so I assume that would imply aarch64 is some kind of arm lol
 

chamaeleon

Member
Ahh got it. Thanks for the clarification and information! I guess unless I buy a mac and have access to ios that way, the best I can do for integrating android and ios users together is to use html or ios users maybe. Or even for standalone apps I guess html is the only way to have them use the app...unless of course...they somehow can't open that export either. And/or unless html export can't save ini or buffer files? Im pretty sure they can save and load data otherwise that'd be a pretty useless export for me
The HTML export is just exporting a webpage essentially that you host on a server of your choice. I think it's safe to assume most devices these days can load webpages (with the small compatibility issues that may exist due to differences in browser implementations by the different vendors). It is also very safe to assume that the HTML export generating a game that runs in a webpage will also strictly adhere to all limitations the browser on the platform in question may have. Don't expect local file access, don't expect to be able to make raw TCP or UDP network connections to arbitrary IPs, etc. Read documentation on functions you may care to use, like file functions, to check what caveats apply to the HTML platform.
 

O.Stogden

Member
@Dan sorry to ping you but just for clarity the PinePhone and PineBook Pro (or all pine64 products) are aarch64 architecture, I don't know why I said arm64. I'm not sure if there is any difference, I don't know much more than my pine book pro is aarch64 and it has "ARM" on the desktop background, so I assume that would imply aarch64 is some kind of arm lol
AArch64 is the 64-bit part of ARM.

Generally ARMv7 was 32-bit and ARMv8 became 64-bit.

However there was a 32-bit version of ARMv8, so AAarch32/64 is just an easier way of describing what is 32 and 64-bit ARM, instead of just using v6, v7, v8 etc. As v8 could be both 32 and 64 bit.

So yes, your Pine devices should run things compiled with GM in the Ubuntu ARM export (as the export is ARM 64-bit).
 
My bad!

At the bottom of the sprite struct I do this:
GML:
sprite_list_master_add(weak_ref_create(self));
and this part works, it does add itself to the list.

The error I get is:
############################################################################################
ERROR in
action number 1
of Step Event0
for object obj_manager_game:

Variable <unknown_object>.step(100028, -2147483648) not set before reading it.
at gml_Script_sprite_list_master_step (line 77) - step();
############################################################################################
gml_Script_sprite_list_master_step (line 77)
gml_Object_obj_manager_game_Step_0 (line 3) - sprite_list_master_step();

It seems like even though it returns the sprite struct it isn't treating it as the sprite struct, so it can't find the step function I put in it. I don't know if I found a bug or if I'm not using this correctly.
My apologies for bumping but I actually solved my own problem; if you want to directly reference the struct contained in a weak ref, you want to basically do something like:

return variable.ref;

I only thought to try this because I noticed it when using show_debug_message, it isn't in the manual at all for some reason? But hey, this will be incredibly helpful for my data structure lists I've been making!
 

xDGameStudios

GameMaker Staff
GameMaker Dev.
My apologies for bumping but I actually solved my own problem; if you want to directly reference the struct contained in a weak ref, you want to basically do something like:

return variable.ref;

I only thought to try this because I noticed it when using show_debug_message, it isn't in the manual at all for some reason? But hey, this will be incredibly helpful for my data structure lists I've been making!
It IS in the manual ;)

Captura de ecrã 2020-11-03, às 17.32.11.png


"Also note that the weak reference struct will have a variables "ref" which can...."
 

breakmt

Member
Anybody knows how to solve "Core Resources : Info - Blank IdReference found - could be that the project is corrupt." error? I still have this issue in beta and can't find how to fix it.
 

clee2005

Member
Our .apk files are all about 10megs larger from the 2.2.5 builds. I think maybe it's the splash screen images? Still 10megs seems like a big jump from what was only 47megs previously. Can anyone verify that there needs to be that much additional content in the .apk? Perhaps it's packing more than it needs?
 

brian

Member
Hey @Dan , don't know if you can comment on this at all - but I guess worth a shot!

Loving the new features (especially new export options) that are in this. @Yal earlier in the thread mentioned GM's "secret" headless mode through calling
GML:
draw_enable_drawevent(false)
. My initial thought (which turned out to be correct) is that the runner / compiled version of projects would still search for graphical dependencies / make calls that would make executables incompatible with certain platforms that might be useful in tandem with this, like Ubuntu Server.

Is there any chance that in the future, certain targets might be able to have those checks removed, or is it just too ingrained in the way that GMS2 executables are built?
 

Zhanghua

Member
Hey @Dan , don't know if you can comment on this at all - but I guess worth a shot!

Loving the new features (especially new export options) that are in this. @Yal earlier in the thread mentioned GM's "secret" headless mode through calling
GML:
draw_enable_drawevent(false)
. My initial thought (which turned out to be correct) is that the runner / compiled version of projects would still search for graphical dependencies / make calls that would make executables incompatible with certain platforms that might be useful in tandem with this, like Ubuntu Server.

Is there any chance that in the future, certain targets might be able to have those checks removed, or is it just too ingrained in the way that GMS2 executables are built?
It needs Xdisplay yet.
So you cant implement the server on non-gui machine.
 

brian

Member
Hey @Zhanghua , that's exactly what my comment is asking about - I'm aware of that limitation and asking if there's a possibility in the future for it to be removed under certain circumstances, or if it's too integral to the way they package / compile GM executables as it is.
 

Slyddar

Member
Beta 4: (04/11/2020) IDE 224, Runtime 222 just released
Anyone else having problems running in Debug mode on this version? It starts, but on a breakpoint, there is no option in the IDE to step through, and the debugger window shows no code. Pressing F5 resumes the game, but running game_restart() will crash the runner.
 

Zhanghua

Member
Hey @Zhanghua , that's exactly what my comment is asking about - I'm aware of that limitation and asking if there's a possibility in the future for it to be removed under certain circumstances, or if it's too integral to the way they package / compile GM executables as it is.
I think it needs some IDE checkbox for this, while not the runtime....
It's a bit of tough.....
 
S

Sam (Deleted User)

Guest
Did anyone else have / find a work around for the beta not installing on macOS due to an error with the mono runtimes?
 
S

Sam (Deleted User)

Guest
Well I am on macOS and I'm not having problems at all.
Interesting. I am on macOS Catalina, are you using an older version by any chance? I noticed the Mono runtime is packaged as a universal bundle, which is deprecated due to 32 bit compatibility has ended.
 
S

Sam (Deleted User)

Guest
These steps, when followed exactly as stated, seem to work for me:
Step 1: Use a Windows PC.
Yes, I should totally distro hop for getting what should normally be the complete mac-only experience. :p

What about people who don't want to buy or use shovelware like Windows? I may own Windows personally, but there are a lot of users left out in the cold because they are more loyal to apple than I am.

I do get in the broad sense as far as marketshare your humor is pretty funny, but try to keep in mind just because something is accepted by a majority like Windows, much like committing suicide is more popular way to die than getting in a car crash, doesn't make it a good thing.

If we are to discuss platform preferences more in depth we can make a topic for that I guess.
 
Last edited by a moderator:

Posh Indie

That Guy
Yes, I should totally distro hop for getting what should normally be the complete mac-only experience. :p

What about people who don't want to buy or use shovelware like Windows? I may own Windows personally, but there are a lot of users left out in the cold because they are more loyal to apple than I am.

I do get in the broad sense as far as marketshare your humor is pretty funny, but try to keep in mind just because something is accepted by a majority like Windows, much like committing suicide is more popular way to die than getting in a car crash, doesn't make it a good thing.

If we are to discuss platform preferences more in depth we can make a topic for that I guess.
Step 2: Take a deep breath. Step 1 was a joke.
 
Last edited:

8BitWarrior

Member
Is anyone having success with local asset packages in the latest beta? I'm getting errors when trying to import assets. I also tried uploading to the marketplace and downloaded the packaged version from there to see if that worked, but no dice.
 
S

Sam (Deleted User)

Guest
Is anyone having success with local asset packages in the latest beta? I'm getting errors when trying to import assets. I also tried uploading to the marketplace and downloaded the packaged version from there to see if that worked, but no dice.
I've had similar problems in the past, but not with the beta, it was with 2.3.0 iirc, I had the issue and it got resolved by trying several times again it finally decided to work. I recommend making a Helpdesk ticket if it persists - http://help.yoyogames.com
 

Amon

Member
I can't import any local packages. It does look like it is doing something but then I get an error saying "Error importing package". I've tried many and none work.
 

Tornado

Member
I'm on the latest GMS2 Beta: IDE v23.1.1.214, runtime v23.1.1.212.
When I create an extension, in the "extensions" folder the folders "AndroidSource" and "iOSSource", etc... are NOT created!!! Therefore it is also not possible to add any source files via "Add Source" button!
As a workaround to be able to test some extensions stuff I used GMS 2.2.5 to create a test project, then I created an extension there and then I converted the project to GMS 2.3.1.

But for the main project I cannot do that because it is already on 2.3.1. So I can't create any extension in 2.3.1.
I reported the bug to Yoyo.

Does someone know any workaround for this? (except trying to manually edit yy file)
Unfortunatelly this is still not fixed in Beta 224 Runtime 222.
@Dan Is there any workaround for this? I have to start making a new extension in our main project, but I'm blocked now.
 
Status
Not open for further replies.
Top