Preparing your Unity game for Steam - Part 2 - Steam Achievements

  Рет қаралды 30,892

in Principle

in Principle

Күн бұрын

Пікірлер: 96
@Deverydoo
@Deverydoo 5 жыл бұрын
Years later, still extremely helpful. Thank you.
@inPrincipleGames
@inPrincipleGames 5 жыл бұрын
Deverydoo no problem. Please consider support me by checking out my latest game, Thrusty Ship, on Steam. I can really use the support :) Thanks
@Deverydoo
@Deverydoo 5 жыл бұрын
@@inPrincipleGames great looking game. You took courses from Ben too?
@inPrincipleGames
@inPrincipleGames 5 жыл бұрын
@@DeverydooI don't know who Ben is... So I don't think I did. :)
@ibra.h
@ibra.h 4 жыл бұрын
@@inPrincipleGames Did you take any udemy courses?
@inPrincipleGames
@inPrincipleGames 4 жыл бұрын
Ibrahim Hisham hi. I did not. I’m entirely self taught.
@nosteponsneek4616
@nosteponsneek4616 6 жыл бұрын
This series made the daunting task of steam integration a breeze!
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
Glad to be of service.
@magicsound
@magicsound 5 жыл бұрын
Hey, have you managed to create achievements script?
@primegames7024
@primegames7024 7 жыл бұрын
I've integrated my steam achievements successfully thanks to your great videos. I immediately went and purchased your OVO Smash game. Best of luck, kind sir!
@inPrincipleGames
@inPrincipleGames 7 жыл бұрын
Thank you so much Prime Games! Hope your game does well on Steam! (Is it Dust and Salt? The art style looks great on that one! :D)
@primegames7024
@primegames7024 7 жыл бұрын
Yes, it's Dust and Salt :) Thank you! I am glad you liked the art!
@TurnGameOn
@TurnGameOn 4 жыл бұрын
I'm working on my first steam game, you made it cake; thanks so much for your pioneering efforts!
@inPrincipleGames
@inPrincipleGames 4 жыл бұрын
My pleasure. Please check out my most recent Steam release if you'd like to support me: store.steampowered.com/app/942520/Thrusty_Ship/
@rmt3589
@rmt3589 Жыл бұрын
Can I see achievements from different games on the user's profile? There's some neat things I'd like to do. (Like how Rosalina was unlocked in Mario Kart Wii by having a Mario Galaxy save on the Wii)
@inPrincipleGames
@inPrincipleGames Жыл бұрын
Possibly? That’s pretty advanced. See if you find anything like that in the documentation
@aFewBitsShort
@aFewBitsShort 5 жыл бұрын
Upload this to the asset store. You'll get more sales there than from your game.
@inPrincipleGames
@inPrincipleGames 5 жыл бұрын
Stevepunk almost certainly true...
@temite80
@temite80 6 жыл бұрын
Awesome video series! Very helpful! Thanks!
@AHPyXA
@AHPyXA 4 жыл бұрын
Thank you so much! This tutorial is still actual in 2020.
@inPrincipleGames
@inPrincipleGames 4 жыл бұрын
Glad to be of service. If you feel like supporting my work, please consider getting a copy of my most recent Steam game, Thrusty Ship: store.steampowered.com/app/942520/Thrusty_Ship/
@Unit02Games
@Unit02Games 7 жыл бұрын
Thanks for this, it really helped!
@inPrincipleGames
@inPrincipleGames 7 жыл бұрын
My pleasure.
@modernator
@modernator 4 жыл бұрын
Hey, thanks for the great vid. I just have one question, when you try to unlock/lock achievement, you called SteamUserStats.GetAchievement and save the result into the boolean member variable. I can understand til here, but don't get it why you compare this value it's false when trying to unlock the achievement and try to compare true in lock achievement. According to the document, the second parameter, which is out bool returns true in below conditions met: - RequestCurrentStats has completed and successfully returned its callback. - The 'API Name' of the specified achievement exists in App Admin on the Steamworks website, and the changes are published. So does it suppose to check true when you try to unlock the achievement? Because this will only return false if there is no achievement you try to unlock it or fail to load from Steam server. Steamworks documentation is pretty bad and it is hard to find any details in there. Am I understood wrong, or is there any specific reason you doing that?
@inPrincipleGames
@inPrincipleGames 4 жыл бұрын
Most likely your objection is correct. You can use what Steam returns. In OVO Smash I track achievements in my save files, so I use achievements as a sort of cloud save, which is why I kept local booleans. You don't need those at all in your project, most likely. Bear in mind I did the tutorial on my real, existing project, so there are a few things I do in it that are not strictly necessary. But it has been a few years since I did this, so I'm not so sure. Thanks for your comment!
@modernator
@modernator 4 жыл бұрын
@@inPrincipleGames Ok, thanks for the quick reply :)
@petrruzicka452
@petrruzicka452 4 жыл бұрын
I am at 8:00 and while typing SteamUserStats, it's underlined red and won't compile. What I had to do was write using Steamworks; at top of the script and it worked. Dunno if you meantion it later in the video, might be helpful for someone NVM, you mention this in 10:00. Gonna leave it here. It might be useful to some dumbass such as me :)
@batyasf
@batyasf 4 жыл бұрын
Thank you so much for this tutorial! I have one little question though. How do you show your achievements on the store page? Thanks again!
@inPrincipleGames
@inPrincipleGames 4 жыл бұрын
Ciao Alberto. Achievements will appear on your store page automatically when your game is released. Cheers.
@batyasf
@batyasf 4 жыл бұрын
@@inPrincipleGames Amazing, thanks! Grazie!
@yogeshben
@yogeshben 4 жыл бұрын
Hi Sir, can you please make a video explaining how to implement steam's wallet in unity for IAP in unity? By the way great series.
@inPrincipleGames
@inPrincipleGames 4 жыл бұрын
Hi Yogesh, unfortunately I've never implemented Steam IAP, so I wouldn't know where to start. At the moment I'm building other things, so I don't have the time to research this. I may make a video about Steam leaderboards integration at some point though. Cheers.
@KandyMan90
@KandyMan90 6 жыл бұрын
I wonder if having to use -1 on your texture scale is a DirectX vs OpenGL kinda thing. If I remember correctly, DirectX has 0 on the y be top left, where as OpenGL has 0 on the y be bottom left.
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
Hi there, would love to answer you with competence, but at least at this time I don't have the knowledge. :( Thanks for watching though!
@MadMarvtricks
@MadMarvtricks 4 жыл бұрын
Nice video, it's really helpful. I have one question: If you publish a steam game, are you allowed to get free keys of your game, e.g. for giveaways?
@inPrincipleGames
@inPrincipleGames 4 жыл бұрын
Glad to be of help. Yes, there is an in built system to request keys. It’s very efficient. There is also a way to track individual key states. All in the dashboard.
@MadMarvtricks
@MadMarvtricks 4 жыл бұрын
@@inPrincipleGames ok, thank you very much
@alexisallal
@alexisallal 4 жыл бұрын
Hi ! Not being fluent in English, I don't understand or get the script steamachievements.cs. It does not come with steamworks.net. Would you help me? Thank you very much!
@inPrincipleGames
@inPrincipleGames 4 жыл бұрын
Hey, that's just a script I made myself. You can copy all of the code there. It's not necessary, really, but it's a utility script that I like to use to test if achievements have been unlocked, if they haven't and get their icons from the Steam servers. All of the code you need is in the video. :)
@alexisallal
@alexisallal 4 жыл бұрын
@@inPrincipleGames Thank you for your answer I was able to find and integrate the achievements! Good continuation to you!
@johnbuise
@johnbuise 6 жыл бұрын
Thanks! Great Series, helps a lot with understanding how to communicate with Steamworks. i made a script that unlocks/locks the achievements like yours, the thing is : "it works only on actual builds" not a problem at all, but im curious if you know the cause of that. seeing that it works from within your Unity GameWindow.
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
Hi John, thanks for your feedback and glad you enjoyed the tutorial. It's been a long time since I last did this, so I cannot quite remember, but from what I recall, if your SteamManager (or equivalent) singleton is running in Unity from start, Steam should have no way of differentiating between Unity and your actual game build. So it should do everything as normal. What won't work normally is all of the popups and everything like that. They will appear later in the Steam interface, but not as popups in "game", or in your case in engine. Unfortunately, as far as I know, testing of achievements and similar should never be done in engine because it's just such a non representative environment. What you want to use the engine for is just the most coarse of debug. But then the testing should be done in game and within Steam. Not a great answer to your question, but hopefully it's somewhat helpful anyway. Lastly, I'm streaming quite a lot recently on my new project Thrusty Ship. Soon (ish) I will be doing Steam integration on this project too. Feel free to join me on my streams on Twitch (www.twitch.tv/mike_inprinciple) and perhaps you will see some of it live and you can ask questions as well, I'm usually quite keen on interacting with my audience. :) Best of luck with your game!
@johnbuise
@johnbuise 6 жыл бұрын
Tnx for your reply, testing it in steam and got it working perfectly! Next up : leaderboards :) *followed you on twitch.
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
Thanks buddy. Glad you managed to make it work!
@bluegoodev2085
@bluegoodev2085 6 жыл бұрын
Great tutorial! Thanks! But why not have a local copy of the icons in your game instead of downloading it from steam?
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
Hi BlueGooDev. Thanks for your comment. You are absolutely correct, you could have the icons in your game instead of the server. I just wanted to see how it would work. :) The only drawback I can see regarding what you are suggesting is that you will need those icons on Steam anyway. If you happen to want to change them, for whatever reason, you need to remember to match them both on the source AND the server. Only updating them on the server may end up being less work and less mistakes. Cheers.
@Andre-LA
@Andre-LA 6 жыл бұрын
Great tutorial! Thanks :)
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
No problem, thanks for watching.
@Ragdoll00
@Ragdoll00 6 жыл бұрын
Hey, I can't manage to get the actual pop up in the corner to appear. The achievement will unlock just no icon appears
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
Hi there, I think this is explained at minute 11 of this tutorial? If you've followed the steps closely it should work. If it doesn't... then I"m not sure I can help you, especially without knowing your situation, sorry.
@I_ZackMan12
@I_ZackMan12 4 жыл бұрын
So my game is connected to steam and when I unlock an achievement I log to the console the string id of the achievement. It matches my steamworks id on the achievements page but doesn't unlock on steam. Why would this be happening?
@inPrincipleGames
@inPrincipleGames 4 жыл бұрын
Steam needs to be "Updated". There is a call for that in my tutorial, I think (been a while, so I can't remember). What you can do, is implement a verification system in your game after the console log that checks the achievement status on Steam. If I'm right, what's going to happen is that when you exit Unity Steam will accept that your game is closed and then it will update the achievements. Again, to fix this I think you have to call the Steam Update.
@I_ZackMan12
@I_ZackMan12 4 жыл бұрын
@@inPrincipleGamesWhat am I checking to unlock it tho? Im not understanding what you mean.
@I_ZackMan12
@I_ZackMan12 4 жыл бұрын
I put the debug right before the steam unlock achievement. Then I thought the steam manager in its update would update that achievement that unlocked.
@inPrincipleGames
@inPrincipleGames 4 жыл бұрын
@@I_ZackMan12 The problem is Unity doesn't quite work the same way as a game would. It's sort of a game that's both in an active and passive state at the same time. Do this: 1. Close Unity. 2. Close Steam. 3. Open Steam and log in. 4. Observe that your Steam name is blue and you're not playing anything. 5. Launch Unity. Observe that the Steam user is still blue. 6. Hit the play button in Unity. Notice your Steam user goes Green. You're now playing your game. 7. Hit the play button in Unity again. Notice you're still green and you will remain green until Unity is closed. This messes with Steam a bit. Don't worry too much whether Steam's achievement is appearing or not while playing inside of Unity. You can test that with a proper build later. If you send steam a "CheckIfAchievementUnlocked" sort of request, and Steam answers correctly, that's all you care about now. If you want to make sure that the pop-up notifications work correctly, make a build that has debug methods to lock and unlock achievements with the press of a key and test the notifications. If those aren't appearing then you forgot to add that "UpdateSteam" method I mentioned. Which I cannot remember what it is called exactly right now, but it should be obvious.
@twostrikesgame
@twostrikesgame 7 жыл бұрын
Should I check achievements box and publish in the changes before trying this? The problem is that my game is already released... And checking without providing achievements could lead to some backlash
@inPrincipleGames
@inPrincipleGames 7 жыл бұрын
Interesting question. Perhaps you could make an announcement on your board (and whatever other channels of communication you have with your audience) that achievements are in the works, but won't be supported until a new version of the game comes out? I think it's possible that you may not be able to reach achievements in Steam from SteamWorks.net without Achievements being enabled? I don't know. Please share the knowledge here once you find out! :)
@twostrikesgame
@twostrikesgame 7 жыл бұрын
It is! You can test achievements without enabling in the steamworks page :)
@katyataraban5763
@katyataraban5763 5 жыл бұрын
@@twostrikesgame How?
@twostrikesgame
@twostrikesgame 5 жыл бұрын
Through the code. Setting the variables to true while executing through steam, then you should @@katyataraban5763 :)
@EAugusto
@EAugusto 6 жыл бұрын
How to add Steam Achievements on RPG Maker game?
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
Eduardo Augusto I don’t know, I’ve never used it. Sorry
@solomonmckay3126
@solomonmckay3126 5 жыл бұрын
Hi in Principle. I'm following your tutorial but I get an error whenever I unlock an achievement: "Steamworks.SteamAPIWarningMessageHook_t::Invoke'. This may cause application crashes, corruption and data loss. When passing delegates to unmanaged code, they must be kept alive by the managed application until it is guaranteed that they will never be called." This occurs when I'm calling "SteamUserStats.GetAchievement(ID, out unlocked);". I'm not familiar enough with C# delegates or callbacks to know how to proceed. I was wondering if you have any solutions for this?
@inPrincipleGames
@inPrincipleGames 5 жыл бұрын
I'm not sure. I don't see any obvious reasons why this would happen. Retrieving achievements should basically be instantaneous. You need to ensure that your SteamManager is running and in the scene. You need to ensure that you've created all of the chievos on the Steam interface and that you're sending the correct ID. When all this is positively checked, then we can take it from there. In other words, I think you're getting a false positive error. The error isn't what you think it is. Something else underlying is causing it. But I'm not sure.
@solomonmckay3126
@solomonmckay3126 5 жыл бұрын
@@inPrincipleGames Okay I had a typo in the ID when I was passing the achievement ID to the function; however, now I'm getting a null reference exception at the same place that I was getting the exception in my previous comment. Not entirely sure why that is happening but I'll see if I can debug it.
@ДмитрийКотусев-е6х
@ДмитрийКотусев-е6х 5 жыл бұрын
Hey, really good videos, I want to know whether you paid 100$ to steam in order to register your game.
@inPrincipleGames
@inPrincipleGames 5 жыл бұрын
Yes, the $100 fee is necessary to put your game on Steam.
@marcoayala5702
@marcoayala5702 6 жыл бұрын
hi excuse me but from where you call the coroutine? and what is _IconText or where you have it located?
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
Hey there, can you give me a time stamp for the video, so I can help you better? I don't want to rewatch my whole video to try and remember what I did. :) Thanks.
@marcoayala5702
@marcoayala5702 6 жыл бұрын
in Principle thanks for your answer and your video! I already figured out, soon i'll get ovo smash. Thanks!!!
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
Good to hear! And since I have you here, why don't you take a look at my new work as well? I have been desperate to get feedback on it, but so far without much success. I'd be very grateful if you could take a look at my new stuff. You don't need to do anything with it if you don't want to, but if you think it's cool, please tell your friends about it! Here's a link to 2 of my new projects, one of them is free for download too: multi-core-collider.itch.io/. Good luck with your game!
@candenizgumus5308
@candenizgumus5308 Жыл бұрын
Bro, do i need to chance steam_appid. its 480 as default.
@inPrincipleGames
@inPrincipleGames Жыл бұрын
Yes. You should have your own AppID
@candenizgumus5308
@candenizgumus5308 Жыл бұрын
​@@inPrincipleGames It worked but after i build the game. game opens and closes. After i integrated steamworks into my unity game. It works fine in unity launcher however after i build it. It crusher when i open it
@inPrincipleGames
@inPrincipleGames Жыл бұрын
Don't know what's wrong exactly without seeing it, but it looks like Steam doesn't recognise your game's standalone. You can rewatch the videos to see where all of the AppID references should be. That might help. Else, I don't know. Good luck.
@candenizgumus5308
@candenizgumus5308 Жыл бұрын
@@inPrincipleGames I manually added the steamapp.txt file into built files. It works now but do i need to do it manually always ?
@inPrincipleGames
@inPrincipleGames Жыл бұрын
@@candenizgumus5308 Possibly. I cannot remember. The videos should give you instructions on this. Otherwise, the comments on the videos may provide guidance too. Lastly, you can try the Steam documentation as well. Cheers.
@cybershockfutureparkour
@cybershockfutureparkour 4 жыл бұрын
Thank you!!
@snakeplisken4278
@snakeplisken4278 2 жыл бұрын
Do I need achievements?
@inPrincipleGames
@inPrincipleGames 2 жыл бұрын
No idea. The Steam documentation may answer that. But I do seem to recall games without them. Cheers.
@Setebe
@Setebe 6 жыл бұрын
how many purchases do you made from this game ?
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
Hi Setebe. At this time, 2018/09/09 less than 100. Thanks.
@pequenog2323
@pequenog2323 5 жыл бұрын
Hi in Principle!!! very good tutorials. I have a question... With what function of the api can I block the achievements again? I see in your videos that you use the function "DEBUGRESETSTEAMLOCKCOUNTER ()" but you never show its internal code. Greetings and thanks
@inPrincipleGames
@inPrincipleGames 5 жыл бұрын
Hi! The code goes as follows: public void DEBUG_LockSteamAchievement(string ID) { TestSteamAchievement(ID); if (unlockTest) { SteamUserStats.ClearAchievement(ID); SteamUserStats.StoreStats(); } } void TestSteamAchievement(string ID) { SteamUserStats.GetAchievement(ID, out unlockTest); } Sorry for the bad formatting. Cannot control that in this tiny window.
@alexandermaghradze5739
@alexandermaghradze5739 7 жыл бұрын
Where can i get this code?
@inPrincipleGames
@inPrincipleGames 7 жыл бұрын
If you mean that you want to know where Steamworks.net is, you have to go here: steamworks.github.io/ Please let me know if you meant something else.
@schneeritterstudios2648
@schneeritterstudios2648 6 жыл бұрын
I think he meant if you'd be willing to share the .cs files, so that we can import them into our game and fiddle around, instead of having to type manually type it :)
@inPrincipleGames
@inPrincipleGames 6 жыл бұрын
Oh, I think I missed this one, sorry about the late response. I'm afraid the answer to your request has to be negative. I have a substantial amount of my own personal code in these scripts that I'd prefer not to share at this time. An alternative could be me stripping out these bits and give you the rest, but that would take me a significant amount of time to do and I'm a little busy at the moment with other work stuff. Maybe I'll do a tutorial from head to toe about these aspects in future. We'll see. Cheers.
@GameDevMoot
@GameDevMoot 4 жыл бұрын
10:20
@shihuacheng5429
@shihuacheng5429 5 жыл бұрын
have github address?
@inPrincipleGames
@inPrincipleGames 5 жыл бұрын
Sorry, I never put this on any repository, because it's embedded in my own game. If you follow the tutorial carefully, you should be able to rebuild it all for yourself. Cheers.
@MartinVaupell
@MartinVaupell 4 жыл бұрын
SteamUserStats.SetAchievement(ID); _ SteamUserStats.StoreStats(); is what you came here for..
@kevinyang7128
@kevinyang7128 6 жыл бұрын
Coding your own games is easier than you think...
@Rich4098
@Rich4098 6 жыл бұрын
But still really hard...
Preparing your Unity game for Steam - Part 3 - Localization
20:06
in Principle
Рет қаралды 11 М.
Preparing your Unity game for Steam - Part 4 - Building
17:55
in Principle
Рет қаралды 27 М.
Сестра обхитрила!
00:17
Victoria Portfolio
Рет қаралды 958 М.
Гениальное изобретение из обычного стаканчика!
00:31
Лютая физика | Олимпиадная физика
Рет қаралды 4,8 МЛН
Урок 13 | Unreal Engine 5 Мультиплеер - Подключение Steam | Steamworks SDK
16:42
Cyberstars - Как создать игру
Рет қаралды 12 М.
How to Sell Your Game on Steam!
11:43
Jonas Tyroller
Рет қаралды 393 М.
How To Award Steam Achievements In Your Unity Game
8:00
Dapper Dino
Рет қаралды 33 М.