Introduction
Overview
EOS Achievements is an Unreal Engine plugin that gives you a clean, Blueprint-first integration of Epic Online Services (EOS) Achievements — without writing any C++ or dealing with the raw EOS SDK.
It handles the full flow:
- EOS initialization (auto-detect OnlineSubsystemEOS or create its own handle)
- Epic Account authentication (Auth Login with persistent token, fallback support)
- Product User identity (Connect Login required by EOS for game services)
- Querying achievements (definitions + player progress in one node)
- Unlocking achievements (direct unlock or via linked stat ingest)
- Real-time unlock listener (fire Blueprint events when the player unlocks an achievement live)
Requirements
| Engine version | UE 5.4 and above |
| Platforms | Windows, Mac (Editor & Standalone) |
| EOS Account | Epic Developer Portal project with Achievements configured |
Plugin Architecture
The plugin is split into two modules:
| Module | Role |
|---|---|
EOSCoreAchievements | Core subsystem — EOS init, Auth Login, Connect Login, identity |
EOSAchievements | Achievement-specific nodes — Query, Unlock, Listener |
The central object is UEOSCoreSubsystem, a GameInstanceSubsystem that lives for the entire game session and holds the EOS platform handle, the Epic Account ID, and the Product User ID.
Blueprint Flow (Overview)
InitializeEOS
│
▼
EOS Auth Login (Epic Account)
│ OnSuccess
▼
EOS Connect Login (ProductUserId)
│ OnSuccess
▼
EOS Query Achievements ──────────────► Display achievements list in UI
│ OnSuccess
▼
EOS Unlock Achievement ──────────────► Trigger on game event
│ OnSuccess
▼
EOS Start Achievements Unlocked Listener ── OnUnlocked ──► Show unlock popup
Each step is an async Blueprint node — no manual callback wiring required.
What This Plugin Solves
The raw EOS SDK requires:
- Manual
EOS_Initialize/EOS_Platform_Createcalls - Managing two separate login steps (Auth + Connect)
- Calling
QueryDefinitionsandQueryPlayerAchievementsseparately and merging results - Handling
EOS_InvalidUser(new player creation) silently - Manually ticking the EOS platform handle
EOS Achievements abstracts all of this. You get clean async nodes that just work.
Dependencies
The following Unreal Engine plugins must be enabled in your .uproject:
OnlineSubsystemOnlineSubsystemUtils
OnlineSubsystemEOSis optional — if active, the plugin borrows its EOS handle automatically. If not, the plugin creates its own fromDefaultEngine.ini.
Recommended Reading Order
- Setup — configure your EOS credentials and
.ini - Functions — reference for every Blueprint node
- Example Project — a step-by-step integration walkthrough
Need Help?
Join the community Discord:
When asking for support, include:
- Unreal Engine version
- Plugin version
- Your platform (Editor / Windows / etc.)
- Logs or screenshots of the issue