Code:
1. Promodeus's Core API [90% Implemented, Adding Automatic Error Handling (fail safe)]
------------
Note: I've taken the two separate Data and Command APIs and have unified them and added additional functions that better target what the Promodeus platform strives to offer.
------------
a. Provides a structured way to create mods and interact with rust's internals
i. The goal of Promodeus is to reduce mod design complexity by providing a middle ground between your mod and Rust's internal code
ii. Promodeus is an extension of Rust, and as such, will target C#
b. Provides access to basic user/game information
i. Name, ID, User Privilege (admin,mod,user,custom), Inventory, Location, ect.
ii. Information such as inventory, location, user privilege, ect. are able to be modified and reflected for all mods to access
c. Provides a structured way for mods to selectively store data that persists from one server restart to the next, is automatically handled, and is always there
i. Internal mod data, data which only the mod can access
ii. Admin settings data, data which is available to the admin to modify the behavior of the mod
iii. Shared mod data, data that the mod intentionally allows other mods using the API to access, can be [readonly]/[read/write]
d. Provides a structured way that mods can specify slash commands, receive arguments, and respond
i. Allows the mod to easily set a required user privilege to restrict access to the command
ii. Allows the mod to easily provide a help response
iii. Allows multiple identifiers per command, to more intuitively handle dynamic use
e. Hooks
i. Provides information about events that happen in game as they happen
ii. I want to do this without "hacking" other dlls permanently, aka patching. I will probably modify the method's IL during runtime
f. Automatic error handling and active error prevention
i. Protects the entire server from crashing in the case that a mod encounters a runtime error
ii. Provides layers of protection for all other mods and their data
g. Automatic logging
i. Logs just about everything that happens; errors and normal operations
ii. A seperate log for mods logs key events, in addition to whatever the mod designer logs
2. Mod Loading [Implemented]
------------
Note: The method used to load mods is similar to how LeatherLoader work, in that Promodeus also exercises the common practice of injecting itself into he Unity's main asset bank, loading itself, and then loading other mods from some internal process.
------------
a. Mods that use Promodeus don’t have to worry about loading themselves into Rust’s assembly, Promodeus does this for you
b. There are very specific reasons I'm implementing Promodeus's own loader, such as:
i. First and foremost, the Core API's architecture requires proper instantiation
1. A Promodeus mod is not a standalone mod, it becomes part of the Promodeus platform. A simple loader cannot support this functionality correctly
ii. Authentication
1. Mods built using Promodeus are done so in a controlled environment that provides security to both the mod and its environment (other mods)
iii. Future implementation expandability
1. In such an event as a new feature
c. Error handling is performed at a fundamental level, and ensures Promodeus's stability
3. Admin Control Panel (For Admins) [Not Yet Implemented, Prototyped (proof of concept)]
a. From your desktop simply launch the Promodeus Admin Control Panel and have access to all of your mod’s settings (that use Promodeus)
b. Setup is as easy as entering your FTP information
c. Adding, deleting, and updating Promodeus mods
------------
Note: The following features for the Admin Control Panel aren't in design yet, as I do not have access to the hardware to provide such services. I would love to provide these services. These require a central server dedicated to managing these functions with a large storage capacity and high bandwidth. I'm open to ideas.
------------
i. Structured automated approach to pushing queued updates for mods out to server admins / auto-update
1. Updating mods without restarting mods (The loader can support this functionality)
ii. Mod Authors "publish" their mods to Promodeus, and the Promodeus "network" (anyone server with Promodeus) will then gain access to install and update them
iii. Global Mod settings/data/shared data, across the entire Promodeus network, mods can access their global mod data from one server to the next
1. The potential implications of such a feature is huge. If you think about it, global ban lists, cross server chat, cross server items, cross server anything would then be possible.
4. Promodeus Essential Mod Pack [Implementing]
------------
Note: I want the first mods to be built using the full potential of the Promodeus platform, as such, they will come with Promodeus by default. These mods, in some cases, even have special integration with Promodeus, as they further extend the value of specific systems that all mods will have access to
------------
a. Chat Channels
i. Users can create, password protect, join, leave, and manage channels and their access
b. Custom Server Ranks (admin,mod,user,custom)
i. Create your own ranks to promote/demote people to
ii. Manage your ranks from the Promodeus Admin Control Panel
iii. Has deep integration with the platform and allows other mods to use these ranks to control access
c. Server Moderation
i. A basic “Mod” rank that provides players with the rank the ability to kick and ban (this rank is customizable as well, but comes with Promodeus by default)
ii. Basic moderation commands ported to slash commands.
d. Door Sharing
i. Users can share all their doors with other players
ii. The server moderation system allows admins and custom ranks with sufficient privileges to open user’s doors (controversial, meh, talk to me about it, let's debate in the comments)
iii. --EXCLUSIVE, STAY TUNED--
e. Private Messages
i. Users can easily send messages directly to their friends.
ii. --EXCLUSIVE, STAY TUNED--
f. --EXCLUSIVE, STAY TUNED--
i. --EXCLUSIVE, STAY TUNED--
g. --EXCLUSIVE, STAY TUNED--
i. --EXCLUSIVE, STAY TUNED--
h. --EXCLUSIVE, STAY TUNED--
i. --EXCLUSIVE, STAY TUNED--
ii. --EXCLUSIVE, STAY TUNED--
i. Utilities
i. Location
j. Your Mod?
i. Want your mod to be a Promodeus exclusive? Want your mod to launch with Promodeus? Want your mod to run on the test server? Contact me personally.
6. Future Plans [WIP, These might as well be considered my thoughts]
a. I'm investigating the possibility of GUI frontends for mods. And with that a simplified API for it as well, but that isn't even being thought of at this time. This requires client side patching though and also a new server searcher/mod installer (aka complicated, far future, it's just in the back of my head as a "I REALLY WANT THIS")
b. More APIs that directly interface with Rust's internals