Promodeus - The first all in one Mod Platform

With a recent influx of mods, I wanted to announce Promodeus, although not finished, I figured now is the most opportune time.
I’ve bleeped some details out so that they can remain exclusive to Promodeus while it is being developed (anything other than the API that already exists as a feature of some other mod is NOT bleeped), but will be announced in the near future.

So what exactly will Promodeus offer?

As of right now, Promodeus is planned to provide 5 essential functions:



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


Interested?

I plan to start testing of Promodeus on my server first, sometime within the next month.
If you’re a GSP and are interested, contact me please.

I plan to release the API after it has been tested thoroughly.

**Want to get involved in development? **
Contact me.

Ideas?
GOOD! I LOVE IDEAS. :quagmire:
Post them please!

Contact Info
promedeus@live.com

Nice. If only multiplay supported mods.

so, your announcing a loader that’s not going to be released for awhile?, your only accepting godly coders? everything in your mod pack has already been achieved, you consider door sharing exclusive? your not willing to abide by some legal stuff to make GSP’s feel secure?

GL bro.

Lol, you mad bro?

mad about someone who, in his very limited spare time, is in the middle of creating something that already exists?

somad

XEnt22,

Thanks for your input! Much needed and greatly appreciated!

Yes, existing mods that would like to switch to Promodeus can do so when it is released. Which is a very easy task I might add! The loader is part of the Promodeus platform, and will not be treated as a separate piece.

Ah, yes. Do companies let any “1337 coder, i write scriptz” in the door? Don’t think so. Neither will I.

Erm, false. If you read the post thoroughly, then everything denoted with “–EXCLUSIVE, STAY TUNED–” has not been achieved by any existing mod, and I highly doubt they will! Thanks for the concern though. The whole point of providing existing mods is to make Promodeus more attractive to use as a Mod Platform.

Um, no. I couldn’t find where I said that! Please point that out, it must be a typo. There is an exclusive feature to door sharing for Promodeus though!

Yes. I have way too many legal bindings already. In fact, that is precisely why I cannot have any more!

Thanks, won’t need it.

Also, in the future, use “you’re” when you’re using the contraction for “you are” instead of “your.” I’m seriously not trying to be a d***, just helpful. :wink:

That’s where you said it. =)

Ah, that’s an addition to door sharing that’s exclusive. I’ll edit it to make it more clear.

You use several sentence fragments and run-on sentences. You’ve stated you’re a sophomore, and I guess this holds true.

Have you ever heard someone reference glass houses?

As my creative writing professor once said,

Sentence fragments and run-on sentences are jokes. Grammar is to be used as an expression and extension of your writing.

While you could argue that xEnt22’s text is certainly colorful, it is overwhelmingly a negative reflection. I was merely suggesting better practice for his future endeavors so he doesn’t sound illiterate. At the same time you could argue the same for me, that my choice of sentence structure is a poor reflection of my being. **** that.

Although it is always nice to have another type of mod around, I’m not sure if you have the time for something like this. I don’t know your life but you’ve stated yourself that you are pretty busy with school work. Aaaaaaaaand, with the way the mod system is currently “working”… you’ll be releasing a lot of updates and working with GSP’s to get the updates pushed onto their servers.

Listen, why do you care if parts of the mod are already out there, just stfu! He has stated that he is making new additions that would be specific to his mod. What don’t you get about that? Why complain about that?

Why do I get the feeling that this account, just created today, is Promedeus as well?

Most certainly not. If some admin would like to verify that Flair’s IP address is different than mine, to authenticate this claim, I would appreciate it.

[editline]12th January 2014[/editline]

You’re correct, I’m very busy. But I also can’t stand doing nothing, and I do still manage to have free time occasionally.

I’m not sure I like the way the mod system is currently working anyways, because from what I can tell, it’s really not. As Garry himself has expressed a concern for this very issue.

I’m a little confused as to why I would be “releasing a lot of updates,” because when Promodeus is released, it will have been properly tested, and any additional mods that use Promodeus can easily be updated using the Promodeus Admin Control Panel. The only thought that comes to mind that would trigger an update is if any dependencies are changed, which are very few. The APIs currently implemented are also primarily independent of Rust. Other than the interception of chat messages, I leave most of the work up to the external mods, of which include those in the Promodeus Essential Mod Pack.

Since Rust is in Alpha, I think this is an appropriate time for change to happen.

GSPs would actually have to do less work if they use Promodeus, because they will not have to update each individual mod. The Control Panel allows direct access, from the admin’s desktop computer, to their server’s Promodeus mods. This eliminates constantly updating each individual mod, and leaves it up to the server admin to moderate this process.

Why do I have the feeling that you are retarded? Oh probs because you are. I’m not promedeus. I’m Flair. Completely different person.You still mad?

Can we all remain calm please.

Hey.

Kid.

You’re a fucking retard.


(User was banned for this post ("Flaming" - Craptasket))

this mod looks like it could be a good one then

By the way you might want to contact HFB NOW so that when the mod is ready we will only have to wait a month for them to add it

Thanks!

Haha, thanks for the tip, will do!

Have a good one!
-Promedeus

As a GSP, I’m just not sure what this offers over the current options, especially with Neolith right around the corner.

Also exclusives are garbage, even if I was to offer hosting help I would want it public as modding games should never be exclusive to a few hosts.