Tutorials / Guides on how to use Steamworks.NET ?

#Updated the repo to Steamworks.Net 10.0 (Steam SDK 1.40)
https://github.com/sqrMin1/Steamworks.Net-MonoGame-Integration

I wanted to update to the newest Steam SDK 1.41, but I will wait for a stable Steamworks.Net release, because Riley Labrecque is currently making a bigger change (removing “CSteamworks”). So updating now to the latest version could brake things. But of course you can try the latest updates by yourself. You just need the current files from https://github.com/rlabrecque/Steamworks.NET

If you want to stay on the safe site, then just use my latest repo update, which I linked on top of this post.

Cheers

1 Like

Thanks for the update, I will check it out.

Updated the repo to Steamworks.Net 11.0 (Steam SDK 1.41)

  • No longer requires CSteamworks.dll!

So it’s even easier to start using the Steamworks.Net library in your project.

  • Updated the Readme.md file accordingly

No code changes required; just the DLL was removed!

2 Likes

Just want to add something:

There is a Steamworks.Net-Test-Repo with many useful samples / test files like using the:

… just to mention a few!

They are made for Unity3D but they are also written in C#, so it’s pretty easy to learn from and use the steam features you like to see in your MonoGame project!

Use these samples together with the official Steamworks Documentation on the Steamworks Partner Site to be as most efficient as possible. At least it will make things a lot easier :wink:

Have a nice day!

PS: If you have problems to open the Steam Overlay, then you should visit the official support site for the overlay and read it completly - it’s important and useful!

Hi @BlizzCrafter,

I finally came to update the Steamworks.Net to the current version. Works like a charm, thanks a lot and keep up the good work!
Once the game is published (hopefully around autum), I’ll send you some more info.

Best,
Max

1 Like

Updated to Steamworks SDK 1.42

precompiled .dlls included for x86 and x86_64

Commit Details

1 Like

Hi @BlizzCrafter,

Updated to the newest Steamworks SDK 1.42. Thanks! Are you in this project together with Riley Labrecque?

Best,
Max

No, i’m currently alone on this project.

I plan to further enhance it with meaningful samples for the MonoGame community, like how to create a Workshop and how to use the Steam Controller in a MonoGame project.

But i’m very busy and I can’t tell when this will happen.

Thanks for your interest and have a nice day!

Curious… Anyone got the Steam overlay working with WindowsDX? I’ve got Steamworks running fine and initialized and even reading my profile ID and avatar, but I can’t get the overlay to work. The sample is DesktopGL and I’m wondering if that’s the issue.

It’s working fine for me, but I’m on an older 3.7 dev branch version, not on the latest.

Okay that at least tells me it’s not that. Thanks!

  1. Try to run your application directly from Steam.

  2. Please take a look at the official support site

The overlay is working fine in the example app being run from outside steam so I don’t think that’s it. I’ve tried it with my app id as well as the standard ‘test’ id of 480. Like I said everything is working but the overlay. shrug

No, the DirectX version behaves differently / the overlay gets differently injected.

I can only open the overlay in a DirectX project, when launching the corresponding app from the Steam-Library.
Within a DesktopGL project the overlay is even working in a quick debugging session.

You can test this in a fast way by adding your application as a “Non-Steam-Game” to your library.

There is a high chance that this is working for you. If it’s not, then you need to take a closer look at the support site, which I have posted above.

1 Like

Yep that did it… Interesting that the DX and GL behave so differently. All Good. Thanks for the tips.

1 Like

FYI: I created a new repo which integrates the Facepunch.Steamworks library. This library allows to code in native C#!

Feel free to check it out:

Hello! I know this is a rather old topic, but I’ve been trying to use Steamworks for a couple days with your handy MonoGame integration. I managed to make the overlay work, but only when I use the SpaceWar AppID. When I use my own AppID, I get this:

[S_API FAIL] SteamAPI_Init() failed; connect to global user failed.

This means I can’t test achievements for my game. The problem probably comes from the Steamworks setup. From what I understand from steam_api.h (Steamworks Documentation), , it’s because my "App ID is not completely set up, i.e. in Release State: Unavailable".

Am I supposed to upload the game before I can use the Steamworks API to test it? This question is probably more Steamwork-related than MonoGame related, but I figured I would ask because I can’t find any other information about this online.

No, it should work without uploading your game first.

It’s also neccessary to correctly setup the achievements in your steamworks backend. Just as a general notice.

You need to run the Steam client and login with a user which owns the AppID of your game. This could probably be your first, second, third etc. account.

Thank you for your answer. In the meantime I contacted the Steam support and turns out it was an issue on their end where the default package wasn’t created after the game creation. They solved it quickly.

1 Like

Hi, I’m following your guide and I’m getting issues with loading steam_api64 - the DLLImport can’t see it at all, even though it’s there. It’s in the same place as the steam_api.dll in the example projects.
I’ve put the WINDOWS build constant in as well, but it does’t seem to affect anything.
I previously had an issue with the Steamworks.NET dll not being loaded correctly, but I managed to fix that by deleting and recreating the reference.
I’m using 64bit windows with JetBrains rider, and my game so far is just the desktopgl template with your additions from the guide.

Thanks in advance :slight_smile:

EDIT: Managed to fix it with some help
Jetbrains rider doesn’t have the copy if newer thing, so the DLLs should be put in projectname/bin/debug/net6.0/