Skip to content

Draft: Protobuf-based plugin format

Benjamin Winger requested to merge bmwinger/openmw:new_plugin into master

Initial implementation of #5929.

Only the BirthSign record is included for simplicity. The plan is to introduce the other records incrementally, but that will take significantly more time.

I decided to go with converting old-style records into new-style records on the fly during loading, as it simplified a few things.

Note that some of the changes made to the Store and related classes are more complicated than they would be if this was fully implemented (due to the split between the StoreProto and the StoreESM structures (not to be confused with the ESMStore...)), and could eventually be cleaned up.

The new plugin format has been set up to use the omw2 file extension to work with the GameContentLoader interface. I'm not great with names, and this, along with many of the other new names introduced, could certainly be renamed.

I've included a couple of example plugins in json format, as well as a short python script for converting them into the binary format (just something I threw together quickly. It would be useful to eventually include an proper tool to do such conversions).

I've also been keeping some notes (included in a markdown file. See here. Unfortunately there's no consistent way of linking to it in the diff for the MR) on additional changes which may need to be made, both for individual records, and for more complicated systems (identifiers, localization) which I haven't started tackling yet. This information could go into a collection of issues, but I wasn't sure that creating a bunch of issues discussing low-level details is a good idea while so much of this is still up in the air.

Edited by Benjamin Winger

Merge request reports