I don't think a plugin system will be good enough for all issues (you really can't put the Qt parts in a plugin, for someone else to create a GTK or wxWidgets one, for instance).Zini wrote:That is true. We will have a plugin system for that in the editor, but obviously we can not be sure, that at some point people want to have additional tools or even a fork. But even then, they probably would be still re-using our code base, which already contains all the load/save code.
I also don't like the idea of other projects needing to duplicate our code for their 3rd party tools, because that means if we update our code (or if they spot a bug and fix their code without telling us), the two will be out of sync. I suppose this could be solved by having an external/shared lib that acts as a abstraction layer, so loading records, modifying them, saving them, etc, is all handled by the one lib with a rock-solid API.
How so? If a mod comes with a BSA, it's generally assumed it will be "registered" and used by the game. Is there a case where auto-loading a BSA from a matching ESM/ESP name will break something? Sure, the name matching wouldn't handle every case (for that we could use the ini like vanilla), but going forward with new mods, they could match the name to automatically bypass the need for ini editing.Yes, that would be the sensible thing to do. Unfortunately it would also break compatibility with MW and stops many mods from working.
Yeah, like I said there's still plenty we can do with the current ESM/P format by simply adding new records, or somehow "tagging" record data to specify if it's in a new format or not. I've been talking about you wanting to make a new format, which I think should be clearer and easier to handle instead of replicating the ESM structure.This statement I disagree with. The ESX format is good enough for our purpose. It may require some tweaking, but there is no need to replace it.
I don't think we need to support the original VM, but it may be a good idea to make a converter that takes in the original's bytecode and creates something our VM uses (kind of like what wined3d does for the d3d shader bytecode, converting it to glsl). We may need to anyway, if there's cases where the bytecode is out of sync with the text version.That is not an option. Supporting the original VM is totally pointless (it sucks and doing so would result in a large amount of work, that will give an inferior engine compared to what we have already).