Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Content Querying omits returning FileID, needed for getting the file #132

Closed
rokasv opened this issue Apr 8, 2020 · 29 comments
Closed

Content Querying omits returning FileID, needed for getting the file #132

rokasv opened this issue Apr 8, 2020 · 29 comments
Labels
bug Related to any general issue with GodotSteam ugc / workshop Related to Steam Workshop / UGC

Comments

@rokasv
Copy link

rokasv commented Apr 8, 2020

I want to make use of User Generated Content, but can't because the function

https://github.com/Gramps/GodotSteam/blob/e3acb6b783644102f61609a6d658ae9716eca211/godotsteam/godotsteam.cpp#L4768

skips returning the most important piece of information from the Steam structure: m_nPublishedFileId


In other words, this line:

ugcResult["fileID"] = (uint64_t)pDetails.m_nPublishedFileId;

is missing from the linked code and makes UGC querying useless.

@Gramps
Copy link
Member

Gramps commented Apr 8, 2020

Hmm, I think the publishedFieldID was going to be saved as a variable internally like some other IDs are but that didn't end up happening. I also might be thinking about queryHandle. Nonetheless, I'll get that fixed. Good catch!

@Gramps Gramps added bug Related to any general issue with GodotSteam ugc / workshop Related to Steam Workshop / UGC labels Apr 8, 2020
@rokasv
Copy link
Author

rokasv commented Apr 8, 2020

also, somewhat related, since I need the patch quick (the game is live), I was trying to compile the source manually using Godot 3.2.1 source + both your latest source and the one bundled in the 3.2.1 release, but in both cases calling createQueryAllUGCRequest crashes the program silently

I am building it on W10 with mingw, is that the same setup you have?

@Gramps
Copy link
Member

Gramps commented Apr 8, 2020

Currently patching in the publishedFileID to the function in question. Hmm, as for that crash, not sure but time to investigate! I'll set up a dummy project to see if I can figure it out.

I compile in both Windows 10 and Ubuntu 16.04 or 19.10. I do not use mingw. For Windows I use the Native Tool Command Prompt for Visual Studio 2017.

@rokasv
Copy link
Author

rokasv commented Apr 8, 2020

For Windows I use the Native Tool Command Prompt for Visual Studio 2017

Is this still with scons?
I could test the compilation if I had the steps / setup + commands you're using

My entire setup was the compilation steps from the godot website:
scoop install gcc python scons
+
scons -j8 platform=windows use_mingw=yes

@Gramps
Copy link
Member

Gramps commented Apr 8, 2020

From the native tools command prompt, I just use:

scons platform=windows -j8

I had installed Visual Studio 2017 and installed its components Native Tool Command Prompt, mostly because I don't like the Visual Studio IDE. Coming from a Linux background, I much prefer the command prompt interfaces.

Not sure what scoop is but I see that in the documentation.

@rokasv
Copy link
Author

rokasv commented Apr 8, 2020

the reason for use_mingw=yes was that for some reason scons platform=windows -j8 produced errors with VS Community 2019 (the recommended one), I'll give VS2017 a shot

@Gramps
Copy link
Member

Gramps commented Apr 8, 2020

Huh, haven't tried 2019 yet. What kind of errors does it produce, out of curiosity?

@Gramps
Copy link
Member

Gramps commented Apr 8, 2020

While CreateQueryAllUGCRequest doesn't crash for me, it does produce a handle that probably doesn't work.

@rokasv
Copy link
Author

rokasv commented Apr 8, 2020

>scons -j8 platform=windows target=release_debug
scons: Reading SConscript files ...
Configuring for Windows: target=release_debug, bits=default
Found MSVC version 14.2, arch amd64, bits=64
Checking for C header file mntent.h... no
scons: done reading SConscript files.

scons: warning: you do not seem to have the pywin32 extensions installed;
        parallel (-j) builds may not work reliably with open Python files.
File "C:\Users\Rokas\scoop\apps\scons\3.1.2\scons.py", line 204, in <module>
scons: Building targets ...
[  1%] Compiling ==> platform\windows\godot_windows.cpp
[  1%] Compiling ==> platform\windows\context_gl_windows.cpp
godot_windows.cpp
[  1%] Compiling ==> platform\windows\crash_handler_windows.cpp
context_gl_windows.cpp
crash_handler_windows.cpp
[  2%] Compiling ==> platform\windows\os_windows.cpp
[  3%] Compiling ==> platform\windows\key_mapping_windows.cpp
os_windows.cpp
[  3%] Compiling ==> platform\windows\joypad_windows.cpp
key_mapping_windows.cpp
[  3%] Compiling ==> platform\windows\power_windows.cpp
[  3%] Compiling ==> platform\windows\windows_terminal_logger.cpp
joypad_windows.cpp
power_windows.cpp
windows_terminal_logger.cpp
[  3%] rc /DDEBUG_ENABLED /DWINDOWS_ENABLED /DOPENGL_ENABLED /DWASAPI_ENABLED /DWINMIDI_ENABLED /DTYPED_METHOD_BIND /DWIN32 /DMSVC /DWINVER=0x0601 /D_WIN32_WINNT=0x0601 /DNOMINMAX /D_WIN64 /DPTRCALL_ENABLED /DTOOLS_ENABLED /DGDSCRIPT_ENABLED /DMINIZIP_ENABLED /DZSTD_STATIC_LINKING_ONLY /DGLAD_ENABLED /DGLES_OVER_GL /DFREETYPE_ENABLED /DSVG_ENABLED /Ithirdparty\nanosvg /Ithirdparty\freetype\include /Ithirdparty\libpng /Ithirdparty\glad /Ithirdparty\zstd /Ithirdparty\zlib /Iplatform\windows /I. /Imodules\godotsteam\sdk\public /nologo /foplatform\windows\godot_res.windows.opt.tools.64.obj platform\windows\godot_res.rc
[  3%] fatal error RC1106: invalid option: -ologo
[  3%] Compiling ==> main\default_controller_mappings.gen.cpp
[  3%] default_controller_mappings.gen.cpp
[  3%] scons: *** [platform\windows\godot_res.windows.opt.tools.64.obj] Error 1
Compiling ==> main\input_default.cpp
input_default.cpp
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\imagehlp.h(1808): warning C4091: 'typedef ': ignored on left of '<unnamed-enum-hdBase>' when no variable is declared
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\imagehlp.h(3201): warning C4091: 'typedef ': ignored on left of '<unnamed-enum-sfImage>' when no variable is declared
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\shlobj.h(1035): warning C4091: 'typedef ': ignored on left of 'tagGPFIDL_FLAGS' when no variable is declared
platform\windows\os_windows.cpp(1007): error C2065: 'PTOUCHINPUT': undeclared identifier
platform\windows\os_windows.cpp(1007): error C2146: syntax error: missing ';' before identifier 'pInputs'
platform\windows\os_windows.cpp(1007): error C2065: 'pInputs': undeclared identifier
platform\windows\os_windows.cpp(1007): error C2065: 'TOUCHINPUT': undeclared identifier
platform\windows\os_windows.cpp(1007): error C2672: 'memnew_arr_template': no matching overloaded function found
platform\windows\os_windows.cpp(1007): error C2974: 'memnew_arr_template': invalid template argument for 'T', type expected
C:\Users\Rokas\Desktop\steamed-godot\source\core/os/memory.h(141): note: see declaration of 'memnew_arr_template'
platform\windows\os_windows.cpp(1008): error C2065: 'pInputs': undeclared identifier
platform\windows\os_windows.cpp(1009): error C2065: 'HTOUCHINPUT': undeclared identifier
platform\windows\os_windows.cpp(1009): error C2146: syntax error: missing ')' before identifier 'lParam'
platform\windows\os_windows.cpp(1009): error C3861: 'GetTouchInputInfo': identifier not found
platform\windows\os_windows.cpp(1009): error C2065: 'pInputs': undeclared identifier
platform\windows\os_windows.cpp(1009): error C2065: 'TOUCHINPUT': undeclared identifier
platform\windows\os_windows.cpp(1009): error C2059: syntax error: ')'
platform\windows\os_windows.cpp(1010): error C2059: syntax error: 'for'
platform\windows\os_windows.cpp(1010): error C2143: syntax error: missing ')' before ';'
platform\windows\os_windows.cpp(1010): error C2065: 'i': undeclared identifier
platform\windows\os_windows.cpp(1010): error C2065: 'i': undeclared identifier
platform\windows\os_windows.cpp(1010): error C2059: syntax error: ')'
platform\windows\os_windows.cpp(1011): error C2065: 'TOUCHINPUT': undeclared identifier
platform\windows\os_windows.cpp(1011): error C2146: syntax error: missing ')' before identifier 'ti'
platform\windows\os_windows.cpp(1013): error C2065: 'ti': undeclared identifier
platform\windows\os_windows.cpp(1013): error C3861: 'TOUCH_COORD_TO_PIXEL': identifier not found
platform\windows\os_windows.cpp(1014): error C2065: 'ti': undeclared identifier
platform\windows\os_windows.cpp(1014): error C3861: 'TOUCH_COORD_TO_PIXEL': identifier not found
platform\windows\os_windows.cpp(1018): error C2065: 'ti': undeclared identifier
platform\windows\os_windows.cpp(1018): error C2065: 'TOUCHEVENTF_MOVE': undeclared identifier
platform\windows\os_windows.cpp(1020): error C2065: 'ti': undeclared identifier
platform\windows\os_windows.cpp(1020): error C2660: 'OS_Windows::_drag_event': function does not take 2 arguments
platform\windows\os_windows.cpp(293): note: see declaration of 'OS_Windows::_drag_event'
platform\windows\os_windows.cpp(1021): error C2065: 'ti': undeclared identifier
platform\windows\os_windows.cpp(1021): error C2065: 'TOUCHEVENTF_UP': undeclared identifier
platform\windows\os_windows.cpp(1021): error C2065: 'TOUCHEVENTF_DOWN': undeclared identifier
platform\windows\os_windows.cpp(1023): error C2065: 'ti': undeclared identifier
platform\windows\os_windows.cpp(1023): error C2065: 'TOUCHEVENTF_DOWN': undeclared identifier
platform\windows\os_windows.cpp(1023): error C2065: 'ti': undeclared identifier
platform\windows\os_windows.cpp(1023): error C2660: 'OS_Windows::_touch_event': function does not take 3 arguments
platform\windows\os_windows.cpp(270): note: see declaration of 'OS_Windows::_touch_event'
platform\windows\os_windows.cpp(1027): error C2181: illegal else without matching if
platform\windows\os_windows.cpp(1030): error C2065: 'pInputs': undeclared identifier
platform\windows\os_windows.cpp(1031): error C2181: illegal else without matching if
platform\windows\os_windows.cpp(1034): error C2065: 'bHandled': undeclared identifier
platform\windows\os_windows.cpp(1035): error C2065: 'HTOUCHINPUT': undeclared identifier
platform\windows\os_windows.cpp(1035): error C2146: syntax error: missing ')' before identifier 'lParam'
platform\windows\os_windows.cpp(1035): error C3861: 'CloseTouchInputHandle': identifier not found
platform\windows\os_windows.cpp(1035): error C2146: syntax error: missing ';' before identifier 'lParam'
platform\windows\os_windows.cpp(1035): error C2059: syntax error: ')'
platform\windows\os_windows.cpp(1039): error C2059: syntax error: 'break'
platform\windows\os_windows.cpp(1041): error C2059: syntax error: 'case'
platform\windows\os_windows.cpp(1041): error C2447: '{': missing function header (old-style formal list?)
platform\windows\os_windows.cpp(1044): error C2059: syntax error: 'break'
platform\windows\os_windows.cpp(1045): error C2059: syntax error: 'case'
platform\windows\os_windows.cpp(1045): error C2447: '{': missing function header (old-style formal list?)
platform\windows\os_windows.cpp(1063): error C2059: syntax error: 'break'
platform\windows\os_windows.cpp(1064): error C2059: syntax error: 'case'
platform\windows\os_windows.cpp(1064): error C2447: '{': missing function header (old-style formal list?)
platform\windows\os_windows.cpp(1085): error C2059: syntax error: 'break'
platform\windows\os_windows.cpp(1087): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
platform\windows\os_windows.cpp(1087): error C2059: syntax error: ':'
platform\windows\os_windows.cpp(1087): error C2447: '{': missing function header (old-style formal list?)
platform\windows\os_windows.cpp(1094): error C2059: syntax error: '}'
platform\windows\os_windows.cpp(1094): error C2143: syntax error: missing ';' before '}'
platform\windows\os_windows.cpp(1097): error C2059: syntax error: '}'
platform\windows\os_windows.cpp(1097): error C2143: syntax error: missing ';' before '}'
platform\windows\os_windows.cpp(1099): error C2143: syntax error: missing ';' before '{'
platform\windows\os_windows.cpp(1099): error C2447: '{': missing function header (old-style formal list?)
platform\windows\os_windows.cpp(1279): error C2039: 'WndProc': is not a member of '`global namespace''
platform\windows\os_windows.cpp(1279): error C2440: 'type cast': cannot convert from 'overloaded-function' to 'WNDPROC'
platform\windows\os_windows.cpp(1279): note: None of the functions with this name in scope match the target type
platform\windows\os_windows.cpp(1382): error C2039: 'WndProc': is not a member of '`global namespace''
platform\windows\os_windows.cpp(1382): error C2440: 'type cast': cannot convert from 'overloaded-function' to 'WNDPROC'
platform\windows\os_windows.cpp(1382): note: None of the functions with this name in scope match the target type
platform\windows\os_windows.cpp(1382): error C2660: 'SetWindowLongPtrA': function does not take 2 arguments
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winuser.h(7949): note: see declaration of 'SetWindowLongPtrA'
platform\windows\os_windows.cpp(1514): error C3861: 'RegisterTouchWindow': identifier not found
platform\windows\os_windows.cpp(2255): error C2059: syntax error: '__cdecl'
platform\windows\os_windows.cpp(2256): error C2065: 'DLL_DIRECTORY_COOKIE': undeclared identifier
platform\windows\os_windows.cpp(2256): error C2165: 'left-side modifier': cannot modify pointers to data
platform\windows\os_windows.cpp(2256): error C2513: 'BOOL *': no variable declared before '='
platform\windows\os_windows.cpp(2258): error C2065: 'PAddDllDirectory': undeclared identifier
platform\windows\os_windows.cpp(2258): error C2146: syntax error: missing ';' before identifier 'add_dll_directory'
platform\windows\os_windows.cpp(2258): error C2065: 'add_dll_directory': undeclared identifier
platform\windows\os_windows.cpp(2258): error C2065: 'PAddDllDirectory': undeclared identifier
platform\windows\os_windows.cpp(2258): error C2146: syntax error: missing ';' before identifier 'GetProcAddress'
platform\windows\os_windows.cpp(2261): error C2065: 'add_dll_directory': undeclared identifier
platform\windows\os_windows.cpp(2262): error C2065: 'DLL_DIRECTORY_COOKIE': undeclared identifier
platform\windows\os_windows.cpp(2262): error C2146: syntax error: missing ';' before identifier 'cookie'
platform\windows\os_windows.cpp(2262): error C2065: 'cookie': undeclared identifier
platform\windows\os_windows.cpp(2265): error C2065: 'cookie': undeclared identifier
platform\windows\os_windows.cpp(2265): error C3861: 'add_dll_directory': identifier not found
platform\windows\os_windows.cpp(2268): error C2065: 'LOAD_LIBRARY_SEARCH_DEFAULT_DIRS': undeclared identifier
platform\windows\os_windows.cpp(2268): error C2660: 'LoadLibraryExW': function does not take 2 arguments
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winbase.h(6686): note: see declaration of 'LoadLibraryExW'
platform\windows\os_windows.cpp(2271): error C2065: 'cookie': undeclared identifier
platform\windows\os_windows.cpp(2272): error C2065: 'cookie': undeclared identifier
scons: *** [platform\windows\os_windows.windows.opt.tools.64.obj] Error 2
scons: building terminated because of errors.```

@Gramps
Copy link
Member

Gramps commented Apr 8, 2020

Ouch. Yeah, looks like they are all errors within the Godot source code. That's weird. I would probably create an issue in the Godot Engine repo for VS 2019, if one doesn't already exist.

@rokasv
Copy link
Author

rokasv commented Apr 8, 2020

Also related to the reason this issue came up:

https://github.com/Gramps/GodotSteam/blob/e3acb6b783644102f61609a6d658ae9716eca211/godotsteam/godotsteam.cpp#L5400

can you add this to take ugcHandle int as a parameter?

The overall goal here is to link some data to a leaderboard entry, linking it when the item is build would allow me to skip querying for this specific task (I'll still need it for user mods).

@Gramps
Copy link
Member

Gramps commented Apr 8, 2020

OK, pushed the change to fix GetQueryUGCResult. I'll look into attachLeaderboardUGC. I do know ugcHandle is an internal variable, though I'm not 100% where or when it gets set.

EDIT: Interestingly enough it is only set in the LeaderboardEntry struct which doesn't seem to get set anywhere.

Also that function, attachLeaderboardUGC, is used to adding user content to a leaderboard score. Is that what you're intending?

@rokasv
Copy link
Author

rokasv commented Apr 8, 2020

I've just compiled the new source, same silent crash on calling GetQueryUGCResult. (but this is still using mingw, while VS is getting installed)

attachLeaderboardUGC

Yes, the goal is create an item (which returns an ID on creation) then add an entry to the leaderboard and attach the created item with the leaderboard entry (should leave the ID readable on downloading the entry).

EDIT: VS2017 didn't help, perhaps it's the Godot source version I'm using 🤔

@Gramps
Copy link
Member

Gramps commented Apr 8, 2020

Wait, crashing on GetQueryUGCResult? I thought it was crashing at CreateQueryAllUGCRequest.

Here is the change to attachLeaderboardUGC, give this a try and let me know if that works. It didn't crash during compile.

godotsteam.zip

What version of Godot are you using? I don't really think it matters as long as it's in the 3.x family.

EDIT: Looks like my focus will be moving back into User Stats and getting that fixed up. Been trying to get through each portion of the SDK per month, while also trying to hunt down bugs and work through my to-do list.

EDIT 2: My to-do list says User Stats is complete but it appears out of order alphabetically. Fine time to go through it again and check before moving on to the next portion.

@rokasv
Copy link
Author

rokasv commented Apr 8, 2020

Sorry, yes it was CreateQueryAllUGCRequest my mistake.
Compiling the new one now.
I'm using 3.2.1 source.

Would it be possible for you to update the compiled windows/linux builds with the FileID patch in case mine fails again? I can do the Mac one in return (assuming it works, the way the last compilation did)

@Gramps
Copy link
Member

Gramps commented Apr 8, 2020

Haha, OK, good to know I wasn't losing it already. Yep, I use 3.2.1 source as well.

I actually do have a compiled one with the changes already! This is the editor and template.

As for CreateQueryAllUGCRequest, mine doesn't crash but it does produce a single-digital number which I assume is useless. That being said, the game I test it against doesn't have any UGC stuff set up so perhaps that is the right response.

Sorry for the delay, my upload speed is hot garbage.

@rokasv
Copy link
Author

rokasv commented Apr 8, 2020

Some good news, more bad news.

Good: the editor you uploaded works and returns the entries with fileID
Bad 1: My compiled version crashes at the same point.
Bad 2: I was hoping to get around the inability to link the items by storing the ID of the item in the byte array that steam lets you associate with a leaderboard entry, however when calling Steam.uploadLeaderboardScore(value, false, PoolIntArray([1, 2, 3]))
then ```

Steam.getDownloadedLeaderboardEntry(handle, 1)
var entries = Steam.getLeaderboardEntries()
print(entries)```

Entries is printed as [{global_rank:1, score:3, steamID:0}] which excludes the byte array!
Checking the leaderboard entry through the web, Steam does show that the array was populated:
Capture

If you upload the linux export template, I think this fix is good enough for now, regardless of the issues above.

@Gramps
Copy link
Member

Gramps commented Apr 8, 2020

Hmm, that's weird it crashes in your version. Not sure what the difference would be or why MinGW would cause that (if it does).

Is that array is stores usable? Is it meant to be PoolIntArray in your uploadLeaderboardScore call?

I will get the Linux version of these fixes compiled and uploaded today and move the test compiles I attached as live too.

Not 100% sure how to test any of the UGC / leaderboard stuff without a game using them. Or is this being all done in test on Steamworks before pushing publicly? If so, I can set some stuff up to test on my game.

@rokasv
Copy link
Author

rokasv commented Apr 8, 2020

Hmm, that's weird it crashes in your version. Not sure what the difference would be or why MinGW would cause that (if it does).

Indeed, I'll try a fresh install of VS2015 and pure Godot 3.2.1 sources once more to investigate.

Is that array is stores usable? Is it meant to be PoolIntArray in your uploadLeaderboardScore call?

Steam describes the array as Optional: Array containing the details surrounding the unlocking of this score. (from here). It looks like the mistake is in getting its size in your implementation.

Or is this being all done in test on Steamworks before pushing publicly?

Yes! You can set this up easily, no public workshop required, see the "Enabling ISteamUGC for a Game or Application" section here.


EDIT: compiling from x64 Native Tools Command Prompt for VS2019 the build was a success and no longer crashes, not sure if it's the x64, the command prompt, the VS version or any of them together that did it. Regardless, this should let me bother you less and perhaps push some pull requests.

@Gramps
Copy link
Member

Gramps commented Apr 8, 2020

It looks like the mistake is in getting its size in your implementation.

Haha, that is incredibly likely, sir. Looks like it's time to fix some bugs!

Very cool about the workshop stuff. I will set up some dummy stuff in my game so I can test further.

Glad to hear the native tools worked; it's always my go to. Yeah, not sure where the fault was but at least that's sorted and we can move onto the code portion.

I'll respond back once I get some changes made and some tests run.

@Gramps
Copy link
Member

Gramps commented Apr 10, 2020

Sorry for the delay, I started working on the attachLeaderboardUGC which rolled into a much larger update. I'll get it compiled, based on the .cpp / .h zip I uploaded, today and added to this issue.

Once my bigger update is done, I'll re-compile and push everything to the repo.

@rokasv
Copy link
Author

rokasv commented Apr 10, 2020

No worries, take your time.

I'm also not sure if I just don't know how to use the methods in order, but all the getLeaderboardEntries() entries returned share the same data with steamID being 0 in all of them. Looking into this myself, but let me know if this is something you've encountered or aware of the mistake I'm making.

Also, not sure if you've included this line:

		entryDict["ugc_handle"] = entry->m_hUGC;

next to https://github.com/Gramps/GodotSteam/blob/d59be5ae769341d9185c6884d7687e9be3c6ae56/godotsteam/godotsteam.cpp#L5537 in the update to be able to check the attached ugc handle.

Apologies for the bombardment.

@Gramps
Copy link
Member

Gramps commented Apr 10, 2020

Hey there. Hmm, I'll check into that. Also putting together a test project using all the leaderboard functions with which to write a tutorial on this all. I'll see what I dig up.

I just added, per your suggestion, the entryDict["ugc_handle"] = entry->m_hUGC; line in.

@Gramps
Copy link
Member

Gramps commented Apr 11, 2020

OK, all changes and updates have been pushed to the repo and pre-compiles are being uploaded with my horribly slow upload speed. Let me know how it goes.

@rokasv
Copy link
Author

rokasv commented Apr 12, 2020

Hey, seems like all the issues I've covered here are fixed.

Then only inconvenience I've encountered in the new build is that all the constants are gone.

@Gramps
Copy link
Member

Gramps commented Apr 12, 2020

Excellent. Yeah, originally the enums were linked as constants so everything has been changed over to correctly link the constants as constants and enums as enums. However, it might need some tweaking still.

What particularly are you missing?

@rokasv
Copy link
Author

rokasv commented Apr 14, 2020

My code in the new version looks like this:

const k_ELeaderboardDataRequestGlobal = 1
const k_ELeaderboardDataRequestGlobalAroundUser = 2
func download_ownScore():
	downloading = true
	Steam.downloadLeaderboardEntries(1, 1, k_ELeaderboardDataRequestGlobalAroundUser)

In the last version, I could have just typed Steam. and let it autocomplete to the appropriate one I'm looking for. Ideally, the options would be an enum for each function, so it would both ensure that a constant from the appropriate set is used and provide less room for error than redefining steam constants myself.

@Gramps
Copy link
Member

Gramps commented Apr 14, 2020

Yeah, that is pretty hideous. I will go in and re-create the enums to make them more like they were but still separated out for organization.

@Gramps
Copy link
Member

Gramps commented Apr 22, 2020

I thought I updated this already but apparently I hadn't! Just pushed the changes to the repo which includes the ENUM as constants. Should fix that issue, sir!

If it does not, please let me know and reopen the issue.

@Gramps Gramps closed this as completed Apr 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Related to any general issue with GodotSteam ugc / workshop Related to Steam Workshop / UGC
Projects
None yet
Development

No branches or pull requests

2 participants