Designing an expandable UI with plugins
I'm working on a game server, that will allow mods and plugins to be installed.
I'm also working on a creation kit, or content management suite (CMS), to aid in the design of various aspects of the game (such as graphics, sound mapping, NPC data, etc).
For example, let's say an NPC (non-player character) has: a location in the world
, a direction they're facing
, a name
, and a sprite
.
Then someone designs a plugin that allows NPCs to have a faction
, or city that they're loyal to
. Any crime potentially done within the city could have a negative impact on how that NPC views the player. This got me thinking about how I could design my CMS to be flexible enough to support different plugins.
In the initial state (without mods or plugins) there will be around 200 Npcs, 200 Items, 300 Objects, and 700 Other (which isn't pictured)
I have 3 different ideas on how to do this. For simplicity, let's assume that the cms will be in the form of a web application.
Option 1
CMS plugin developers (likely the people who wrote the plugin for the server) add a link to a new web page, that allows them to map an NPC to a specific faction. (similar to creation kit for Skyrim and Fallout)
- +No additional code required from CMS (save for ability to add new form)
- -Separate page/form for each plugin seems pretty heavy
- -Number of distinct links increases potentially exponentially.
Option 2
Developers add on to the existing form with the fields they need for their mod.
- +No additional code required from CMS (add scrollbar to existing form)
- +Page for each part of a plugin not necessary
- -Control must be scrollable (limited vertical screen real estate)
- -Adds additional complexity to each form (all features may be added whether they're needed or not)
- -Users have to scroll possibly through multiple pages worth of fields to get to the one they want
Option 3
A tabbed panel that auto expands. The last element would be a "+" tab (similar to a browser window). When clicking the "+" tab, a window would pop up asking them which feature they would like to add to that NPC, and would add a new tab specifically for that feature/plugin.
- +Allows users to select only the data they want for an NPC
- +NPCs can be distinct in the number of features/plugins they are affected by (only things that affect them are in the tabs)
- +Lightweight (developer only needs to add contents of panel)
- -Many mods/plugins would require horizontal scroll rather than vertical (possibly easier to get lost)
Is there another option that would allow an extendable UI in this manner?