File information

Last updated

Original upload

Created by

Nicklaj

Uploaded by

ItsNicklaj

Virus scan

Safe to use

About this mod

This framework allows mod authors to inject custom achievements in game, which can be viewed from an in-game menu.

Requirements
Permissions and credits
Translations
  • Spanish
  • Russian
  • Polish
  • Mandarin
  • Italian
  • German
  • French
Changelogs
INTRODUCTION
This mod has been inspired by the last few years of gameplay mod development in skyrim and the fact that after 8 years and 800 hours in the game I only have something like 15 achievements.

Skip the spoiler if you're not interested in the idea behind the mod.
Spoiler:  
Show

The first time I noticed that it would be great if mods had achievements was with jayserpa's Leaps of Faith, which gave you a bonus each time you completed a jump, and I thought it would be great to have achievements for completing all 12 jumps. Then in 2023 I played some well known quest mods such as The Forgotten City, BS: Bruma, Project AHO, and again I thought how cool it would be to have achievements for those.
However, these things usually require you to add events to the game and then you need to code the event listeners in papryus, add the globals, and even then you cannot inject achievements into steam, and up until a few weeks ago I didn't have much knowledge regarding mod making (nor I claim to have it now).

Then recently many frameworks came out that allowed users to define their own implementation of things without having to touch a single line of code, such as Description Framework and The Dragonborn's Bestiary, which prompted me to see if something could be done to allow users and especially mod authors to define custom achievements, using only a simple json file, without touching a single line of Papryus or C++. This, to me, is huge, because it means that no patches are required to inject the achievements and even users who don't know how to code can create their own, as seen with all the addons made for TDB and Description Framework.

FEATURES
This framework introduces a new menu which allows you to check all the achievements registered, which you have unlocked and which you haven't unlocked. Moreover, it featuers a popup widget that will show up whenever you unlock an achievement, similarly to how steam, xbox and ps show it.


Via the MCM Settings or ini file you will be able to choose whether you want a popup to appear (for immersion puposes) upon achievement unlock, whether you want to disable the popup sound and if you do use a sound, you will be able to select between some pre-determined sounds to play - similarly to how you can select ringtones in your phone, with the default being the skill levelup sound as I found it fitting.

You can also choose whether to use per-character achievements or global achievements. In the first case the mod will generate a file for each character you have, while in the second case, the achievements will be shared between characters. 
NOTE: if you have multiple characters with the same name (firstly: why would you?) the framework will use the same json file for the achievements, which means that you will have the same achievements unlocked for both characters.

The framework is also somewhat able to check whether you have completed an achievement previously to its installation, although not for all achievements.

NEW in 1.1:
- If an achievement gets stucked and isn't unlocking you can now force the unlock via console commands, if you installed Custom Console.
  The command to run is the following: ai uach --name "Achievement Name" --group "AchievementGroup"   which stands for "AchievementInjector UnlockAchievement". Note that the group name is the name of the json configuration file, so SkyrimSE, Dawnguard, Dragonborn, etc.



REQUIREMENTS
This mod has very few requirements:


While not a requirement, I still recommend Achievements Mods Enabler if you want the base game achievements to be also counted by steam, and in case you want to reset your steam achievements to reacquire them, Steam Achievement Manager allows you to do just that with a simple interface.

COMPATIBLITY AND LIMITATIONS
Plugins that have received achievement configurations:

This should honestly be compatible with everything. It's just a .dll mod that reads game events and serializes them from and into json files, so I don't see it being incompatible with other stuff. The .esp is also eslified so it will not take a full mod slot. About mod intergrations:

  • Compatible with Proteus. If you don't want achievements to change for each character enable global achievements.
  • In theory this should be compatible with locations added by CoMAP, but I haven't tested it.
  • An Untarnished UI patch is available in the FOMOD, and another one was made by Wuerfelhusten and is available here. (Not updated to 1.1)
  • An Outlander UI patch is available in their modpage.

Always check that UI Patches are updated to the latest version of the mod or you could miss on UI features if the menus have been updated.
I will state here that due to its dll nature and the fact that I save data in external files, the mod is safe to install and uninstall at any time. If you uninstall it and then reinstall it, it will try to keep up with what's happened during the previous period and try to understand if you've completed more achievements in the meantime.

As of version 1.0, some vanilla achievements are not working:

  • Artificier - limited functionality, received after crafting any item;
  • Master Criminal;
  • Architect;
  • Solstheim Explorer;
  • Auriel's Bow.

I'm still proud that out of 75 achievements, only 5 aren't working.

FOR MOD AUTHORS
As stated previously you can check an example of configuration file in the SkyrimSE.json file included in the mod.
All configurations will be loaed into "Data/AchievementInjector/" and most stuff is logged into "~/Documents/My Games/Skyrim/SKSE/".
You can also check the the configuration file schema provided on github.

Currently there are 20 event types that you can configure to create your achievements.

While it's true that you don't need to code anything to create a configuration file, it's also true that you will most likely need to know some creation kit or xedit basics to find the formid of most stuff, which is however less taxing than learning a whole language I guess. If your mod requires other events, let me know and we can talk about adding more.

Advanced features include:
  • Ability to localize achievement entries.
  • Ability to run console command on achievement completion.
  • Ability to customize the unlock sound of your achievement.

To make it easy for mod authors to adapt to the APIs of the mod I've written a wiki page that you can find here. It also contains informations about how to using the creation kit so if you don't have muh experience go check it out.

If you need further assistance either DM me here on nexus or join this discord server where I have a dedicate subspace.

CREDITS AND SPECIAL THANKS
First and foremoest there is one person that I have to thank more than the others, which is Shazdeh. They have been very supportive and helped me with the Achievement Menu interface, taking it on themselves so that I could work on refining the C++ side of the mod. If you enjoy the mod it's also thanks to them so go endorse their profiles!

Another special mention goes to Komegaki that created the icons for the configurations available in the base FOMOD. When I realized that I suck at art they were the first author to come to mind, and they've been so available since the very first time I asked that they really deserve the special mention. Kudos to you kome!

Here is instead a list of all the other people that helped me with suggestions and code revisions, which is probably too short of a list as so many more people helped me but getting all of them on a list would probably make me write an entire book, so yeah here we go:

- Thanks to CharmedBaryon for maintaining CommonlibSSE-NG.
- Thanks to JPSteel and OsmosisWrench for helping me understand the very basics of how flash works.
- Thanks to SolusNoahBoddieShekhinaga and PO3 for the many suggestions and their support throughout the development.
- Thanks to Doodlum for their Ko-fi widget.
- Thanks to Everglaid, Vicn and DarthVitrial for basically testing the framework while writing their own configurations.
- Thanks to cozysienna for the thumbnail image.
And thanks to everyone else from the r/skyrimmods discord that have helped in minor ways, you guys are awesome and you're too many to put in a list.

MY LINKS