Creating a generic engine for RPG(and other) plugins

Discussion in 'Plugin Development' started by Madness, Aug 21, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    Madness

    While helping @nossr50 with mcMMO we got into discussions about how to improve the system's flexibility, like how to make drop chances configurable, be it with some parameters or even by letting ppl give us a completely new formula.

    So investigated and stumbled upon @sk89q's genius and his CommandHelper plugin. That plugin is basically a scripting environment for minecraft.

    So what if, instead of creating a million of different rpg plugins every one with his own skills and nuances we created a SINGLE extremely flexible plugin that provided the fundamentals and let other plugin makers focus solely on producing balanced configuration files that scripted their own flavor of rpg?

    What if we separated the engine from the effects?

    What if rpg plugin makers had time to focus on making cool stuff like huds without having to worry why that player value wasn't changing as it should have.

    What if we allowed players to make up new skills for their favorite rpg plugin? Like adding a "whipping" combat skill based on usage of a fishing rod? With an active skill called sadism that inflicted a "bleed" DoT effect on the target?

    This is just a first post that should work as mind teaser, let the brainstorming begin.

    First of all, we should identify and isolate the components that let minecraft act like an rpg.

    First of all, player stats, be they job-based(mining, cooking, fishing), combat-based(swordfighting, archery), experience (per-character, per-class or per-job) or more generic descriptor (class(es), level, intelligence, stamina, agility, wisdom, mana...), we would need a way to store and recall those information and it should be configurable by groups.

    Then, events, most plugins of this kind either override the default functionality of wielded items or provide completely new ones, sometime they even add events to things like jumping, falling, placing block or swimming, we need a flexible way to write a configuration file that captures those events and executes commands (as in /command) with appropriate parameters when those event happens.

    Finally effects, be they directly invokable through typed commands or the result of a configured events, they should be able to create a plethora of precooked effects with the given parameters, pulling information from player stats and formulas existing in the configuration files, to produce a desired effect.
    The number of effects available could end up being really, but if we develop the engine right, we might offload the effects work to external plugins (imagine for instance a "makeItDay" effect simply calling the "runas('~op', '/time set 0')").

    I'm still not sure where we should manage the leveling up, if we should add a callback effect on the experience type of stats, or if we should make an event "onIncrease" for every experience type of stats that calls the "levelUpIfYouMust" effect.

    By the way, if you are familiar with MVC frameworks you might find I'm not pulling this from thin air. ;)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 18, 2016
Thread Status:
Not open for further replies.

Share This Page