Achievements plugin

● ARCHIVED · READ-ONLY
Started by Logan C. 20 posts View original ↗
  1. A new string from title and in-game menu which opens an achievements screen with goals we can set. Images (or maybe icons) with every achievents has to be settable too.

    Most important idea of this - is possibility to keep earned achievements whatever you do. Even if you replaying a game or loading an old save file. Possibility to manualy reset achievement progress could be handy as well.
  2. Logan C. said:
    A new string from title and in-game menu which opens an achievements screen with goals we can set. Images (or maybe icons) with every achievents has to be settable too.

    Most important idea of this - is possibility to keep earned achievements whatever you do. Even if you replaying a game or loading an old save file. Possibility to manualy reset achievement progress could be handy.
    I like this as well, but would also like to add the ability to assign rewards (gold, exp, items, Yanfly Job JP etc.) for earning the Achievements.  
  3. I would do this, but i currently have a christmas present to code :>
  4. I would love this as well.
  5. I would also like this! It seems like a system in many games now-days and something that would be very interesting!
  6. I'm currently planning to do this and collect features to be implemented:


    - What kind of achievements should be supported?


    - Should i rather hook into each method involved (so, if there is an achievement when having 100 pieces of a given item, check this every time an item is obtained) or check in intervals, like every few seconds, which delays the achievements, but will work independent of the requirements?


    - (Optional) popup, when the achievement is obtained? I might decide to use my Generic Popup plugin as a dependency.


    - Special popup scene to view all achievements, callable from in-game menu/title?


    - How to handle not-yet-achieved achievements in that screen (completely hide them, only show their name, show "???" to indicate that there's something or show everything. Configurable per entry?)


    - ... more stuff, that i don't think about, currently.
  7. Iavra said:
    I'm currently planning to do this and collect features to be implemented:

    - What kind of achievements should be supported?

    - Should i rather hook into each method involved (so, if there is an achievement when having 100 pieces of a given item, check this every time an item is obtained) or check in intervals, like every few seconds, which delays the achievements, but will work independent of the requirements?

    - (Optional) popup, when the achievement is obtained? I might decide to use my Generic Popup plugin as a dependency.

    - Special popup scene to view all achievements, callable from in-game menu/title?

    - How to handle not-yet-achieved achievements in that screen (completely hide them, only show their name, show "???" to indicate that there's something or show everything. Configurable per entry?)

    - ... more stuff, that i don't think about, currently.
    I personally think we should be able to assess it from the menu and it only checks whenever we click on it in the menu, so if it is done then we can claim the reward, but there should be an update button which checks the requirements of the achievement's update button you pressed, then enables the claim button which is greyed out when you haven't met the requirements yet and when it hasn't checked it yet...

    There should also be an Update plugin command just in-case you want to auto update certain achievements at certain times.

    I hope that makes sence...
  8. Iavra said:
    ...

    - Should i rather hook into each method involved (so, if there is an achievement when having 100 pieces of a given item, check this every time an item is obtained) or check in intervals, like every few seconds, which delays the achievements, but will work independent of the requirements?

    ...
    I'm not sure if you asking a questions or stating your plans :) .

    Everything I hoped for is to bind some specific variables to specific achievements if their goal is to gather something, like this:

    Spoiler
    b0ab282c345ed92f6a508a5ab71b2f70.jpg
    And binding it to a switch, if it's a single type of achievement (or maybe variable will do too, I don't know).

    Spoiler
    4ca1ec3fabee7f81407cd516dbd3a45f.jpg
    About checking - manually called plugin command via events will do just great for me, personally. And i think that the Kloe's "checks whenever we click on it in the menu" option will nerf popups and, as result, will cause some kind of isolation of achievement progress from a gameplay, wich will strike a lot of fun off the idea.
  9. Logan C. said:
    About checking - manually called plugin command via events will do just great for me, personally. And i think that the Kloe's "checks whenever we click on it in the menu" option will cause some kind of isolation of achievement progress from a gameplay, wich will strike a lot of fun off the idea.
    Yeah, I sorta agree with you there but could we not have both? Whenever a variable goes up, check if there is a achievement attached and do whatever it needs to there, always check when you go into menu and whenever you use a certain plugin command!  BD   

    EDIT: Also to set them up in the first place we could do it either by plugin parameters or by .json or by .txt file! Either of the three ways would work!
  10. Tying them to variables/switches is easy, but the plugin user would be responsible for (for example) setting a variable to the number of item X in possession or setting a switch to true, if a given amount is reached.


    Regarding configuration, that will depend on how much information i need to setup an achievement (name, switch/variable id, icon/picture to be displayed, hide if unknown true/false). If it's doable, i'll use plugin parameters, otherwise it will be either an external file or notetags in a common event.
  11. Here are my two cents:

    Stay away from external files. They can easily be edited by someone playing the game with access to the files (like on windows) unless the developer finds some way to compact or encrypt everything.

    Personally I would love setting everything in Parameters if they fit. Like 100 different Achievements, and for each achievement have Name, Description, Type (Variable, Switch, or Command), ID (for variables or switches id), and Value (for completion, like 100 for variable or true/false for switch or command)

    And when I say command, i mean using a plugin command/script call, because I find that more useful.

    I believe a popup when achieved would be nice for an optional setting.

    Also, make the achievements be accesible by a scene script call, and make menu access optional.
  12. I'm definitely not adding 100 plugin parameters like "Achievement 00" - "Achievement 99", because that would bloat the file way too much. Also, if someone has access to the unencrypted files, it doesn't matter where the data is stored, since everything is available in a human readable way.
  13. Oh true. I didnt even think about being able to access the plugin itself.

    In that case, do an external .json or .txt xD
  14. wrigty12 said:
    Oh true. I didnt even think about being able to access the plugin itself.

    In that case, do an external .json or .txt xD
    Yup, that would make everything easier!!
  15. This plugin sounds like a good Idea
  16. Just wanted to call back: The core system is working so far, but missing script calls/plugin commands to manually complete/reset achievements. Currently i'm checking achievements in configurable intervals and asynchronously (so the game won't suddenly lag) save to a global savefile, once a new one has been completed, so achievements persist between games.


    Menu and popups aren't done yet, but i might do these as separate plugins, so they can easily be swapped out for different ones.


    /edit: The core plugin has been finished: http://pastebin.com/wTTmQDwH
  17. Here is a very simple first draft for the menu: http://pastebin.com/V02LpTT4

    It can be added to both the title and game menu and offers the possibility to hide achievements with secret = true. I'll add more customization options, but i wanted to hear some opinions and suggestions, first (i'm horrible with menus...anything graphic-related, actually).
  18. Iavra said:
    Here is a very simple first draft for the menu: http://pastebin.com/V02LpTT4

    It can be added to both the title and game menu and offers the possibility to hide achievements with secret = true. I'll add more customization options, but i wanted to hear some opinions and suggestions, first (i'm horrible with menus...anything graphic-related, actually).
    I'll post a picture how the scene could look like, if it helps. But the menu addon doesn't seem to be working. I placed it under the core plugin and there's no new options to open achievements scenes. :(

    And, please, don't decline the manual checking via plugin command. I planing to do over 70 achievements and checking all of them every few frames doesn't seem right)
  19. The plugin works for me, though i only have my test project and manually edit the plugins.js (yeah, i know, it even tells me not to do so), so i might have missed something. I'll test it once i get proper access to MV, again (~ 2-3 hours).

    I'll add the option to specify 0 for the interval to disable automatic checking and add script call / plugin commands for manual testing.

    /edit: The core plugin has been updated. You can now specify a value of 0 or lower for the plugin parameter "Update Interval" to disable automatic checking. You can also use the script call "IAVRA.ACHIEVEMENT.check()" or plugin command "Achievement check" to manually check all achievements for completion.

    Note: If you manually complete or reset an achievement(s), there is no need to manually check, afterwards. So, if your game only contains achievements of type "none" (which can only be manually completed, anyway), automatic checking can be safely disabled.