Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by JeanFinley · Oct 06, 2021 at 12:22 PM · steamachievements

Can't Get Or Set Achievements With Steamworks.NET

I'm using Steamworks.NET to set up Steam achievements in the game I'm working on. The SteamManager is initialising properly, the App ID is properly set and the achievements have been published. Calling GetAchievement however, returns false. SetAchievement has the same problem and the UserAchievementStored_t callback is never called. All of the other calls to the Steamworks API return true and their callbacks are triggered with no errors.

Any ideas as to why these calls are returning false or anything else to check would be appreciated.


Here's my code:

 public class SteamAchievementManager : AchievementManager
 {
     List<AchievementID> achievementQueue = new List<AchievementID>();
     List<AchievementID> backupAchievementQueue = new List<AchievementID>();
 
     private Callback<UserStatsReceived_t> statsRequestedResult;
     private Callback<UserStatsStored_t> statsStoredResult;
     private Callback<UserAchievementStored_t > achievementStoredResult;
 
     bool awarding = false;
 
     int retryCount = 0;
     int maxRetryCounts = 5;
 
     public override void Init()
     {
         if( !SteamManager.Initialized )
         {
             Debug.LogError( "Tried to Init SteamAchievementManager but SteamManager is not initialised" );
             return;
         }
 
         //Steamworks.SteamUserStats.ResetAllStats( true );
 
         statsRequestedResult = Callback<UserStatsReceived_t>.Create( OnStatsReceived );
         statsStoredResult = Callback<UserStatsStored_t>.Create( OnStatsStored );
         achievementStoredResult = Callback<UserAchievementStored_t>.Create( OnAchievementStored );
 
         SteamUserStats.RequestCurrentStats();
     }
 
     public override void AwardAchievement( AchievementID achievementID )
     {
         if( !SteamManager.Initialized )
         {
             Debug.LogError( "Tried to Award Achievement but SteamManager is not initialised" );
             return;
         }
 
         achievementQueue.Add( achievementID );
         if( !awarding )
             AttemptToAwardAndStoreAchievements();
     }
 
     void AttemptToAwardAndStoreAchievements()
     {
         awarding = true;
 
         if( SteamUserStats.RequestCurrentStats() )
         {
             Debug.Log( "Successfully Requested Stats" );
         }
         else
         {
             Debug.LogError( "Failed to Request Stats" );
             CompleteAwarding( false );
         }
     }
 
     void OnStatsReceived( UserStatsReceived_t result )
     {
         if( result.m_eResult != EResult.k_EResultFail )
         {
             Debug.Log( "Successfully Received Stats " + result.m_eResult );
             AwardQueuedAchievements();
         }
         else
         {
             Debug.LogError( "Failed To Received Stats" );
             CompleteAwarding( false );
         }
     }
 
     void AwardQueuedAchievements()
     {
         List<AchievementID> achievementsToAward = new List<AchievementID>( achievementQueue );
 
         while( achievementQueue.Count > 0 )
         {
             AchievementID achievementID = achievementQueue[ achievementQueue.Count - 1 ];
             string steamID = AchievementData.achievementList.GetAchievement( achievementID ).steamID;
             bool alreadyAwarded;
             Debug.Log( Steamworks.SteamUserStats.GetAchievementDisplayAttribute( steamID, "name" ) );
             if( !Steamworks.SteamUserStats.GetAchievement( steamID, out alreadyAwarded ) )
             {
                 Debug.LogError( "Failed To Get Achievement: " + steamID );
             }
             if( !alreadyAwarded )
             {
                 if( Steamworks.SteamUserStats.SetAchievement( steamID ) )
                 {
                     Debug.Log( "Awarded Achievement: " + steamID );
                 }
                 else
                 {
                     Debug.LogError( "Failed To Awarded Achievement: " + steamID );
                     backupAchievementQueue.Add( achievementID );
                 }
             }
             achievementQueue.RemoveAt( achievementQueue.Count - 1 );
         }
 
         SetStats();
     }
 
     private void OnAchievementStored( UserAchievementStored_t result )
     {
         Debug.Log( "Achievement Stored Callback" );
     }
 
     public void SetStats()
     {
         SteamUserStats.StoreStats();
     }
 
     private void OnStatsStored( UserStatsStored_t result )
     {
         if( result.m_eResult != EResult.k_EResultFail )
             Debug.Log( "Achievement Stats Succesfully Stored" );
         else
             Debug.LogError( "Achievement Stats Failed To Store" );
 
         CompleteAwarding( result.m_eResult != EResult.k_EResultFail && backupAchievementQueue.Count == 0 );
     }
 
     void CompleteAwarding( bool wasSuccesful )
     {
         awarding = false;
         retryCount = wasSuccesful ? 0 : retryCount + 1;
         achievementQueue.AddRange( backupAchievementQueue );
         backupAchievementQueue.Clear();
 
         if( retryCount > maxRetryCounts )
         {
             Debug.LogError( "Failed to Award Achievements After Multiple Attempts" );
             retryCount = 0;
         }
         else if( achievementQueue.Count > 0 )
         {
             retryCount++;
             AttemptToAwardAndStoreAchievements();
         }
     }
 }



Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by JeanFinley · Oct 07, 2021 at 10:01 AM

Turns out the app ID was wrong (figured that out by printing result.m_nGameID in OnStatsStored). I was convinced I had the correct ID because when I imported the package, there was a steam_appid.txt file created inside the Steamworks plugin folder, which I had changed to have the correct id. However there's another steam_appid.txt file in the project root folder, which is where the id is pulled from and this one still had the wrong id.

So essentially I herped before I derped. All working now!

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

128 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Why in unity editor l can get steam achievements, but without the editor l can't? ! 1 Answer

How to setup achievements in uwp...? 0 Answers

Steamworks.NET - Trying to get achievement name 1 Answer

Unity to steam steamworks achivements 1 Answer

Steam Achievements Using Lumosity 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges