Know everything that's going on at the Super God office.
Since there’s no game made in this day and age that doesn’t have achievements, we also planned to include them right from the get go. For these purposes we’ve created a customized achievement system to suit our needs. This was done to ease achievement yielding process and some of them may yield an additional reward.
First we created an object called oAchievementListener. This object’s sole purpose is to listen to achievement progress. When the object is created, it will fetch current achievement data from a data storing/handling object we called oDataStorage, in which achievements are stored in booleans (set to false by default). All achievement data is written and fetched in and out of a file. GameMaker: Studio has methods to do this easily.
The achievement listener will proceed to listen to all achievements in step-event based on which achievement listening booleans have been triggered aka set to true. Some triggers are handled by the listener object. For an example, when a new room starts, it causes a Room Start event to occur, in which some achievement listening booleans might be checked based on some criteria. Some triggers are set elsewhere in the program.
When a specific achievement listener is triggered, based on what requirements the achievement has, the object will proceed to check out the criteria. If an achievement requires active listening, the object will count event occurrences or wait for something to happen. This will either set the listener off or yield an achievement. Achievement data is then sent to data storing object, which in turn will save it in a file. At the same time the program will send Steam API a message to unlock the achievement in Steam’s own system. Thankfully, GameMaker has built-in, easy to use tools to do this instead of having to write a custom plug-in.