Steam Achievements, several BP nodes missing

I’m trying to implement Steam online subsystem to access achievements. I’ve been following both instructions, first from Epic doc here:

And the second one from Rama found here:

But no matter what I do, the log always tells me the online subsystem doesn’t work

LogOnline: Display: STEAM: Loading Steam SDK 1.39
LogOnline: Warning: STEAM: Steam API disabled!
LogOnline: Display: STEAM: OnlineSubsystemSteam::Shutdown()

When I play the game in editor as “stand alone”, I can see my Steam overlay and it seems to be how it should. But when I play the game as a cooked version, I cannot see any Steam overlay or access it.

My biggest issue is this: when I go into the player controller to add the node “cache achievements”, it is nowhere to be found! Same with many other essential achievement related nodes such as “write achievement progress”. Leaderboards can also not be read. Even with context sensitivity disabled, these nodes are just missing.

In the documentation for these nodes, there is no hint of what requirements they need to be used in the engine.

Please can someone tell me what I am doing wrong? Thank you so much!

After going crazy over this for hours, here is the solution:

OH BTW this has nothing to do with Steam at all.

IF you cannot find certain online BP nodes like “cache achievements” or “read leaderboard integer”, the problem is that you’re trying to access this BP node from within a wrong class. And by wrong, I mean I have absolutely no idea why this doesn’t work, but it just doesn’t. Access from within Player Controller or Game State is prohibited for some reason.

SOLUTION: you can ONLY access these nodes from within certain classes like PLAYER STATE or the LEVEL BLUEPRINT. Many other classes - even custom classes - DO NOT WORK.

I have absolutely no idea why this is, but it probably has a very good reason why it works this way. Would be nice from Epic to mention this little detail somewhere… like in the official documentation of the BP node… just an idea…

hmmm, cache achievements is an asynchronous function so it has to be placed in the event graph, not within a function. Have you tried that? (they need to update the picture on the docs page since it doesnt have the clock in the corner like it should)