Steamworks.NET icon indicating copy to clipboard operation
Steamworks.NET copied to clipboard

Update Steamworks API to 1.6.2

Open MindsEyeGames opened this issue 9 months ago • 10 comments

Attempted to follow the instructions in CodeGen/README.md, and then updated the dll/so/dylib files and the info in Version.cs.

I might have missed a step, please double-check this all looks good :/ Additionally, this was done on Windows (and thus there are unfortunately line ending changes in this), so I assume it's preferable to just have someone more connected to the project do it directly on Linux :/

But figured I would try to contribute a version update since I was asking for it in https://github.com/rlabrecque/Steamworks.NET/issues/687 - hopefully this is helpful!

(It's worth noting that some parts of the API seem to have been deprecated/removed in this version update - those functions look less common, but still worth calling out)

MindsEyeGames avatar Mar 17 '25 10:03 MindsEyeGames

Unfortunately when testing this locally, it looks like the auto code gen made some errors in generating the new files?

I am not sure if I followed the directions incorrectly, or this is a Windows/linux difference thing, or something else went wrong.

Is there a particular timeframe by when the core library can be updated to 1.6.2? If that's relatively soon, I can revert this pull request

MindsEyeGames avatar Mar 22 '25 12:03 MindsEyeGames

I'll try to get to it this weekend

rlabrecque avatar Mar 22 '25 19:03 rlabrecque

I'll try to get to it this weekend

Thank you very much!

FWIW I have been trying to test these changes locally, updated this pull request with a commit that gets things working/functional. (I am still unsure if the typos in question from the code autogen are windows-specific or something)

I would also call out that changing the "out RemotePlayInput_t" native call to "RemotePlayInput_t[]" (which from what I see online should be fine?) does not seem to cause the structs within the array to actually have their data populated (or at least, I'm getting only unknown type events, though the number returned seems accurate). Not sure if I've just changed the type to a wrong thing though :/

MindsEyeGames avatar Mar 22 '25 22:03 MindsEyeGames

Alright, I think I understand the core issue - the union in the RemotePlayInput_t c struct needs to be very explicitly handled in C#. Took my best crack at fixing it, and it seems to handle mouse movement now but other event types are still failing.

MindsEyeGames avatar Mar 23 '25 17:03 MindsEyeGames

As an update, this did actually fix the c#<>c struct issues - have been able to play fully remote mouse + keyboard with it. (An unrelated bug in my integration code was impacting other events 9_9)

MindsEyeGames avatar Mar 25 '25 00:03 MindsEyeGames

Could you try this out, and potentially try rebasing this PR onto the wip/v1.62 branch just to see how our changes line up? https://github.com/rlabrecque/Steamworks.NET/commit/cc3402dfc34c079b9410a5a46a9e576babb121fd EDIT: This change is missing the .meta files!

For the RemotePlayInput_t struct, I ended up going with a Custom Type, and following some of your lead with the explicit Size for the padding. But I also aligned it to be closer to some of our other union based types like SteamNetworkingConfigValue_t. We originally did this just so that it's a little more explicit that they are all one value and you're only supposed to access one; and to be able to grab the whole unions size as a whole for the struct size.

rlabrecque avatar Mar 31 '25 05:03 rlabrecque

Updated! I had to remove a duplicate struct declaration but other than that it appears to work fine!

Sorry for the delay, was dealing with a number of things on my end :/

MindsEyeGames avatar Apr 29 '25 02:04 MindsEyeGames

@MindsEyeGames How production-ready is your PR in its current state? I was hopping of using your branch as a substitute to the official merge/update till it will come on later

Withaust avatar May 03 '25 15:05 Withaust

@MindsEyeGames How production-ready is your PR in its current state? I was hopping of using your branch as a substitute to the official merge/update till it will come on later

So I believe it is fully functional (and am using it in the current multiplayer playtest I'm running for INTO EVIL https://store.steampowered.com/app/1893440/INTO_EVIL/) - so far no issues in testing.

You should obviously test for yourself tho

MindsEyeGames avatar May 03 '25 15:05 MindsEyeGames

@MindsEyeGames It seems that if you were to use your PR as a package with a GIT URL, you are going to be getting these errors since there is a .meta file missing for one of the new scripts added {056B1F59-12DE-40D2-BFFF-E2EB42DF2695}

Withaust avatar May 03 '25 18:05 Withaust

Hopefully this is done via #721

Tagged a new release with 1.61 right before merging this in, and I'll try to get another new release with 1.62 out as soon as a couple people give enough of a thumbs up that things aren't broken.

It would be worth rebasing this branch on top of master just to see what those differences are, hopefully just whitespace and such.

rlabrecque avatar Jul 12 '25 22:07 rlabrecque