Posted February 16, 2021

fronzelneekburm
I'm back!
Registered: Apr 2012
From China, People's Republic of

Maxvorstadt
I is more stronger than Darth Vapour!
Registered: Apr 2014
From Germany
Posted February 16, 2021

As you already described, achievements are unlocked via API call. Are achievements integrated in the game code or are these calls made externally, accessing one of the Galaxy.dll files and everything else going on happens either within the client or on the website profile or both? If that is the case it is how I would envision it working in a non-client environment...

In a very abstract form: when such a goal is triggered in game code, there should be a handler for it (a function, a class, something else). Within this handler's code, a distinction is made based on which platform's client you're playing on (Galaxy, Steam, etc.). When the specific client is recognized, then there is another handler that is programmed to invoke only API calls from that specific client (this is the differentiating point among achievement for different clients), which usually are linked through an external dynamic library (e.g. a .dll for Windows).
In an ideal world (for those who care about achievements) the developers would take the little extra time to implement a handler for each different popular client, in a nice abstracted way to minimize code duplication and tweaking.
This way it is trivial to make a "dummy" handler, e.g. external .dll, for each client, whose only job would be to do... nothing. So, when you don't play through a client, the game will use the dummy client and just keep going on.
On the other hand, there are developers who hardcode client-specific code into their games (I guess a lot of Steam games do just that) so it's quite impossible to play without the client, unless an amount of refactoring is done (which is usually never done).
Post edited February 16, 2021 by Maxvorstadt

Starkrun
Poops Darkmatter
Registered: Aug 2009
From United States
Posted February 17, 2021
GOG is CDP and there was some serious patches that came down after the big hack of GOG's parent company... I would expect this happening to them. It seems delay is the key word here not "vanished" so once there database and servers are back to 100% I'm confident GOG will be back to normal :)

Slick_JMista
GOG Veteran
Registered: Jun 2014
From United Arab Emirates
Posted February 17, 2021
let's give them the benefit of a doubt and hope they bounce back from their cybersecurity fiasco.

Achul
New User
Registered: Apr 2018
From Sweden
Posted February 17, 2021
Nvm see my own thread
Post edited February 17, 2021 by Achul

NuffCatnip
New User
Registered: Apr 2015
From Germany
Posted February 17, 2021
Would be hilarious if this is later used as an excuse to not update offline installers at all.

Panaias
Ancient Mariner
Registered: Sep 2012
From Greece
Posted February 17, 2021
For me (and you I guess) they are. Others seem to require them. Each to their own :)
In any case, they should not be processor-intensive. They are one-off events which should not do anything else than just notify.
In any case, they should not be processor-intensive. They are one-off events which should not do anything else than just notify.

kohlrak
One Sooty Birb - Available on DLsite.com, not
Registered: Aug 2014
From United States
Posted February 17, 2021
Yeah, that could actually be happening right now. I've heard enough in this post to suggest to me that this has been going on much longer than this post, and they should've said something back when they found it broke to head detractors off at the pass. It seems they were just outright hoping we didn't notice. Makes me pretty damn skeptical.

Dexter Grif
Protect me, cone!
Registered: Jan 2013
From United States

kohlrak
One Sooty Birb - Available on DLsite.com, not
Registered: Aug 2014
From United States
Posted February 17, 2021



Dexter Grif
Protect me, cone!
Registered: Jan 2013
From United States
Posted February 17, 2021


Mori_Yuki
南無妙法蓮華経
Registered: Mar 2015
From Austria
Posted February 17, 2021

In a very abstract form: when such a goal is triggered in game code, there should be a handler for it (a function, a class, something else). Within this handler's code, a distinction is made based on which platform's client you're playing on (Galaxy, Steam, etc.). When the specific client is recognized, then there is another handler that is programmed to invoke only API calls from that specific client (this is the differentiating point among achievement for different clients), which usually are linked through an external dynamic library (e.g. a .dll for Windows).
My point is this: With only one set of files, both containing **achievements, both being able to access GOG's servers to transmit and receive data from it, there is no need for a separate set of patches or adapted DLC either. Which usually take longer to be dispatched to the website versus the client. Both parties get to enjoy what the other one's got access to and both should be happy. What's important is that GOG would profit most from this. Consider how several hundreds of terrabytes of server space could be saved! I would also assume that it takes lots of work off the shoulders of developers having to adapt their patches and updates for both.

This way it is trivial to make a "dummy" handler, e.g. external .dll, for each client, whose only job would be to do... nothing. So, when you don't play through a client, the game will use the dummy client and just keep going on.

** Based on the assumption that achievements etc., the code for them, is already present in both offline and galaxy revisions.

kohlrak
One Sooty Birb - Available on DLsite.com, not
Registered: Aug 2014
From United States
Posted February 17, 2021

In a very abstract form: when such a goal is triggered in game code, there should be a handler for it (a function, a class, something else). Within this handler's code, a distinction is made based on which platform's client you're playing on (Galaxy, Steam, etc.). When the specific client is recognized, then there is another handler that is programmed to invoke only API calls from that specific client (this is the differentiating point among achievement for different clients), which usually are linked through an external dynamic library (e.g. a .dll for Windows).

My point is this: With only one set of files, both containing **achievements, both being able to access GOG's servers to transmit and receive data from it, there is no need for a separate set of patches or adapted DLC either. Which usually take longer to be dispatched to the website versus the client. Both parties get to enjoy what the other one's got access to and both should be happy. What's important is that GOG would profit most from this. Consider how several hundreds of terrabytes of server space could be saved! I would also assume that it takes lots of work off the shoulders of developers having to adapt their patches and updates for both.

This way it is trivial to make a "dummy" handler, e.g. external .dll, for each client, whose only job would be to do... nothing. So, when you don't play through a client, the game will use the dummy client and just keep going on.



** Based on the assumption that achievements etc., the code for them, is already present in both offline and galaxy revisions.

MarkoH01
The goose rules!
Registered: Jun 2009
From Germany
Posted February 17, 2021
You might want to remember that there are more than enough people who like them and you absolutely won't notice any performance difference at all. In most cases you can also turn them off if you dislike them. So why don't let those who want them have their achievements?
Post edited February 17, 2021 by MarkoH01

Panaias
Ancient Mariner
Registered: Sep 2012
From Greece
Posted February 17, 2021

My point is this: With only one set of files, both containing **achievements, both being able to access GOG's servers to transmit and receive data from it, there is no need for a separate set of patches or adapted DLC either. Which usually take longer to be dispatched to the website versus the client. Both parties get to enjoy what the other one's got access to and both should be happy. What's important is that GOG would profit most from this. Consider how several hundreds of terrabytes of server space could be saved! I would also assume that it takes lots of work off the shoulders of developers having to adapt their patches and updates for both.
What's happening currently is that when the game decides a goal was achieved, it internally routes a call to the specific client which you launched your game through, so that the client can pop up the achievement banner with info provided from the game. In this scenario, internet connection is not required. The logic for the achievement (e.g. player resurrected 100 times) is within the game code. The way to display the achievement (e.g. "You are a level-100 zombie!") is within the client code. Both game and client are running locally so no internet is required for the achievement to happen and appear.
Your idea, while interesting in theory, would require an always online connection to the internet while playing. When the achievement logic would be triggered, it would have to be transmitted over network e.g. to GOG's servers so that it becomes available (to display on the web, to get permanently registered in your profile, to brag to your friends, whatever else). And then your game's code should get a reply from GOG's server over network to get the achievement confirmation back and display it in-game.
It's not impossible (please read above), but also it's not desirable. Besides "locking" your game to require an online connection (which is a form of DRM), there are other issues such as your own connection quality, speed, bandwidth limits, etc. So imagine playing and defeating a super challenging secret boss. After you defeat it, you leave and walk 10 minutes to get to the next area. And then boom an achievement appears "You are a secret-boss slayer!". OK, I might have gone a bit far there, but you get my point :)