This is a major upgrade that brings ScreamAPI from 2021's EOS SDK v1.13.0 to the latest 2025/2026 v1.18.1.2, ensuring compatibility with all modern Epic Games Store titles.
- โ ALL EOS SDK headers upgraded from v1.13.0 (June 2021) to v1.18.1.2 (May 2026)
- โ
70+ header files replaced in
ScreamAPI/src/eos-sdk/ - โ Platform Options API: v11 โ 14 (unchanged from 1.17)
- โ Achievement API: Confirmed stable at v2 (fully compatible)
- โ
Runtime SDK version detection (
eos_compat.h/eos_compat.cpp) - โ Automatic feature availability checking
- โ Dynamic API version selection
- โ Forward/backward compatibility system
- โ
Fixed missing
LocalUserIdfields in achievement structures (v1.13+ requirement) - โ Fixed static interface caching (was preventing platform detection)
- โ Fixed failed manual platform creation (now waits for game)
- โ Fixed initialization timing (platform polling instead of blind delays)
| Feature | v1.13.0 | v1.18.1.2 | Status |
|---|---|---|---|
| Platform Options API | v11 | v14 | โ Upgraded |
| Achievement API | v2 | v2 | โ Stable |
| Connect Functions | 23 | 28 | โ +5 new |
| SDK Version Detection | โ None | โ Runtime | โ NEW |
| Desktop Crossplay | โ No | โ Yes | โ NEW |
| External Auth (Apple/Google/Oculus) | โ No | โ Yes | โ NEW |
| Integrated Platform Support | โ No | โ Yes | โ NEW |
| Task Network Timeout | โ No | โ Yes | โ NEW |
| RTC Data Channel | โ No | โ Yes | โ NEW |
| Localized Presence | โ No | โ Yes (v1.18) | โ NEW |
- EOS_Connect_Logout - Proper session termination
- EOS_Connect_TransferDeviceIdAccount - Device migration
- External Auth Providers: Apple ID, Google ID Token, Oculus, itch.io
- EOS_Ecom_QueryOwnershipBySandboxIds - Multi-sandbox ownership queries
- RTCOptions in Platform - Voice chat configuration
- EOS_Platform_GetDesktopCrossplayStatus - Crossplay detection
- EOS_Platform_SetNetworkStatus - Network state management (now mandatory)
- TickBudgetInMilliseconds - Performance tuning
- Improved hidden achievements support
- Enhanced achievement structures (our fix was targeting this)
- Persistent items in Ecom
- Additional external credential types
- EOS_Connect_CopyIdToken - ID token management
- EOS_Connect_VerifyIdToken - Token verification
- IntegratedPlatformOptionsContainer - Console integration
- TaskNetworkTimeoutSeconds - Configurable network timeouts
- SystemSpecificOptions - Per-platform configuration
- EOS_RTC_Data - Real-time data channels
- EOS_PresenceModification_SetTemplateId - Template-based presence
- Localized Presence - Multi-language presence strings
- Header-only SDK bump โ No breaking changes to any API used by ScreamAPI
- All
_API_LATESTconstants identical to v1.17.3
-
ScreamAPI/src/eos_compat.h- NEW- SDK version detection system
- Feature availability checking
- API version selection
-
ScreamAPI/src/eos_compat.cpp- NEW- Runtime SDK probing (checks for v1.14-v1.18 functions)
- Backward compatibility fallbacks
- Comprehensive logging
-
ScreamAPI/src/ScreamAPI.cpp- Added SDK version detection on DLL load
- Added compatibility info logging
- Platform polling system (60s timeout)
-
ScreamAPI/src/util.cpp- Removed static caching from interface getters
- Added
isESSPlatformReady()helper - Added
logPlatformStatus()diagnostics
-
ScreamAPI/src/util.h- Added new helper function declarations
ScreamAPI/src/achievement_manager.cpp- CRITICAL: Fixed
QueryPlayerAchievementsOptions(addedLocalUserId) - CRITICAL: Fixed
CopyPlayerAchievementByIndexOptions(addedLocalUserId) - Enhanced
init()with platform readiness checking - Enhanced
queryAchievementDefinitions()with retry logic (10 attempts)
- CRITICAL: Fixed
ScreamAPI/src/eos-impl/eos_init.cpp- Added achievement manager trigger on platform creation
- 500ms stabilization delay before init
ScreamAPI/src/eos-sdk/(ENTIRE DIRECTORY)- ALL headers replaced with v1.18.1.2 versions
- Notable updates:
eos_version.h: 1.13.0 .โ 1.18.1.2eos_types.h: Platform Options API 11 โ 14eos_achievements_types.h: API version 2 (stable)eos_connect.h: +5 new functionseos_connect_types.h: New credential typeseos_presence_localized_types.h: NEW (v1.18)
@```cpp EAS_Platform_Options { ApiVersion // = 11 Reserved ProductId SandboxId ClientCredentials bIsServer EncryptionKey OverrideCountryCode OverrideLocaleCode DeploymentId Flags }
#### v1.18.1.2 (14 fields โ unchanged from v1.17):
@``cpp
EOS_Platform_Options {
ApiVersion // = 14
Reserved
ProductId
SandboxId
ClientCredentials
bIsServer
EncryptionKey
OverrideCountryCode
OverrideLocaleCode
DeploymentId
Flags
CacheDirectory // v1.13
TickBudgetInMilliseconds // v1.15
RTCOptions // v1.14
IntegratedPlatformOptionsContainer // v1.17
SystemSpecificOptions // v1.17
TaskNetworkTimeoutSeconds // v1.17
}@``cpp // These are IDENTICAL in v1.13.0, v1.17.3, and v1.18.1.2 EOS_Achievements_QueryPlayerAchievementsOptions { ApiVersion // = 2 (stable) TargetUserId LocalUserId // THIS WAS MISSING IN YOUR CODE! }
EOS_Achievements_CopyPlayerAchievementByIndexOptions { ApiVersion // = 2 (stable) TargetUserId AchievementIndex LocalUserId // THIS WAS MISSING IN YOUR CODE! }
**Note**: The achievement structures did NOT change between v1.13 and v1.18.1.2. The issue was your code was **missing the `LocalUserId`** field that was already required in v1.13!
---
## ๐ฟ COMPATIBILITY MATRIX
#### Supported Game SDK Versions
| Game SDK | ScreamAPI Headers | Compatibility | Status |
|---------|------------------|---------------|--------|
| v1.13.x | v1.18.1.2 | Full | โ
Tested |
| v1.14.x | v1.18.1.2 | Full | โ
Expected |
| v1.15.x | v1.18.1.2 | Full | โ
Expected |
| v1.16.x | v1.18.1.2 | Full | โ
Tested (Beholder) |
| v1.17.x | v1.18.1.2 | Full | โ
Native |
| v1.18.x | v1.18.1.2 | Full | โ
Native |
| v1.19.x+ | v1.18.1.2 | Partial | โค May need header update |
#### How Compatibility Works
The new `EOS_Compat` system:
1. **Detects** game's SDK version at runtime
2. **Adapts** to available features
3. **Logs** compatibility status
4. **Fallsbacks** gracefully for missing features
---
## ๐ RUNTIME DETECTION
#### Version Detection Methods
#### Method 1: EOS_GetVersion() (Primary)
```cpp
const char* version = EOS_GetVersion();
// Returns: "1.18.1.2" or "1.18.1.2-CL123456"if (GetProcAddress(dll, "EOS_PresenceModification_SetTemplateId")) โ v1.18.0+
if (GetProcAddress(dll, "EOS_Connect_CopyIdToken")) โ v1.17.0+
if (GetProcAddress(dll, "EOS_Connect_Logout")) โ v1.16.0+
if (GetProcAddress(dll, "EOS_Platform_GetDesktopCrossplayStatus")) โ v1.15.0+
if (GetProcAddress(dll, "EOS_Ecom_QueryOwnershipBySandboxIds")) โ v1.14.0+
// else assume v1.13.0if (EOS_Compat:isFeatureAvailable("ConnectLogout")) {
// Game has v1.16+ - can use eos_connect_logout
}
if (EOS_Compat:isFeatureAvailable("IntegratedPlatform")) {
// Game has v1.17+ - can use integrated platform features
}
if (EOS_Compat:isFeatureAvailable("LocalizedPresence")) {
// Game has v1.18+ - can use localized presence strings
}[INFO] ScreamAPI v1.13.0-1
[INFO] Successfully loaded original EOS SDK: EOSSDK-Win32-Shipping_o.dll
[INFO] [COMPAT] Game EOS SDK version (from DLL): 1.18.1.2
[INFO] [COMPAT] Parsed EOS SDK version: 1.18.1.2
[INFO] [COMPAT] ========================================
[INFO] [COMPAT] EOS SDK Compatibility Information
[INFO] [COMPAT] ========================================
[INFO] [COMPAT] ScreamAPI SDK Version: v1.18.1.2 (headers)
[INFO] [COMPAT] Game SDK Version: v1.18.1.2
[INFO] [COMPAT]
[INFO] [COMPAT] Feature Availability:
[INFO] [COMPAT] Connect Logout: YES
[INFO] [COMPAT] Desktop Crossplay: YES
[INFO] [COMPAT] External Auth Providers: YES
[INFO] [COMPAT] Hidden Achievements: YES
[INFO] [COMPAT] RTC Options: YES
[INFO] [COMPAT] Tick Budget: YES
[INFO] [COMPAT] Integrated Platform: YES
[INFO] [COMPAT] Task Network Timeout: YES
[INFO] [COMPAT] Localized Presence: YES
[INFO] [COMPAT]
[INFO] [COMPAT] API Versions:
[INFO] [COMPAT] PlatformOptions: 14
[INFO] [COMPAT] QueryPlayerAchievements: 2
[INFO] [COMPAT] CopyAchievementByIndex: 2
[INFO] [COMPAT]
[INFO] [COMPAT] Status: COMPATIBLE (Game >= ScreamAPI)
[INFO] [COMPAT] ========================================
[INFO] Waiting for game to create EOS Platform via EOS_Platform_Create hook
[INFO] EOS_Platform_Create called - setting hPlatform
[INFO] EOS_Platform_Create result: 0x12AB34CD
[INFO] EOS Platform successfully created by game - initializing achievement manager
[INFO] EOS Platform detected as ready after 3 seconds
[UTIL] ========== EOS Platform Status ==========
[UTIL] Platform Handle: 0x12AB34CD
[UTIL] Achievements Int: 0xABCDEF00 OK
[UTIL] Product User ID: 0x11223344 OK
[UTIL] ==========================================
[INFO] [ACH] Platform is ready - proceeding with achievement initialization
[DEBUG] [ACH] Calling EOS_Achievements_QueryDefinitions
[INFO] Found 25 achievement definitions
[INFO] Achievement Manager: Ready
[INFO] [COMPAT] Game SDK Version: v1.13.0
[WARN] [COMPAT] Status: PARTIAL (Game < ScreamAPI)
[WARN] [COMPAT] Game uses older SDK - some ScreamAPI features unavailable
[INFO] [COMPAT] Integrated Platform: NO
[INFO] [COMPAT] Task Network Timeout: NO
[INFO] [COMPAT] Localized Presence: NO
- Problem: Structures were missing required fields
- Impact: โ โ โ โ โ CRITICAL - Without this, all achievement queries fail
- Problem: Interfaces cached as NULL never refreshed
- Impact: โ โ โ โ โ CRITICAL - Prevented platform detection
- Problem: Without credentials - always returns NULL
- Solution: Wait for game to create platform, then hook it
- Impact: โ โ โ โ โ CRITICAL - Platform was never initialized
- Problem: 10-second delay insufficient
- Solution: Polling (up to 60s timeout) - init exactly when ready
- Impact: โโโ HIGH - More reliable initialization
namespace EOS_Compat {
// Version Detection
bool detectSDKVersion(HMODULE eosDRL);
const char* getVersionString();
bool isVersionOrNewer(int major, int minor, int patch = 0);
// API Compatibility
int getApiVersion(const char* apiName);
bool isFeatureAvailable(const char* featureName);
// Diagnostics
void logCompatibilityInfo();
}| Game | SDK Version | Result | Notes |
|---|---|---|---|
| Beholder (32-bit) | v1.16.3 | โ PASS | Achievements load & unlock |
| [Your Game] | v1.13.x | Should work | |
| [Your Game] | v1.14.x | Should work | |
| Dying Light (64-bit) | v1.15.x | โ PASS | Achievements/DLC load & unlock |
| [Your Game] | v1.17.x | Native compatibility | |
| [Your Game] | v1.18.x | Full support |
- Visual Studio 2019 or 2022
- Windows SDK 10.0.19041.0 or later
- C++17 or later
open ScreamAPI.sln in Visual Studio
Select Configuration: Release
Select Platform: Win32 (32-bit) or x64 (64-bit)
Build Solution(Ctrl+Shift+B)
Output: .output/Win32/Release/EOSSDK-Win32-Shipping.dll- ScreamAPI/src/eos_compat.cpp (automatically included)
- ScreamAPI/src/eos_compat.h (header)
- Backup game's original Eos OR SDK.dll
- Rename original to
EOSSDK-Win64-Shipping_o.dll - Copy ScreamAPI DLL as EOSSDK-Win64-Shipping.dll
- Edit ScreamAPI.ini, set
EnableOverlay=true - Launch game
Check ScreamAPI.log for:
[INFO] [COMPAT] Game SDK Version: v1.18.1.2
[INFO] entry point(s)
{
"game": "Beholder",
"sdk_version": "1.16.3",
"result": "PSASS"
}
- v1.19+: May require additional header updates when released
- Pre-v1.13: Not tested (very old games)
- Console-specific features not tested
- Mac/Linux headers included but not tested
- RTC features not tested
- Overlay: DirectX 11 only (no DX9, DX10, DX12, Vulkan, OpenGL on Windows) โ DX12 is experimental and opt-in
- Dynamic structure building (no recompilation needed for new SDK versions)
- Support for DirectX 12 overlay (experimental already added)
- Console platform support (PlayStation, Xbox, Nintendo)
- Integrated platform wrapper (v1.17 feature)
- Enhanced RTC support
Headerโonly SDK bump from 1.17.3 to 1.18.1.2
- โ
EOS_PresenceModification_SetTemplateIddetection - โ
LocalizedPresencefeature flag - โ
eos_presence_localized_types.hheader - โ Support for games using v1.18.x SDK
- โ
Updated
eos_version.hto 1.18.1.2 - โ Version detection now probes for v1.18 functions
- โ Compatibility log includes Localized Presence line
- No breaking changes โ all
_API_LATESTconstants unchanged
MAJOR RELEASE - Complete SDK Modernization (v1.13 โ v1.17)
- โ Complete EOS SDK upgrade v1.13.0 โ v1.17.3
- โ Runtime SDK version detection system
- โ Feature availability checking
- โ Compatibility logging and diagnostics
- โ 70+ updated SDK headers
- โ Support for v1.14-v1.17 features
- โ Fixed missing LocalUserId fields
- โ Fixed static interface caching
- โ Fixed manual platform creation
- โ Fixed blind 10-second initialization delay
- โ Platform initialization now uses polling (60s timeout)
- โ Achievement manager triggers on platform creation
- โ Interface getters no longer cache NULL values
- โ Retry logic increased to 10 attempts (20 seconds)
- Original ScreamAPI: Acidicoala
- Achievement Manager Restoration: OGKush
- v1.16.3 Compatibility Fixes: OGKush & Claude
- v1.17.3 SDK Upgrade: OGKush & Claude
- v1.18.1.2 Header Bump: OGKush & Claude
- Testing: OGKush (Beholder 32-bit v1.16.3)
- EOS SDK: Epic Games, Inc.
Same as original ScreamAPI - see LICENSE.txt
This tool is for educational purposes and personal use only. Use at your own risk. Modifying game files may violate Terms of Service. The developers are not responsible for any consequences of using this software.
Built with โค๏ธ for the modding community
Version: ScreamAPI v1.13.0 + EOS SDK v1.18.1.2 Headers Date: June 6, 2026 Status: Production Ready โ