yoyogames / gdkextension Goto Github PK
View Code? Open in Web Editor NEWGMS2 Extension for GDK
License: Other
GMS2 Extension for GDK
License: Other
Currently this function is always returning -1, it would probably better to return 0 if succeeded and -1 otherwise.
It's possible this is just happening to me as I have made quite a few changes to my local copy of this extension, but I wanted to bring this up in case anyone else runs into it.
I released my game Launcher Heroes about 3 months ago on Xbox and Windows. It uses this extension for the Windows release. The game launched smoothly and no issues were present at launch related to the GDK extension. However, at some point in the past few weeks XAsyncGetStatus(&async, true);
appears to no longer return when called during the execution of gdk_quit()
causing the game to hang when attempting to close on Windows. This seems odd to me as I have not pushed out any updates to my game and this just started happening to the game in production.
I was able to mitigate the hanging by commenting out XAsyncGetStatus(&async, true);
. I'm not entirely sure what the consequences are to doing this, but it prevents my game from hanging during closing, so I plan on pushing this out in an update soon.
Edit: I'm specifically referring to this line:
GDKExtension/DLL/GDKExtension/GDKX.cpp
Line 247 in 9dd6c0e
Looking into the C++ I can tell that:
the argument0 being passed into the function (supposedly the game_pad controller that should handle user selection) is not being used whatsoever
the function is returning the error status (0 no error, negative values error) we could probably change that and always return the return value of int ret = XUM::AddUser(options, true);
since it will be negative if there is an error and it will contain the async call id that is transmitted to the callback on success.
When using Microsoft's Event Based Stats system, the GDKExtension function Stats::Xbox_Stat_Load_XML for parsing the Events manifest file is not properly reading any added Event "Fields".
The Event manifest file downloaded from Partner Center holds each Event in the format of:
<Event Name="EventSampleName" PopulationSampleRate="ProviderDefault" Priority="ProviderDefault" UploadEnabled="ProviderDefault" Latency="ProviderDefault">
<ETW />
<Description>A sample event description</Description>
<PartB Abbreviation="IGB" Part="B" Version="2">
<Fields />
</PartB>
<PartC Domain="Custom" Part="C" Version="1">
<Description>A sample event description</Description>
<Fields>
<Field Name="Score" Type="Float" />
</Fields>
</PartC>
</Event>
In this sample, Score is an added Event field needing to be set up as a parameter for the GML xboxone_fire_event function. As things are, calling xboxone_fire_event(EventSampleName, scoreVal) causes an error for an incorrect number of parameters being registered for the Event.
The issue is around line 286 of Stats.cpp, where the Xbox_Stat_Load_XML function skips over any non-Field node with the statement:
if (strcmp((const char*)(field_node->name), "Field") != 0)
Xbox_Stat_Load_XML should first check for "Fields", and then iterate over the child nodes named "Field".
In ObjLoad
, when I check for file existence with the GML native functionfile_exists(_filename)
, it returns false. In Series X|S module export, this is not the case. So when we are using GDKExntension, how can we query whether a file already exists in the cloud storage?
I also observed that files created with file_text_open_write()
can be checked by file_exists()
, but the file is not at AppData\Local\{game-name}
. If I want to inspect the file, is Gamesaveutil
the solution?
Not really an issue/bug but could probably be looked at. The older implementation relied on the buffer_async_group_end
that returned an async task id that could be checked in the async event. Should we aim for that too?
When calling xboxone_stats_add_user to add a new user, the callback returned from the extension will have an async_load with the error value of -2145844848.0
.
This can be tested using the Stats Add User button provided in the demo.
Not really a bug/issue, just something worth discussing.
Right now the function call to gdk_save_buffer
is returning:
{ "error": 0.0, "id": 5.0, "status": 1.0 }
it would be better to add a "type" parameter that would reflect the action being made, something like "saved_buffer" or "loaded_buffer"? to tell save/load actions apart.
Hello,
How can I ignore running the bat file based on the config of the project? I am asking this because for Windows, we have 2 configs, one for Steam and one for Windows Store. We don't use GDK for the Steam config, so I want to avoid running the bat file in that build.
As an example of early exiting the batch file based on export type: 3c9e1c3#r70819408
Hi,
I am adding a GDK PC version to my existing Xbox title. Everything seems to work fine, except the save files aren't the same on both sides. (My title can't "see" the PC saves on the Xbox, and the Xbox can't "see" the PC saves)
Here are the save files I can see on my PC:
The good thing is that I can see the Xbox save files on my PC. The filenames are garbled but I can open them, they're not encrypted so I can 100% confirm I do retrieve the XBox save files on my PC.
Thus I assume the configuration (user ID, sandbox, SCID) is all correct, or this wouldn't be the case?
The bad thing is that they're in a separate folder. (see previous screenshot)
I'd think this is because of a different saving path. But I'm doing relatively the same in both cases (I say "relatively" because the actual functions to call are different)
I am saving my files in a "saves" folder in both cases, which I assume is the "container" name.
The problem is both ways (meaning the Xbox doesn't see my PC files either), and I'm not sure where the save files are located on the Xbox devkit so I can't check if it retrieves the PC files in a separate folder too but I would assume so.
It's only an issue for saves, because the same achievements seem to be unlocked on both sides.
Is there any GameMaker game which actually supports Play Anywhere right now?
Here's my own GameMaker code in both cases, dunno if this would help. My getsavesdir() function simply returns "saves" in both cases.
Can anyone help?
Best,
Fabrice
My online multiplayer game failed certification due to the game being required to maintain the "Recent Players" list with other users.
The GDK function used to update the recent players list is XblMultiplayerActivityUpdateRecentPlayers. I would like to see it exposed in GameMaker, so that I can pass certification when submitting my game. See multiplayer_activity_c.h
Hello!
The version of GDK provided here is now outdated. Games with it are not certified by Microsoft.
Simply changing the version from 211000 to 221001 (relevant for the Xbox module) does not help, the project is not built because the XPackageMount function no longer works and it needs to be changed to XPackageMountWithUiAsync.
In fact, this GDK module has not been working for several months.
Could not find function "gdk_init" in "C:\Users\Andrew\AppData\Local\GameMakerStudio2\GMS2TEMP\Launchers_225BE020_YYC\GDKExtension.dll" with argument types [1]. Could not find function "gdk_update" in "C:\Users\Andrew\AppData\Local\GameMakerStudio2\GMS2TEMP\Launchers_225BE020_YYC\GDKExtension.dll" with argument types []. Could not find function "gdk_quit" in "C:\Users\Andrew\AppData\Local\GameMakerStudio2\GMS2TEMP\Launchers_225BE020_YYC\GDKExtension.dll" with argument types []. Could not find function "F_XboxOneShowAccountPicker" in "C:\Users\Andrew\AppData\Local\GameMakerStudio2\GMS2TEMP\Launchers_225BE020_YYC\GDKExtension.dll" with argument types [0, 0]. Could not find function "F_XboxOneGetUserCount" in "C:\Users\Andrew\AppData\Local\GameMakerStudio2\GMS2TEMP\Launchers_225BE020_YYC\GDKExtension.dll" with argument types []. Could not find function "F_XboxOneGetUser" in "C:\Users\Andrew\AppData\Local\GameMakerStudio2\GMS2TEMP\Launchers_225BE020_YYC\GDKExtension.dll" with argument types []. Could not find function "F_XboxOneGetActivatingUser" in "C:\Users\Andrew\AppData\Local\GameMakerStudio2\GMS2TEMP\Launchers_225BE020_YYC\GDKExtension.dll" with argument types []. Could not find function "F_XboxOneFireEvent" in "C:\Users\Andrew\AppData\Local\GameMakerStudio2\GMS2TEMP\Launchers_225BE020_YYC\GDKExtension.dll" with argument types []. Could not find function "F_XboxOneGetStatsForUser" in "C:\Users\Andrew\AppData\Local\GameMakerStudio2\GMS2TEMP\Launchers_225BE020_YYC\GDKExtension.dll" with argument types []. Could not find function "F_XboxOneStatsSetup" in "C:\Users\Andrew\AppData\Local\GameMakerStudio2\GMS2TEMP\Launchers_225BE020_YYC\GDKExtension.dll" with argument types []. ...
We should probably use a value cap here to limit the value between 0 and 100, and avoid the crash.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.