Astrabit-ST / Luminol

An RPG Maker XP-VX Ace rewrite, written in Rust with love 💕
https://luminol.dev/
GNU General Public License v3.0
94 stars 11 forks source link

Extension system #134

Open Speak2Erase opened 4 days ago

Speak2Erase commented 4 days ago

Is your feature request related to a problem? Please describe. I'd like to add optional features that RPG Maker does not have by default that may or may not require addition scripts. This has been a core goal of this project, from the very beginning. However, we really need a system for managing extensions when we start implementing them! A simple config option likely wouldn't suffice as it wouldn't patch scripts, but at the same time users with custom scripts might want to add the patch themselves.

Describe the solution you'd like We add support for an extension system a la OpenGL/Vulkan where a project lists a set of extensions it's aware of in order to enable extra functionality. There'd also be a config menu for enabling extensions, which would provide a basic description for each extension as well as a basic script patch. This sort of system could integrate really nicely with plugins as well, plugins would be able to register extra extensions in order to enable their functionality. If we decide to ship our own custom scripts when creating a new project, all/most extensions are enabled by default with patches provided.

Describe alternatives you've considered

Additional context Extensions would range from things like extra tilemap layers (no code change required on mkxp) to self switches being a textbox, rather than a choice between A,B,C,D (minimal to no code changes) and even to #133 (large code patch required)

white-axe commented 3 days ago

How is a project going to list the extensions it supports? We can't really check what a project supports based on its scripts since we don't have a Ruby interpreter.

Speak2Erase commented 3 days ago

Separate config maybe?

white-axe commented 3 days ago

That's basically the same thing as just providing a config menu and having the user manually selecting the extensions their project supports. Still, I agree that this would be better than the RGSS version selector we currently have.