Leaderboard Implementation #32

Open
opened 2026-02-28 13:56:00 -05:00 by yindo · 0 comments
Owner

Originally created by @CHESIRE721 on GitHub (Nov 14, 2025).

Originally assigned to: @grasmanek94 on GitHub.

Hello, I found an issue in a game called Caladrius Blaze. I haven’t seen any other game behave this way yet.
This game implements the GOG API in a very unusual manner.

The original galaxy.dll file of this game does not have a hash to identify its version, so through trial and error, the game runs correctly with UniverseLan version 1.76.0. But here’s the problem: for some reason, the game first checks whether a file exists or can be created to store the leaderboards before it calls IStats to unlock achievements.

Since UniverseLan does not fully implement these interfaces, it is not possible to obtain achievements in this game.

I will attach the log from the game’s CMD window so it can be reviewed when you have time.
Anyway, thank you for taking the time to read about this issue.

[0002acec] +universelan::client::ListenerRegistrarImpl::NotifyAllNow::nl@72aade4b
[0002acec] FuncT: void (__thiscall galaxy::api::ILeaderboardsRetrieveListener::*)(enum galaxy::api::ILeaderboardsRetrieveListener::FailureReason)
[0002acec] +universelan::client::ListenerRegistrarImpl::ExecuteForListenerTypePerEntry1@72aade4b
[0002acec] listenerType: LEADERBOARDS_RETRIEVE
[0002acec] +universelan::client::ListenerRegistrarImpl::ExecuteForListenerType1s@72aade4b
[0002acec] listenerType: LEADERBOARDS_RETRIEVE
[0002acec] locking...
[0002acec] ...locked
[0002acec] temp_set_ref.size():
[0002acec] set.size():
[0002acec] +[loop lambda]1@72aade4b
[0002acec] code(entry): 0x1171db78
[0002acec] +universelan::client::ListenerRegistrarImpl::Unregister@72aade4b
[0002acec] listenerType: LEADERBOARDS_RETRIEVE
[0002acec] listener: 0x1171db78
[0002acec] -universelan::client::ListenerRegistrarImpl::Unregister@72aade4b
INFO: Retrieve leaderboard fail!
[0002acec] +universelan::client::UserImpl::IsLoggedOn@72aade4b
[0002acec] +universelan::client::UserImpl::SignedIn@72aade4b
[0002acec] -universelan::client::UserImpl::SignedIn@72aade4b
[0002acec] -universelan::client::UserImpl::IsLoggedOn@72aade4b
[0002acec] +universelan::client::UserImpl::SignedIn@72aade4b
[0002acec] -universelan::client::UserImpl::SignedIn@72aade4b
[0002acec] +universelan::client::UserImpl::IsLoggedOn@72aade4b
[0002acec] +universelan::client::UserImpl::SignedIn@72aade4b
[0002acec] -universelan::client::UserImpl::SignedIn@72aade4b
[0002acec] -universelan::client::UserImpl::IsLoggedOn@72aade4b
[0002acec] +universelan::client::ListenerRegistrarImpl::Register@72aade4b
[0002acec] listenerType: LEADERBOARDS_RETRIEVE
[0002acec] listener: 0x1a8ae3c8
[0002acec] -universelan::client::ListenerRegistrarImpl::Register@72aade4b
INFO: Req leaderboards
[0002acec] +universelan::client::StatsImpl::RequestLeaderboards@72aade4b
[0002acec] +@72a7f5d1
[0002acec] -@72a7f5d1
[0002acec] -universelan::client::StatsImpl::RequestLeaderboards@72aade4b
[0002acec] -[loop lambda]1@72aade4b
[0002acec] -universelan::client::ListenerRegistrarImpl::ExecuteForListenerType1s@72aade4b
[0002acec] -universelan::client::ListenerRegistrarImpl::ExecuteForListenerTypePerEntry1@72aade4b
[0002acec] -universelan::client::ListenerRegistrarImpl::NotifyAllNow::nl@72aade4b
[0002acec] +universelan::client::ListenerRegistrarImpl::NotifyAllNow::nl@72aade4b
[0002acec] FuncT: void (__thiscall galaxy::api::ILeaderboardsRetrieveListener::*)(enum galaxy::api::ILeaderboardsRetrieveListener::FailureReason)
[0002acec] +universelan::client::ListenerRegistrarImpl::ExecuteForListenerTypePerEntry1@72aade4b
[0002acec] listenerType: LEADERBOARDS_RETRIEVE
[0002acec] +universelan::client::ListenerRegistrarImpl::ExecuteForListenerType1s@72aade4b
[0002acec] listenerType: LEADERBOARDS_RETRIEVE
[0002acec] locking...
[0002acec] ...locked
[0002acec] temp_set_ref.size():
[0002acec] set.size():
[0002acec] +[loop lambda]1@72aade4b
[0002acec] code(entry): 0x1a8ae3c8
[0002acec] +universelan::client::ListenerRegistrarImpl::Unregister@72aade4b
[0002acec] listenerType: LEADERBOARDS_RETRIEVE
[0002acec] listener: 0x1a8ae3c8
[0002acec] -universelan::client::ListenerRegistrarImpl::Unregister@72aade4b
INFO: Retrieve leaderboard fail!
[0002acec] +universelan::client::UserImpl::IsLoggedOn@72aade4b
[0002acec] +universelan::client::UserImpl::SignedIn@72aade4b
[0002acec] -universelan::client::UserImpl::SignedIn@72aade4b
[0002acec] -universelan::client::UserImpl::IsLoggedOn@72aade4b
[0002acec] +universelan::client::UserImpl::SignedIn@72aade4b
[0002acec] -universelan::client::UserImpl::SignedIn@72aade4b
[0002acec] -[loop lambda]1@72aade4b
[0002acec] -universelan::client::ListenerRegistrarImpl::ExecuteForListenerType1s@72aade4b
[0002acec] -universelan::client::ListenerRegistrarImpl::ExecuteForListenerTypePerEntry1@72aade4b
[0002acec] -universelan::client::ListenerRegistrarImpl::NotifyAllNow::nl@72aade4b
Build: 506
Using username: Player
Using key: 1267164015825760610
Using GalaxyID: 52453559150417867 (196568747226273739)
INFO: GOG Signing in...
Peer connected: 0100007f:19486
Replying to challenge with ID 196568747226273739
Connection accepted by server
INFO: Galaxy Sign in success.
INFO: Req leaderboards
INFO: Create directory failed! C
INFO: Create directory failed! C
INFO: Init Display
INFO: Init Display
INFO: Create Window
INFO: Create Window succeses
INFO: initRanderTarget
INFO: Init RenderTarget success
INFO: Retrieve leaderboard fail!
INFO: Req leaderboards
INFO: Retrieve leaderboard fail!
Originally created by @CHESIRE721 on GitHub (Nov 14, 2025). Originally assigned to: @grasmanek94 on GitHub. Hello, I found an issue in a game called Caladrius Blaze. I haven’t seen any other game behave this way yet. This game implements the GOG API in a very unusual manner. The original galaxy.dll file of this game does not have a hash to identify its version, so through trial and error, the game runs correctly with UniverseLan version 1.76.0. But here’s the problem: for some reason, the game first checks whether a file exists or can be created to store the leaderboards before it calls IStats to unlock achievements. Since UniverseLan does not fully implement these interfaces, it is not possible to obtain achievements in this game. I will attach the log from the game’s CMD window so it can be reviewed when you have time. Anyway, thank you for taking the time to read about this issue. ``` [0002acec] +universelan::client::ListenerRegistrarImpl::NotifyAllNow::nl@72aade4b [0002acec] FuncT: void (__thiscall galaxy::api::ILeaderboardsRetrieveListener::*)(enum galaxy::api::ILeaderboardsRetrieveListener::FailureReason) [0002acec] +universelan::client::ListenerRegistrarImpl::ExecuteForListenerTypePerEntry1@72aade4b [0002acec] listenerType: LEADERBOARDS_RETRIEVE [0002acec] +universelan::client::ListenerRegistrarImpl::ExecuteForListenerType1s@72aade4b [0002acec] listenerType: LEADERBOARDS_RETRIEVE [0002acec] locking... [0002acec] ...locked [0002acec] temp_set_ref.size(): [0002acec] set.size(): [0002acec] +[loop lambda]1@72aade4b [0002acec] code(entry): 0x1171db78 [0002acec] +universelan::client::ListenerRegistrarImpl::Unregister@72aade4b [0002acec] listenerType: LEADERBOARDS_RETRIEVE [0002acec] listener: 0x1171db78 [0002acec] -universelan::client::ListenerRegistrarImpl::Unregister@72aade4b INFO: Retrieve leaderboard fail! [0002acec] +universelan::client::UserImpl::IsLoggedOn@72aade4b [0002acec] +universelan::client::UserImpl::SignedIn@72aade4b [0002acec] -universelan::client::UserImpl::SignedIn@72aade4b [0002acec] -universelan::client::UserImpl::IsLoggedOn@72aade4b [0002acec] +universelan::client::UserImpl::SignedIn@72aade4b [0002acec] -universelan::client::UserImpl::SignedIn@72aade4b [0002acec] +universelan::client::UserImpl::IsLoggedOn@72aade4b [0002acec] +universelan::client::UserImpl::SignedIn@72aade4b [0002acec] -universelan::client::UserImpl::SignedIn@72aade4b [0002acec] -universelan::client::UserImpl::IsLoggedOn@72aade4b [0002acec] +universelan::client::ListenerRegistrarImpl::Register@72aade4b [0002acec] listenerType: LEADERBOARDS_RETRIEVE [0002acec] listener: 0x1a8ae3c8 [0002acec] -universelan::client::ListenerRegistrarImpl::Register@72aade4b INFO: Req leaderboards [0002acec] +universelan::client::StatsImpl::RequestLeaderboards@72aade4b [0002acec] +@72a7f5d1 [0002acec] -@72a7f5d1 [0002acec] -universelan::client::StatsImpl::RequestLeaderboards@72aade4b [0002acec] -[loop lambda]1@72aade4b [0002acec] -universelan::client::ListenerRegistrarImpl::ExecuteForListenerType1s@72aade4b [0002acec] -universelan::client::ListenerRegistrarImpl::ExecuteForListenerTypePerEntry1@72aade4b [0002acec] -universelan::client::ListenerRegistrarImpl::NotifyAllNow::nl@72aade4b [0002acec] +universelan::client::ListenerRegistrarImpl::NotifyAllNow::nl@72aade4b [0002acec] FuncT: void (__thiscall galaxy::api::ILeaderboardsRetrieveListener::*)(enum galaxy::api::ILeaderboardsRetrieveListener::FailureReason) [0002acec] +universelan::client::ListenerRegistrarImpl::ExecuteForListenerTypePerEntry1@72aade4b [0002acec] listenerType: LEADERBOARDS_RETRIEVE [0002acec] +universelan::client::ListenerRegistrarImpl::ExecuteForListenerType1s@72aade4b [0002acec] listenerType: LEADERBOARDS_RETRIEVE [0002acec] locking... [0002acec] ...locked [0002acec] temp_set_ref.size(): [0002acec] set.size(): [0002acec] +[loop lambda]1@72aade4b [0002acec] code(entry): 0x1a8ae3c8 [0002acec] +universelan::client::ListenerRegistrarImpl::Unregister@72aade4b [0002acec] listenerType: LEADERBOARDS_RETRIEVE [0002acec] listener: 0x1a8ae3c8 [0002acec] -universelan::client::ListenerRegistrarImpl::Unregister@72aade4b INFO: Retrieve leaderboard fail! [0002acec] +universelan::client::UserImpl::IsLoggedOn@72aade4b [0002acec] +universelan::client::UserImpl::SignedIn@72aade4b [0002acec] -universelan::client::UserImpl::SignedIn@72aade4b [0002acec] -universelan::client::UserImpl::IsLoggedOn@72aade4b [0002acec] +universelan::client::UserImpl::SignedIn@72aade4b [0002acec] -universelan::client::UserImpl::SignedIn@72aade4b [0002acec] -[loop lambda]1@72aade4b [0002acec] -universelan::client::ListenerRegistrarImpl::ExecuteForListenerType1s@72aade4b [0002acec] -universelan::client::ListenerRegistrarImpl::ExecuteForListenerTypePerEntry1@72aade4b [0002acec] -universelan::client::ListenerRegistrarImpl::NotifyAllNow::nl@72aade4b ``` ``` Build: 506 Using username: Player Using key: 1267164015825760610 Using GalaxyID: 52453559150417867 (196568747226273739) INFO: GOG Signing in... Peer connected: 0100007f:19486 Replying to challenge with ID 196568747226273739 Connection accepted by server INFO: Galaxy Sign in success. INFO: Req leaderboards INFO: Create directory failed! C INFO: Create directory failed! C INFO: Init Display INFO: Init Display INFO: Create Window INFO: Create Window succeses INFO: initRanderTarget INFO: Init RenderTarget success INFO: Retrieve leaderboard fail! INFO: Req leaderboards INFO: Retrieve leaderboard fail! ```
yindo added the bug label 2026-02-28 13:56:00 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: yindo/UniverseLAN#32