In this post we’re going to add Achievements to the Third Person Template project we have created in the previous post.

Download the source code from my github repo

Setting up Achievements Name and ID

Before we type any code, we need to inform our game about each achievement (including the name and it’s ID). Remember that Steam offers the Spacewar game as a sample project in order to integrate any platform specific features to our game that hasn’t yet been Greenlit. Having said that, we’re going to use Spacewar’s achievements for our game.

To inform our game about each achievement, open up the DefaultEngine.ini located inside the Config folder and in [OnlineSubsystemSteam] category, add the following lines:

The id and name of each achievement was retrieved from the following Steamworks screenshot:


If your game gets Greenlit, you can add your own achievements.

Progressing Achievements

In order to progress any achievement, we’re going to use the following logic:

  • We’re going to cache each achievement when the game starts (BeginPlay).
  • If the player completes an achievement, we’re going to search the cached achievements and if the achievement is valid we’re going to complete it.

Open up the header file of your Character class and add the following header file:

#include "OnlineStats.h"

Then, add the following code:

Before we implement any more logic, inside your character’s source file, add the following libraries and macros:

The reason we wrap each achievement inside a macro is because it’s less prone to errors since we can avoid typing wrong strings later in our code. Let’s implement the QueryAchievements functions and BeginPlay:

Then, let’s implement the UpdateAchievementProgress function:

The last thing we need is to implement the achievement functions. These function are going to call the UpdateAchievementProgress function with the desired Achievement they wish to complete. I’ve added the BlueprintCallable specifier in order to test them using key binds in the Blueprint graph. Here is the logic for each function:

At this point, launch your game on Standalone mode (this assumes that you have enabled the Online Subsystem Steam plugin which resides in the Online Platform category) and test your achievements!