in Arcade, Space

Advent of the Plugin Manager

From Naev Blarg: link to original post

Adding support for plugins was one of the foundational Naev goals that was finally realized in 0.10.0! Since then, there have been some plugins made for Naev, however, due to the difficulties of finding them and such, even with the naev-plugins repository, they were never fully realized and the need for a plugin manager was glaringly obvious. Some great contributors a-random-lemurian wrote a plugin manager in python and then BlackFrame42 improved it into a usable design. However, while the python language was great for a proof of concept, packaging it was a tricky issue that was never solved.

With the great move to rust, this gave us a new opportunity to rewrite the python handling in Rust, and easily add a plugin manager to boot!

The plugin manager in all its primitive implementation glory.
The plugin manager in all its primitive implementation glory.

This also provided a good opportunity to rework the entire plugin metadata format to a more modern one, based on toml which is a widely supported file format that will likely replace the hard to edit and read Naev XML files in the near future. The new format provides much more information, and also makes it much easier to handle with the plugin manager. Custom images are also allowed among other things.

And finally, if you haven’t noticed yet, we’ve also revamped the development manual! It is no longer a hard to parse PDF file generated by LaTeX, but now a web-focused book based on mdbook. Although it still needs a lot of work and updating, we believe it will be much more practical and easier to work going forwards, despite complaints filed by House Za’lek.

We hope these happenings will encourage people to show what they can do with the Naev engine. They’re both still a work in progress, and like always contributions are welcome to the plugin manager, the development manual, and Naev in general.