- Mar 15, 2019
- Reaction score
- First Language
- Primarily Uses
Project FOSSIL V0.2
By: FOSSIL TEAM
By: FOSSIL TEAM
Project FOSSIL (Fixing Old Software / Script Interoperability Layer) is a pair of RPG Maker MZ plugins designed to expand the use and usefulness of RPG MAKER MV plugins, by allowing them to work in RPG MAKER MZ projects. FOSSIL doesn't port plugins. FOSSIL makes porting unnecessary!
I got a copy of RPG Maker MZ a couple of weeks ago, and I think the editor is even better than RPG Maker MV. The only problem is that it's competing with RMMV's deep library of plugins. MV had such a huge number of great plugins (thanks to the tireless work of Yanfly, Moghunter, SRD, Galv, and too many other authors to list here) that it will be a long time before they all get rewritten to work with the new engine.
Someone asked me back on Monday if I'd be interested in porting Cross Engine, but it seemed like it would be pretty time consuming, since it's a huge pile of interlocking plugins, and changing one could change other ones. I decided to try to figure out a way to speed things up. Instead of having to change every single MV plugin to work with MZ, I'm going to see if we can change MZ so it can work with the old plugins, and still keep all the engine upgrades. That way, we'll have the best of both worlds.
What I came up with was FOSSIL. FOSSIL does basic interoperability things. For instance, in MZ, windows are defined with a 'rectangle' object instead of just getting x,y,width,and height individually like they did in MV. I can fix those MZ functions so they can use either definition. That way old MV windows will still appear the way they used to, but with added MZ features like scrolling. And I don't have to actually change how the windows are defined in the plugin every time, I just fix it once and it's fixed everywhere.
I'm still not sure whether I'll ever get Cross Engine to work in MZ, but Chrono Engine and a bunch of other stuff is working fine, so I'm releasing the 0.1 version of FOSSIL for the community to look at. I'm not the best programmer myself, but there are a lot of people who have spent a more time than me working and playing with this engine. I'm sure together we can make something great .
I have Moghunter's Chrono Engine working (well, except for MOG_TitleSplashScreen and Mog_DmgPopupEffects), and I've tried this with a bunch of plugins from a lot of different authors. See the list below. What made me really happy was that once I got FOSSIL to work with major plugins, generally add-on plugins to them didn't really require any extra work. I'm pretty stoked by how smoothly this is going.
If FOSSIL gets easier to work with the more plugins you add, I think this idea really has potential to make everyone's plugin experience better. Plus, this way, we can make old MV plugins work in MZ while still respecting any licensing they have. Instead of having to track down people who might have left the community, and asking them if we can copy their plugin and make a changed version, we can just use FOSSIL and make changes to the RPG Maker MZ engine so it will cooperate with the old existing code.
I have tried my best to minimize any side-effects from FOSSIL's existence. In my RMMZ test projects there weren't any noticeable changes, but it's entirely possible I accidentally broke something. If that's the case, please post about it in this thread.
I'm super excited about the possibilities with FOSSIL, and I hope a lot of people join in (hence why I'm crediting FOSSIL TEAM). I don't want this to be 'my' plugin, I want the whole community to be able to use all the MV and MZ plugins with the newest engine, and I think everyone here who makes MV plugins knows enough to help improve it.
How to Use
FOSSIL is a two-part plugin, that has to go both before and after the plugins it works with (see screenshot). Since this isn't a port, you still need to have the original, unaltered MV plugins, and put them into your game. So far I have only tested a handful of plugins (see list), but I think it's likely that more plugins will work 'out of the box', and other ones might only require a few more compatibility tweaks.
Why do you need two plugins for FOSSIL?
Well, let me give you one example of why we need that. RPG Maker has a 'Utils.RPGMAKER_VERSION' system variable which tells you what version of RPG Maker is being used. This is great for compatibility, but the latest version of RPG Maker MZ has a lower version number than the latest version of RPG Maker MV, despite being more advanced!
The first half of FOSSIL (FOSSIL_Pre) changes the version number to be high, so the plugin thinks "Oh, I am in a super advanced RPG Maker Version". Then, after the plugin sees it, the second half of FOSSIL (FOSSIL_Post) changes that version number right back, so the rest of your plugins see the right number. Simple, right?
The biggest thing that needs fixing on a per-plugin basis is that parameters get handed to RMMV differently on some event commands now (they get called as "this.somefunction(parameters)" instead of "this.somefunction(), now act on this._params". If those commands get modified in the plugin, you have to turn arguments into parameters and vice versa after the fact.
As for plugin order beyond 'put all your MV plugins between FOSSIL layers'? Honestly, I haven't a clue. There could be all kinds of weird interactions.
Using Old Plugin Commands
You have three ways of using plugin commands for MV projects
A: use the built in plugin command from FOSSIL_Pre
B: Use a script box, with
oldCommand('your old plugin command')
C Copy and paste a MV map into MZ that has an MV plugin command. That command will keep working in the MZ editor, and you can copy and paste it around wherever you want. On some versions of MV and MZ you can just copy-paste the event between editors. It is a mystery why this works for some people and not others.
- Main Project: https://github.com/FossilMZ/fossil-MV-MZ
- PRE: https://github.com/FossilMZ/fossil-MV-MZ/blob/main/FOSSIL_Pre.js
- POST: https://github.com/FossilMZ/fossil-MV-MZ/blob/main/FOSSIL_Post.js
These is the list of over a hundred MV plugins I have tested in MZ with FOSSIL running which seem to work at a high level of compatibility (ie: I went through the major plugin features and they worked, no crashes observed). I tried the latest versions of each, so if you have an older version I can't guarantee anything, and it is entirely possible I missed some feature that I don't normally use, or that FOSSIL updates ended up breaking something after I tested them. It's a lot of plugins and I'm sure I've missed something. (Sadly, several popular plugins, like ultramode7, use a lot of deep function calls, and the MV vs MZ code differences were just too hard for me to disentangle).
As FOSSIL does not contain any plugins, I have also included links to where you can get the ones I've tested. If there is ANY problem or bug with plugins using FOSSIL, ask in this thread. Don't ask the author for help. The obvious cause of the bug is that you're using a MV plugin in MZ. (And ideally, have a demo that works in MV, and a stacktrace from the console)
Note: Some authors have made ports of their own plugins to MZ. If you aren't trying to port over an existing project, or have extension plugins, I recommend you use a plugin that was actually ported to be MZ native. It's a lot less likely to be buggy
However, since there is a chance that a port to MZ can break extension plugins, (for instance, if a function gets renamed for the MZ version, plugins that patch into the MV function will no longer work), in some cases MV plugins in FOSSIL will have better compatibility than their MZ ports.
- Moghunter Plugins (They're all at the same link on his new site)
- Reval's Animated Enemies
- SRD_ShakingText (note: put AFTER YEP_MessageCore and FOSSIL_Post_MessageCore if they're installed)
- VLUE Game Time MV 1.1c
- VLUE QuestSystem
- WAY_Core (note: requires Fossil_Post_Way to be the NEXT plugin beneath it, or all MZ plugin commands will break.)
- YEP_BattleEngineCore (Note: the built in MZ time-based system doesn't work with this, use YEP_X_BattleSysATB, Yanfly's ATB plugin.).
- YEP_X_BattleSysATB(note: now works with the MZ version of Moghunter's ATB Gauge as well)
- YEP_X_BattleSysCTB(note: now works with the MZ version of Moghunter's ATB Gauge as well)
- YEP Equip Battle Skills
- If you test some other plugin and it works, post about it in the thread and I'll add it to the list.
Mostly Functional (Missing feature(s), UI is fine)
- YEP_MessageCore (note: requires two additional dedicated plugins, FOSSIL_Pre_MessageCore FOSSIL_Post_MessageCore for use. Bugs: Word Wrap doesn't work during rapid text advance.
- YEP_X_ExtMesPack1 (Works AFAICT, except for above word wrap issues with message core)
- YEP_X_ExtMesPack2 (Works AFAICT, except for above word wrap issues with message core)
Functional Mechanics, UI problems (I'd appreciate help with these)
- YEP_X_ItemDurabilityIt works fine, but there isn't an obvious place to put the 'current durability' information in the MZ window layout. If you use this plugin, what would be a good place to put it?
Terms and Credits
All unique code in FOSSIL is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. The remainder is taken from RPG Maker MV and RPG Maker MZ, and is covered under the appropriate licenses. No code from any existing plugin was used. Credit Restart, 'FOSSIL' or 'FOSSIL Team', and link back to the github or this forum thread.
In order to improve clarity, I am officially stating that the 'CC-BY-SA' only requires that code directly derived from FOSSIL be also put under a 'CC-BY-SA' license. Any other assets in your game, (such as code, art, et cetera) as well as your game as a whole are not considered to be 'derivative works' for this purpose.
Of course this is FOSS, the plugin is named FOSSIL
If you want to submit a patch to add to the FOSSIL main branch, please ask. You will need to agree to license your patch under the same CC-BY-SA terms as the rest of FOSSIL, and that if I ever add an additional open-source license to FOSSIL that your contributions can have that license applied in addition to CC-BY-SA (that way, if we need to add a less restrictive license in the future, it will be possible without tracking down every contributor or turning FOSSIL into a legal patchwork).
If you just want to make a fork or your own version, it's licensed under CC-BY-SA, I can't stop you.