Full STEAMWORKS Tutorials for UDK3 Engine.

Hello people how are you?

Because of all the problems I faced with STEAM from setting up STEAMWORKS, scripts, uploading, patching, Achievements, Trading cards, Backgrounds and Emoticons and we cannot forget the EULA’s, I have dedicated part of my website to help other developers so you won’t have to go through what I did.
Here you go:

Special thanks to:
Jay Wilbur and his team for their support when I needed it!
Fabian who created “Clockwise” using UDK for the achievement part of the tutorial.
O_and_N for supporting the UDK community and requesting for a STEAM tutorial.

I wish each and everyone one of you developers the best of luck and hope everything works out for you.

Have a great day!

Thanks a lot for this guide, it’s really too bad we have to make stuff like this by ourselves when there’s still quite a few UDK games to release.

wow @LORDROACH that is a comprehensive rundown on Steamworks.

Haven’t got there yet… Your hard work is much appreciated!

Thanks for clearing quite some path for us there Shane :cool:

Thanks so much for posting. In addition I feel like I should link an old post that details how to setup server browsing through Steam with UE3:

Note: I didn’t write this article, but find it VERY useful and i think it’s quite hard to find in the forums (now that they’ve been archived).


So if Steam achievements are unlocked through Kismet nodes, does that mean that a player-made map could just unlock every achievement on the LevelLoaded event?

ahievements can also be unlocked from UnrealScript (it’s just more tricky/confusing). but if you still want to use Kismet (and your game ships with the Editor) you could modify the Kismet nodes’ code to make some “security checks” (i.e. check the current map name vs a list of accepted map names to allow achievements, look for a special actor that you placed in your level and then made notplaceable, or any other exotic solution you might think of)

LORDROACH: really useful stuff, I appreciate the effort :o

Thanks @Chosker. I might have to try that out.

And thanks @LORDROACH. This is very helpful. I would also like to suggest to everyone who is doing a Steam release that you use Steam DRM. It looks like a very easy one-step process. You can use steamcmd to upload your exe to put a DRM wrapper on it, and then download the protected version. Or you can use a web browser to do the same thing.

And LORDROACH, one last thing: Do you want to do a Steam Workshop tutorial for us next? :smiley:

Woudnt people complain about drm?

I think all the DRM wrapper does is make sure that you’re logged into Steam with the same account that downloaded the game. It gets to be a pain if the player wants to go offline because if you’re not online, you can’t log into Steam, and all of your games are inaccessible. If you log into Steam the usual way, then you can switch to offline mode, which will let you play your games for two weeks without an internet connection.

I have been annoyed at DRM before as a player, but as a developer I wouldn’t mind a minimally imposing way of making sure my game doesn’t get pirated. And if my DRM is no more onerous than any of the other games in someone’s Steam library, then I’ll probably go ahead and use it.

Update: Steam DRM isn’t as easy as I thought for UDK/UE3. I’m still trying to figure out how to make it work. It is in fact not just as simple as letting steamcmd put a wrapper on your exe.

I don’t think you can use the steam DRM wrapper with a UDK game as UDK is a .net exe.

From the steamworks docs:
“The Steam wrapper doesn’t support .Net applications. Instead of using the DRM wrapper, use SteamAPI_RestartAppIfNecessary.”

If you get something working, please do share with the rest of us :slight_smile:

@Coldscooter what I’m trying to do right now probably requires native code access. When UDK starts up, the first thing it does is call GameEngine.Init(), which is native. I’m extending GameEngine and in my Init() I inserted a call to SteamAPI_RestartAppIfNecessary(). If the game was executed outside of Steam, I immediately exit the game and let the Steam API restart my game through Steam. If it doesn’t need to restart, then I proceed onward with SteamAPI_Init() and then Super::Init(). I just now got a response back on my question on UDN so I’m going to try fixing it, and I’ll let you know if it works.

Update: I had to change a couple of lines in C++ and recompile, and now I have access to the Steam API via Online Subsystem Steamworks. And I was able to implement DRM very similar to what I described above. In fact, Epic had already written out for me, and I just had to change a couple lines of code in order to implement it.

Out of curiosity, I’m wondering if you could get access to the whole Steam API (including SteamAPI_RestartAppIfNecessary, which is the key to DRM when you can’t use the DRM wrapper) by using BindDLL on steam_api.dll or steam_api64.dll. That might be something worth trying out.

**Hi everyone! I really should visit these forums more often but I have been a little “slack” lately. I thought I would put a quick post here to answer some questions I have received over time. One question is why do I use Kismet so much? Especially for unlocking Achievements? The answer is not everyone can code or even write code. So since UDK comes with Kismet I thought it would be a great idea to find the most laziest way to do something. (Yeah, that’s me!) Another question I have been asked is how do you set up a UDK game workshop for STEAM? Even Nathaniel3W has asked the very same question in this forum. I am not too sure how to do this but I did come across it once while building DASM Spell Quest. If I come across the information again I will share it here in this forum. Though, how it is I am seriously considering adding workshops in most of my projects anyhow.
If you have any questions on anything or something isn’t right on my site email me at, especially if it is urgent. (Cause I’m not always checking these forums…:rolleyes:…)

Thanks and best of luck to you all!**

For some unknown reasons udk editor and udk game are not functioning properly even steam version. Do you think udk should be available on Epic Games launcher just like metro PC game series on Epic Games Store?

What’s wrong with it?

No. UDK has been discontinued. Epic no longer has a license to distribute UDK with its bundled middleware. Epic is not allowed to distribute UDK. And anyone starting a new project should start it in UE4.

And what does this have to do with your title of “Full STEAMWORKS Tutorials for UDK3 Engine”?

I know UDK was made by Epic Games themselves. Yesterday I was trying to run udk on PC steam and I couldn’t do it there was some error that said something like udklift.exe file can’t be found so I checked folder directory where I installed udk on steam and right there and there was only readme file. I just wanted to import jazz Jackrabbit iOS kismet tutorial demo from Unreal Engine 3 to unreal engine 4.

Yes, but Epic did not make Simplygon, SpeedTree, or Bink. UDK bundles all of those, and Epic no longer has a license for distributing them, therefore Epic can no longer distribute UDK.

I don’t think you can do that. Do you just want the assets from the game?

Well it could be just freeware/open source experiment. I’m not planning to distribute it.So who owns UDK besides Epic Games Fortnite investor Tencent nowadays? Anyway I want to stay out of any troubles such as lawsuits(dmca violations) and money penalties. I guess being also permamently banned in this forum.