Git Product home page Git Product logo

gdkextension's People

Contributors

diasfranciscoa avatar iampremo avatar jackerley avatar rwkay avatar timg22ct avatar yoyo-danielc avatar yymrennie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gdkextension's Issues

XAsyncGetStatus() no longer returns when called in gdk_quit()

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:

status = XAsyncGetStatus(&async, true);

Function xboxone_stats_get_stat_names, crash

Calling xboxone_stats_get_stat_names will crash the game with an error:

image

NOTE: It could be because the user wasn't properly add before but even if it is, should the game crash or should it return something else like a undefined value or empty array?

Function xboxone_show_account_picker, not using param 0

Looking into the C++ I can tell that:

  1. the argument0 being passed into the function (supposedly the game_pad controller that should handle user selection) is not being used whatsoever

  2. 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.

Events with added parameters do not have Fields parsed by Stats::Xbox_Stat_Load_XML

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".

How to check file existence?

In ObjLoad

var _requestId = gdk_load_buffer(_bufferId, _filename, 0, 10);
, when I check for file existence with the GML native function file_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?

Function gdk_save_group_end, not returning anything

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?

Function xboxone_stats_add_user, callback error

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.

Function gdk_save_buffer, should return type parameter

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.

Run batch file based on project config

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

Cross-save / Xbox Play Anywhere: is it supposed to work?

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:
1

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.

winstoresave
xboxsave

Can anyone help?

Best,
Fabrice

Implement: XblMultiplayerActivityUpdateRecentPlayers

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

Old version of GDK

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.

Most Recent GameMaker Runtime (2022.9.0.63): Causes all extension functions to be unusable

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 []. ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.