Sample code for prospective developers showcasing a build setup for a Skyrim SKSE plugin using the PrismaUI framework with CMake.
- Player Name Display - Shows the current player's name (after Save is loaded)
- JavaScript Canvas 3D Demos - Three demos using Kevin Roast's Canvas 3D library:
- Asteroids-like game
- K3D test scene
- K3D demo
- Help Page - Links to https://www.prismaui.dev/
- MCM Menu - Configure hotkeys through SkyUI's Mod Configuration Menu
F4- Open plugin UI (default)??- Open Inspector View for debugging (disabled by default)
Uses CommonLibSSE-NG as a git submodule.
- ✅ Skyrim SE (1.5.x)
- ✅ Skyrim SE (1.6.x / Anniversary Edition)
- ❓ Skyrim VR (untested)
- Visual Studio 2022 with C++ development tools
- CMake 3.21+
- vcpkg
- Git
- PowerShell 5.1+ or PowerShell Core
-
Clone the repository with submodules:
git clone --recurse-submodules https://github.com/langfod/PrismaUI-example-cmake-plugin.git cd PrismaUI-example-cmake-plugin -
Configure local paths:
Copy-Item Build_Config_Template.ps1 Build_Config_Local.ps1Edit
Build_Config_Local.ps1with your local paths (Skyrim install, VS path, etc.) -
Download external dependencies:
.\DownloadExternalDeps.ps1
-
Build the release:
.\BuildRelease.ps1
The release will be built to the dist folder and automatically zipped.
If you prefer to build manually using CMake:
-
Clone with submodules:
git clone --recurse-submodules https://github.com/langfod/PrismaUI-example-cmake-plugin.git cd PrismaUI-example-cmake-plugin -
Download external dependencies:
The CMake build expects these tools in specific locations under the
external/folder:- Papyrus Compiler: Download papyrus-compiler-windows.zip and extract to
external/papyrus-compiler/(should containpapyrus.exe) - Spriggit CLI: Download SpriggitCLI.zip and extract to
external/SpriggitCLI-0.40.0/(should containSpriggit.CLI.exe) to match the entry incmake\Spriggit.cmake.
- Papyrus Compiler: Download papyrus-compiler-windows.zip and extract to
-
Configure CMake:
cmake --preset release
-
Build:
cmake --build build/release --config Release
-
Install (optional):
cmake --install build/release --prefix dist
├── cmake/ # CMake modules
├── external/ # External dependencies
│ ├── commonlibsse-ng/ # CommonLibSSE-NG submodule
│ ├── papyrus-compiler/ # Papyrus compiler
│ └── SpriggitCLI-0.40.0/ # Spriggit CLI tool (currently v0.40.0)
├── include/ # Header files
├── papyrus_scripts/ # Papyrus files
│ ├── headers/ # Papyrus headers for papyrus-compiler
│ └── sources/ # Papyrus script sources
├── plugins/ # ESP plugin data (Spriggit format)
├── src/ # C++ source files
└── view/ # HTML/JS/CSS for PrismaUI views
This project uses Spriggit to store the ESP plugin as human-readable JSON files in the plugins/ directory, enabling version control and easier collaboration.
To convert your edited plugin back to Spriggit JSON format:
.\serialize_gameplugin.ps1For more information on working with plugins, see docs/plugins.md.
| Tool | Purpose | Links |
|---|---|---|
| PrismaUI | SKSE UI framework | GitHub · Docs |
| CommonLibSSE-NG | SKSE plugin library | GitHub |
| Papyrus Compiler | Script compilation | GitHub · Releases |
| Spriggit | Plugin serialization | GitHub · Releases · Docs |
The Canvas 3D demos included in this example are sourced from Kevin Roast's excellent work:
- Kevin's 3D Dev Site: https://www.kevs3d.co.uk/dev/
- Asteroids Demo: https://www.kevs3d.co.uk/dev/asteroids/
- K3D Test: https://www.kevs3d.co.uk/dev/canvask3d/k3d_test.html
- K3D Demo: https://www.kevs3d.co.uk/dev/canvask3d/ultralight.html
Looking for more sophisticated examples? Check out these mods built with PrismaUI:
A scriptless mod configuration manager built with SKSE. by PaulMixMod
Adds new features like Multi-Dodge and True 8-way Dodge. by PaulMixMod
A clearer, more stylish floating damage display. by PaulMixMod
Overhauls the potion system with a modern action RPG-inspired flask mechanic. Replaces consumable potions with regenerating flask charges, bringing Souls-like and Cyberpunk-style healing to Skyrim. by Newrite
Adds a chat box (common in MMOs/MMORPGs) to Skyrim. Supports AI integration through SkyrimNet, MinAI, and Mantella. by orehomu