Drakkonis

Veteran
Veteran
Joined
Mar 5, 2021
Messages
135
Reaction score
97
First Language
English
Primarily Uses
RMMZ
Really Experimental Temporal Reliability Operations - R.E.T.R.O. v0.05
Drakkonis

Introduction
This plugin has the rather lofty goal of allowing MZ plugins that are otherwise incompatible to function in RPG Maker MV.
It is a work-in-progress, and is nowhere NEAR ready for a full release.

Features
Currently allows MZ plugins that deal with colors via ColorManager to function.
Currently allows window creation using MZ's rectangle object.
Currently allows MZ plugin commands to function, though compatibility depends on what the function in question actually tries to do. RETRO merely allows them to actually be called correctly. This is a slightly advanced feature, because the game dev will need to have at least some ability to navigate the plugin file to know what to type in with MV's plugin command interface.
Currently allows basic custom scene construction. Only two plugins tested so far, so this feature is not labelled complete.
Currently allows some Sprite_Gauge functionality. MV and MZ handle gauges with completely different functions, and RETRO doesn't currently detect plugin order to see if an MZ plugin SHOULD be overwriting the MV gauge functions or vice versa, so I've added a parameter to decide if MZ Sprite_Gauge functions should be used in place of MV gauge drawing when there's any Sprite_Gauge data to use. Turning it off will turn off any and all MZ sprite gauge functions. Since by default in both MV AND MZ, gauges aren't drawn for enemies, any plugin that allows enemy gauges MIGHT not work properly yet. I'd need to get my hands on one to test.

WIP
Working through Casper's CGMZ plugin library. So far, one plugin mysteriously non-functional. No crashes on it, so figuring it out is low priority, as I've sunk too much time into it already. I'll come back to it.

How to Use
Currently the name of the file you save this to doesn't matter, though that may change in the future. To be safe, save it as "RETRO.js". Make sure it goes above all MZ plugins you're using in the plugin list.

For MZ plugin commands, find the "@command" param in the top part of the plugin in question. This will be the plugin command you type in. For any arguments, look at any params labeled "@arg" below that command. Note the order, this is the order you'll write your arguments in. You may need to look at any other declared elements of each arg, and possibly at the function of the command itself to figure out what kind of information needs to be in those arguments. This is currently the only feature of RETRO that requires some form of knowledge and specific action on the game dev's part.

Update to Plugin Commands (v0.05) - Some of CGMZ's plugins have the same names for some of their commands, so I've had to overhaul the system for that a bit. Before, you simply typed in the command name and then the arguments, like any MV plugin command. Now, you need to type the plugin's name as part of the command, with a forward slash (/) between the plugin name and command name. If the command name has a space(like some of CGMZ's), type the command in without those spaces. The plugin name is the same as the name of its .js file.

For example, to call the scene in CGMZ's Achievements plugin, you would type "CGMZ_Achievements/CallScene true" as the plugin command.

Plugin Commands / Script Calls
This plugin offers no commands, and any custom functions declared are really only useful within the plugin code itself.

Known Functional Plugins
The plugins listed here are ones that I or others have personally tested with RETRO, and can confirm are functional.
Coelocanth's Item Crafting
Drakkonis' Plugin Core
Drakkonis' TP Control

Casper Gaming Plugins - His Core is required, full functionality unknown, but no issues so far with any of his plugins on this list. Some of these plugins are compatible only because the core doesn't break with them, if they were standalone they wouldn't even need RETRO.
Casper Gaming's Achievements
Casper Gaming's Encyclopedia and Bestiary
Casper Gaming's Extra Stats
Casper Gaming's Infinite Colors
Casper Gaming's Item Crafting
Casper Gaming's Item Conditions
Casper Gaming's Menu Theme
Casper Gaming's Splash Screens

Partially Functional Plugins
The plugins listed here are technically functional, but currently have certain issues that will be explained for each. I intend to fix as many of these as possible.
Casper Gaming's Game Info
Issue: This plugin allows you to make buttons on the title screen that will open a URL when clicked. Currently those buttons don't work, as their object type doesn't exist in MV.

Download
Really Experimental Temporal Reliability Operations

Terms and Credits
This plugin is free to use in any project, commercial or otherwise. Make sure to credit myself(Drakkonis), and anyone else mentioned below:
Restart - Created FOSSIL and inspired the creation of RETRO.

Miscellaneous
This is a work in progress, and it will probably be a long time before it's ready for a v1.0 release. As such, I don't recommend using it in its current form for a finished/released game unless its current compatibility is sufficient for you. Until it's released at v1.0, RETRO is to be considered an unstable build at all times. I'm only one guy, and I'm just getting started learning MV's code and the differences between it and MZ, and most functions/features are being worked on by repeatedly throwing an MZ plugin at it until it stops throwing a fit. As such the only plugins I'll be able to test RETRO on are the ones I have access to, namely my own and any freely available ones I can get my hands on. Progress will probably be a little slow as I intend to solve any issues a single plugin has with MV until it works, before moving on to the next.

If anyone wants a paid plugin to be compatible with RETRO, someone who legally has that plugin would need to either update their copy of RETRO, or assist me with the appropriate updates. I don't intend to purchase plugins solely to test with RETRO.

On that note... this is not porting any plugin from MZ to MV, that's an edit/update to the plugin itself. While RETRO does read the parameters declared in a plugin to make plugin commands work, it does not write anything to those plugins, and solely acts as a go-between.

Quite a few MZ plugins are(or start off as) ports of MV plugins, so if you like a plugin but it's for MZ, check around to make sure it's not a port of an MV plugin that will work just fine. While my vision for RETRO would allow the MZ version to work just fine, versions written by the original author should always be preferred, as their functionality is guaranteed from the get-go.

Final note: As I said above, I'm just one guy, working on this in my spare time, with only freely-accessible plugins available to me for testing. I have a family and a full time job, so that spare time is pretty sparse, so don't expect fast updates. I appreciate any and all bug reports, feature/plugin suggestions, and assistance with getting paid plugins functional(though that's low priority as I would hope their issues would be the same as one a free one would run into).

I've also been made aware that MZ plugin commands may not function in mobile and web versions of a game, due to how RETRO gets its data. Any issues on that front are intended to be fixed for the v1.0 release.
 
Last edited:

Drakkonis

Veteran
Veteran
Joined
Mar 5, 2021
Messages
135
Reaction score
97
First Language
English
Primarily Uses
RMMZ
Version 0.02 update - Most ColorManager functions related to color selection now implemented. Those without MV analogs have been omitted. If a plugin requires any of the omitted functions, I'll add them in. They all route to MV's basic system window skin, so any dynamic runtime skin changes probably won't be supported this way. Testing is required for that part, but it's low priority and I don't have the relevant MV OR MZ plugins at the moment.

Basic scene construction is now enabled, at least the parts that Coelocanth's Item Crafting uses, as that was the first plugin I used to test RETRO(It's pretty much the only MZ plugin I already had on hand that had custom scenes as well as plugin commands, so it was an efficient option). It has a few functions still in place just in case I can get custom help window positioning enabled. If I can't find a clean way to do it, I'll be modifying the modular functions to not reference them. I haven't really looked into it too deeply, as I'm preferring to get as much function working as possible before I start working on the form of functional features.

Now I need to find another MZ-only plugin to work with. I'd appreciate any suggestions, with the caveat that they're freely accessible. In the meantime I'll be making sure all my own stuff works fine. The only reason I didn't START there was because most of mine require a bit of setup to test, and aren't REALLY that complicated as far as the MZ-only functions they use. That and I knew scenes and windows were likely to be an issue, and none of my plugins mess with that.

...I'm tempted to see if VisuStella plugins work, even though they're basically just upgraded ports of Yanfly's... I don't have any of their paid stuff, but I did pick up their free sample project. I've not actually USED any of them though.
 

Vis_Mage

Novice Magician
Veteran
Joined
Jul 28, 2013
Messages
659
Reaction score
217
First Language
English
Primarily Uses
RMMV
This sounds really exciting, especially as someone who's still primary using MV. It can open up a lot of possibilities as devs start moving over to MZ. I look forward to seeing this progress :kaothx:
 

ShadowDragon

Realist
Veteran
Joined
Oct 8, 2018
Messages
3,886
Reaction score
1,479
First Language
Dutch
Primarily Uses
RMMV
I use primairy MV, learning JS and create plugins for MV, still, MV is better
than MZ while it deal with minor bugs, and new plugins, but MZ has parts
that is better than MV, and fetures that MV should have.

but while more plugins are made and compability and converted, I do believe,
once MZ is really stable like MV, MZ will take over faster.

but for now, it has it's issues for now, but also some things like the menu
and backbutton I dont like at default. but the look is smoother with the mouse
what MV dont have.

So if this R.E.T.R.O. project becomes stable like FOSSIL will too, or something
that it can be "combined" so it can be used for both MV and MZ, it will be
probably one of the sweetest plugin ever XD
 

Drakkonis

Veteran
Veteran
Joined
Mar 5, 2021
Messages
135
Reaction score
97
First Language
English
Primarily Uses
RMMZ
Version 0.03 update - Basic Sprite_Gauge functionality implemented. Kinda. In MZ, gauges are their own sprites, where in MV the gauges are simply drawn on the relevant windows directly. So RETRO merely stores the Sprite_Gauge information and then uses MV's native gauge drawing with that information. This means that the gauges will still look like MV gauges and not the MZ ones. There are a few things to note though. RETRO does not currently detect plugin order, so because MV uses a draw function, and MZ uses independent sprites, RETRO doesn't know what plugin is overwriting what, if you have a plugin for each engine that deals with the gauges. To get around that I've included a parameter that controls whether or not MZ's sprite gauges will overwrite MV's gauges. Also, the MZ gauge overwrite function copies the base MV draw function, so if you're using any plugins that change the gauge looks or locations, the overwrite function will have them where vanilla MV sticks them. I'm not sure there's a good way to fix that at the moment, more than likely I'd need to add compatibility patches for each plugin individually. If/when I get the relevant plugins to test, I'll be able to see if there's any kind of universal solution available.
Remember, I'm writing RETRO by finding a plugin that breaks, then fixing those issues. So anything not functional now isn't so much that I've MISSED something, it's that I have yet to test a plugin that needs something I haven't put in yet.
Also fixed a bug I didn't know about from the v0.01 release. It caused the plugin manager to not display ANY of RETRO's information. Since I added a parameter for this release that was obviously a problem, and was in fact how I discovered it. The fix should also make the MZ plugin command register more efficient.

Editing to add updates because of forum double-posting rules.

Version 0.04 update - Help windows can now be positioned correctly with MZ plugins that use MZ's modular functions to build custom scenes. Those scenes will no longer need to be rearranged. This also fixed an issue with custom scenes that didn't even USE the help window.
Implemented MZ's version of textStates. TBH I REALLY don't like how this came to be, as it was a simple copy/paste. Feels a little like cheating, but the MV version is rather simplistic, and the plugin I was testing at the time didn't just call DrawTextEx, which would route through MV's version. Instead it copied the code FROM the MZ function, so all the sub-functions had to be added to make it work. I might try to appease my own perfectionism on that later, but it works, so it stays until I run low on other issues to fix.
Added a function to detect if a function was called by an MZ plugin, an MV plugin, or by MV itself. I really only care if an MZ plugin is making the call or not, but it can detect all 3 options with the aid of another function. Don't think many other people will have need of such a function, but it's there.
Added a few other miscellaneous bits as errors popped up. Mostly minor graphics stuff.

I think I'm gonna stop updating the plugin's help section outside of the version history, as well as the opening post's feature list. Starting to get a little unwieldy. Probably gonna keep it all in a text file in the repository with a link in the post, for those that are interested in following RETRO's progress that closely. I imagine most people are going to be more interested in "Does this work with X plugin?".
 
Last edited:

ShadowDragon

Realist
Veteran
Joined
Oct 8, 2018
Messages
3,886
Reaction score
1,479
First Language
Dutch
Primarily Uses
RMMV
most authors that has plugins for MV, and working in MZ, why testing those
MZ plugin if there is a MV version for it?

there are some that made it compitable for both, so I should rather "aim"
for MZ plugins that arent for MV =)

CGMZ_InfiteBalloons is one, he wont make it for MV, so its a nice one.
J_green has a plugin for MZ, but wont make it for MV, also a nice one to test,
pixel movement and some other nice plugins by Ocram for example for MZ,
which isn't for MV, those are probably better tests though :)

but nice job making it, because I saw some neat plugins for MZ not for MV.
so it can work out nicely if it works outstanding beyond it.

not to mention of " @Restart " that create FOSSIL for MV plugins for MZ,
that arent available or cannot port over because they dont have the MZ version.

so both of you do a pretty nice job for the community :)
 
Last edited:

Drakkonis

Veteran
Veteran
Joined
Mar 5, 2021
Messages
135
Reaction score
97
First Language
English
Primarily Uses
RMMZ
most authors that has plugins for MV, and working in MZ, why testing those
MZ plugin if there is a MV version for it?

there are some that made it compitable for both, so I should rather "aim"
for MZ plugins that arent for MV =)

CGMZ_InfiteBalloons is one, he wont make it for MV, so its a nice one.
J_green has a plugin for MZ, but wont make it for MV, also a nice one to test,
pixel movement and some other nice plugins by Ocram for example for MZ,
which isn't for MV, those are probably better tests though :)

but nice job making it, because I saw some neat plugins for MZ not for MV.
so it can work out nicely if it works outstanding beyond it.

not to mention of " @Restart " that create FOSSIL for MV plugins for MZ,
that arent available or cannot port over because they dont have the MZ version.

so both of you do a pretty nice job for the community :)
The intent is to allow as close to 100% compatibility as I possibly can, and it's possible that an MZ version of the MV plugin might have MZ-only features that RETRO hasn't had to deal with yet. Since I'm not intimately familiar with all the differences between MV and MZ, I discover the differences by trying to run an MZ plugin and seeing what breaks. Eventually (hopefully soon-ish) I'll get to a point where most plugins will work without further additions/modifications to RETRO.

And I do specify in the original post that if an MV version of a plugin exists, it's better to use that, since compatibility is almost assured, depending on what other plugins you're using, obviously. I mainly suggested trying to test VisuStella's plugins both because of my "discovery" method, but also because you never know if someone decides it would be hilarious to intentionally run the MZ version instead of the MV version. That and VisuStella plugins are mostly seen as MZ ports of Yanfly's plugins, but as far as I can tell, that's only TECHNICALLY true. VisuStella is a TEAM of people, where Yanfly worked alone, I believe. And it seams some functions are either combined or "remixed", where one VS plugin does at least PARTS of what several Yanfly plugins were needed for.

I'm aware of CGMZ and Ocram having their own plugin libraries, it's a logical place to start. I've already started on CGMZ's stuff. I've already had to revamp some of my code twice to accommodate the seemingly odd way CGMZ does things.

As more and more people start switching to MZ, or START with MZ, more and more plugins will be made that only MZ has the tools to handle, leaving MV devs in the dust without a lot of modifications, either to their MV engine or the plugin itself. I see that as in inelegant solution. I originally thought about making all of my plugins compatible without separate versions by detecting what's being used, but when I saw FOSSIL, it allowed me to see that a plugin that acts as an interpreter is possible. RETRO is allowing me to learn MV's code, the differences between it and MZ, and really challenging my knowledge of javascript and programming abilities.

Between all the moments of banging my head against the wall either when something refuses to work, or I discover that my problem was something STUPIDLY simple, I'm actually enjoying the whole thing quite a bit. I get quite a bit of a thrill when another plugin function I've been struggling with finally works.

Honestly some of the slowest parts are learning how these plugins are supposed to be used, since I've already ran through the MZ-only plugins I'd grabbed for my own projects. Seeing as I'm actually EXTREMELY new to the current RPG Maker scene, it was a VERY small list. As in just the CC_ItemCrafting one. Everything else was either an MV plugin that worked just fine, or something I wrote myself. It's kind of hard to make sure that the plugin works fine with RETRO if I'm not aware of how it's meant to be with MZ. A little time consuming, especially for those plugins that require a bit of setup if I want to try to test ALL of their features.
 

ShadowDragon

Realist
Veteran
Joined
Oct 8, 2018
Messages
3,886
Reaction score
1,479
First Language
Dutch
Primarily Uses
RMMV
I would say, 100% might be a nice goal, but also probaly (almost) impossible.
even if you get it working for 95%, it's still a nice achievement.

keep up the nice work going though =) many people would love to use it
if most majority of plugins work :)
 

Drakkonis

Veteran
Veteran
Joined
Mar 5, 2021
Messages
135
Reaction score
97
First Language
English
Primarily Uses
RMMZ
Version 0.05 Update:
I've overhauled the way RETRO grabs plugin information, and the way MZ plugin commands are used. See the note in the original post.
MZ plugins can now change a sprite image's hue correctly.
Fixed a bug with the sprite gauge implementation that would crash the game when attempting to draw actor gauges after loading a save game. This was caused by my attempting a coding shortcut that doesn't work with class objects. It worked properly until a game was saved and then loaded, hence why it survived this long.
I would say, 100% might be a nice goal, but also probaly (almost) impossible.
even if you get it working for 95%, it's still a nice achievement.

keep up the nice work going though =) many people would love to use it
if most majority of plugins work :)
Honestly I think even 95% is pushing it. But I aim for the highest I can get. I get RETRO compatible with plugins by trying to run an MZ plugin on MV and seeing what doesn't work. This means that for every plugin I don't know about and/or can't test (mostly paid ones, unless I purchase them for my own projects I'm not going to have them available. I'm not going to buy plugins for the sole purpose of testing on RETRO, that's a waste of money), there's a potential blind spot.

This is pretty cool! :LZSjoy:
Thanks!
 

estriole

Veteran
Veteran
Joined
Jun 27, 2012
Messages
1,483
Reaction score
721
First Language
indonesian
first of all... thanks for this great plugin... Lots of ppl ask for me to create MV version of my latest MZ plugin via PM... and i still don't have time to do that... i think i will suggest this plugin instead creating MV version... hope this plugin become stable and work perfectly so i never have to create MV version for every MZ plugin i made in the future... because that's a lot of time honestly... :D... great job once again :D.
 

OcRam

Servant of the Universe
Veteran
Joined
Aug 2, 2016
Messages
699
Reaction score
836
First Language
Finnish
Primarily Uses
RMMZ
Indeed this must be one of the greatest individual plugins ever (with FOSSIL)!

These projects are not easy ones to do, because there are literally thousands of plugins and each of them has been made differently.

I will definetly contribute my part of it, if you allow it.
 

ShadowDragon

Realist
Veteran
Joined
Oct 8, 2018
Messages
3,886
Reaction score
1,479
First Language
Dutch
Primarily Uses
RMMV
@OcRam your plugins are awesome, so yo know what you do, while you
own MZ and create plugins for MZ, you can definitely contribute on how
functions works and make it work probably.

While create plugins creators have MZ or might go to MZ, some make it
compatable for both MZ and MV in 1 plugin, even than, there are issues,
sometimes even not possible and a seperate plugin must be made,

but as for for plugin commands, it would be possible to create both in
1 plugin, as for function, that depends differently.

but I saw some pretty nice plugins for MZ, not available for MV, and while
I dont have use for them atm, but when I do start a new game in MV, I might
use this plugin along with some MZ plugins if the terms are not "use if legally owned MZ".
because some use that, specially resources.

but this definitlely because 1 of the most used plugin if used nicely for MV,
and FOSSIL for MZ when really stable for most plugins.

the big question is (no competition though), who would hit 1000+ first :)
there are more MV users for now, but alot fo to MZ or use both.

keep up the awesome job.
 

Drakkonis

Veteran
Veteran
Joined
Mar 5, 2021
Messages
135
Reaction score
97
First Language
English
Primarily Uses
RMMZ
Indeed this must be one of the greatest individual plugins ever (with FOSSIL)!

These projects are not easy ones to do, because there are literally thousands of plugins and each of them has been made differently.

I will definetly contribute my part of it, if you allow it.
Definitely not easy, especially as I'm still learning MZ's setup and only just recently got my own copy of MV. But I've learned a LOT about how both engines operate both by trying to make my own plugins work, and trying to develop RETRO. I take it as a challenge not just for my programming chops, which is largely self-taught and thus very amateur level, but also my javascript skills, which ARE self-taught, relying on programming basics and some web tutorials and reading stackexchange questions, and also my understanding of the engine, which is an extension of the first two.

I feel it would be far easier to have a go-between rather than trying to port and/or modify plugins for compatibility, since a plugin's unique functions are self-contained, the only REAL incompatibility is when calling an engine function that either behaves differently between the two or just straight up doesn't exist. This ESPECIALLY important going from MZ to MV, since MV handles quite a few things in the same function, where MZ sticks nearly everything into its own function.

From an efficient programming standpoint, it's very unnecessary and makes the code a little harder to follow if you're just perusing it and not stepping through at runtime. But it makes it a lot easier to make plugins without having to rewrite the whole function just to change one little part in the middle of it. Modular programming like that is a LOT more plugin-friendly and less likely to cause mutually exclusive plugins.
While create plugins creators have MZ or might go to MZ, some make it
compatable for both MZ and MV in 1 plugin, even than, there are issues,
sometimes even not possible and a seperate plugin must be made,
That's actually part of how RETRO came to be. My first plugin requests were from MV users, and I didn't have MV at the time, so I was thinking about making mine compatible with both by checking which engine was being used. But while that would help make my own plugins usable by the larger MV crowd, I only have a few plugins and none are very.... large. I don't even have a clue if anyone is really even using them, especially when there are so many other options. So I figured the best contribution I could make to the community is to build the other half of FOSSIL's bridge. I don't see really any reason why an MV dev would need to port over to MZ just to make use of newer plugins, or be stuck waiting for awesome MV plugins to make their way to MZ either through port, recreation, or convergent development, or why a plugin dev should have to carefully think about which engine their plugin will support, or whether to port or otherwise put in extra effort to make it compatible with both. Or, for people like I was, who wants to fill a request for a user on an engine they don't actually have.

The best outcome is to have either RETRO or FOSSIL, depending on which engine you use, and have access to practically the entirety of the javascript plugin library, and the only truly incompatible plugins being minor fringe cases. Super lofty goal, I know, especially as at this moment, RETRO is developed by a single person with very little free time, amateur programming skills, and only a barely-adequate understanding of the language or engine I'm working with.
 

Latest Threads

Latest Profile Posts

After gathering, sorting out & reconsidering hundreds of enemy battlers over the last two das, finally my favorite part begins: Inventing names and lore for them all :D
I'm running a sale for Learn RPG Maker MV on Itch.io, can I compete with NSFW games earning goals?
Another Friday and another Zoom call that could have been an email. Working from home is awesome.
Finished with the semester; finally have some time to play around with MV :kaopride:
Started work on the fishing Mini-Game

Forum statistics

Threads
111,371
Messages
1,060,536
Members
144,698
Latest member
punisama
Top