The Papyrus Index is a project to provide indexing, useful searching, and documentation for all developer-oriented Papyrus functions, properties, and events—for all Papyrus-using games.
Tip
If you're looking to track development, check out the development
branch. The default branch is production
.
Site deployed at https://papyrus.bellcube.dev/ from the production
branch
The Papyrus Index was born largely out of frustration (as many great projects are). Searching for a Papyrus extender that enabled the features you want to use in your script can be… annoying, to say the least. Aside from this project, there's not even a centralized list of Papyrus extenders, let alone a searchable one. Even finding the correct function to use in the vanilla Papyrus language can be a pain, honestly.
The Papyrus Index uses a custom-built JS parser for the Papyrus language to extract a ton of relevant information. We store the Papyrus scripts we want to index in data/
, and everything is separated out by game. After separating scripts by game, we further divide scripts by their "sources"—where the script came from. This might be the vanilla game, script extender, an xSE plugin, or even a regular mod that intentionally gives developers a way to interact with it. Multiple sources may contain versions of a script—most commonly seen with the vanilla game and the game's script extender.
The extracted information is initially stored in a JSON-compatible data structure. When it comes time to use the data, we typically uses an "indexed" version of the data, which replaces names of things (e.g. the name of a struct) with references to the original data (e.g. the actual struct object). This is significantly easier for a developer to work with, but, crucially, cannot be serialized (no saving to disk, no sending over the network) because of the circular data structure.
The website also fetches documentation from the following sources:
- The game's CK wiki (or a fallback if the game doesn't have its own CK wiki; e.g. Starfield uses FO4's CK wiki)
- TODO: The GitHub Wiki for the mod (if applicable)
- TODO: The GitHub Wiki for the Papyrus Index
We then use this data to generate the site. The website is a static site built with Next.js.