ceejbot / soulsy

A minimal Souls-like HUD for Skyrim AE & SE. SKSE plugin.
https://www.nexusmods.com/skyrimspecialedition/mods/96210/
Other
19 stars 7 forks source link
commonlibsse rust skse-plugin skyrim

Soulsy

Test Rust features Build mod archive

Soulsy is a lightweight, fast Souls-style hotkey HUD mod for Skyrim SE and AE. It is inspired by hotkey mods like Elden Equip, iEquip, and LamasTinyHud. It started life as a fork of LamasTinyHud, though it has since diverged significantly.

Screenshot of the hud

The NexusMods page has screenshots and videos of the HUD in use as well as player documentation. The documentation is more readable here in markdown. See Configuring the HUD and Customizing Layouts.

Development goals

My goals are two-fold: make a Souls-style equip HUD that is exactly what I want to use, and learn how to do Rust FFI. A bonus is demonstrating how to write Skyrim native-code mods in Rust.

This project has been released and is in active use. My eventual goal is to move everything except the SKSE plugin glue code to Rust, and have the C++ mostly vanish. There will always be some C++ in the project to interact with the Skyrim reverse-engineered library, which is all in C++ as is the game itself.

Building

Soulsy is a Rust and C++ project, using CMake to drive Cargo to build the Rust parts. The application logic is implemented in Rust, with a bridge to the C++ libraries required to implement an SKSE plugin. It requires the following to build:

The plugin requires the following vcpkg libraries, which will be installed for you:

Finally, CommonLibSSE-NG is pulled in as a git submodule and built. The repo used is my fork of CommonLib, which has some minor fixes in addition to the upstream.

There are a number of development conveniences in the justfile, including build recipes for Powershell. cargo install just if you do not have it. Because I am more comfortable on Unixes than on Windows, some recipes are written in Bash. The just recipes can build, copy to a test mod directory, update version numbers and tag a new release, and build archives for upload to the Nexus.

cargo --doc open displays programmer documentation for the Rust side of the plugin. The C++ side is commented, but not to the same degree.

You are absolutely invited to contribute. This project follows the standard Contributor's Covenant.

Credits

I could not have approached the rendering code without the work in LamasTinyHud, so mlthelama gets all the props. I also learned a lot about how to make an SKSE plugin by reading their source. Give that HUD a try if you don't like the souls-game style, or want a UI you can edit in-game. The original is the only hotkeys hud mod I tried that worked well in my game, so that's a testimonial.

The icons for the built-in theme are the usual SkyUI icons, plus the futura-book-bt true-type font. The background assets were built from scratch but were inspired by the Untarnished UI skin for LamasTinyHUD by MinhazMurks.

The built-in icons are the SkyUI icons by psychosteve, which are used in so many places I am not sure how to credit them. The icons for the Ceej remix layout are licensed to me from the Noun Project for use without attribution, but I am going to give attribution anyway because they're great icons. I am using the Role Playing Game collection by Maxicons. The THICC icon pack uses icons with permission from the THICC icon mod.

The font in use for some layouts is Inter.

cxx made developing the C++/Rust bridge a snap. This crate unlocks Rust as a viable language for all of your modding needs. bindgen is also available for doing this, but cxx generates safer C++ bindings by restricting the kinds of code generated. Its major drawback is that async Rust is not yet supported, but there are workarounds described in the docs.

License

GPL-3.0.