Why Extension Plugins Are Not Standalone

From Yanfly.moe Wiki
Revision as of 14:40, 30 September 2021 by Yanfly (talk | contribs)
Jump to navigation Jump to search

Welcome to the wiki! This is where you can find resources from Yanfly.moe, Ækashics.moe,
VisuStella, Caz Wolf, Fallen Angel Olivia, Atelier Irina, and other affiliated content creators.


The following is a suggestion that the VisuStella team has acquired through the Suggestion Box.

VisuMZ Suggestion Standalone.jpg

I figured we should talk about it. Not the berate the suggestion maker, but to answer some commonly asked questions for educational purposes and to explain why we do things the way we do. Namely, why we create cores, why we create extension plugins, and why those extension plugins aren't standalone plugins. We'll answer some other questions, too.

Yanfly.png This is an article written by Yanfly.

First Things First

A slight bit unrelated to the topic at hand and more towards the suggestion, we want to clarify that the Battle Core does not change the game drastically. The majority of the changes invoked by the Battle Core are mechanically driven and not visible in a default scale. The only things that are visible however, are HP Gauges, Automatic Action Sequences, and the Extra Options with the Party Command Window. Each of these features can be disabled within the Battle Core's Plugin Parameters. Take a little bit of time to search them and you'll find them easily.

We're just getting this out of the way in case anyone who sees this article becomes suddenly afraid to use Battle Core without understanding the purpose of the plugin and what it actually does.

Why We Create Cores

ExtStandalone Core.jpg

This section will answer two things: Why we create Core Plugins (Tier 1) and why we created them the way we did for VisuStella MZ.

The Purpose of Cores

The VisuStella MZ Cores, despite what some people think, are actually conglomerations of mostly basic features. They're huge bundles of basic features that are otherwise unnoticeable to the passerby. However, they're important in the sense that they need to be rooted deep within game project's code, the core. The reason behind this is because that while they're basic features, rooting them deep into the core of projects allows the basic features to extend outward and affect more aspects of the game project, the plugins that may come after the cores, and the plugins dependent on the cores.

This is not to say that all features provided by the cores are basic. Some things like Action Sequences for the Battle Core are incredibly advanced features that can be optionally utilized. However, their integration in the cores are necessary for the accessibility and functionality towards the game development process in which plugins can alter the game state in a stable way.

If we are to compare this to real world objects, the cores would be the motherboards to a computer. They are the engines to a car. Or they can be the power plants of a city. Each of the listed objects are deep rooted for their functionality in order for the supplemental parts to be efficiently utilized. The same goes for core plugins and extension plugins.

The code provided by these core plugins make it possible for extension plugins to work with the game project in question with maximum efficiency and minimal conflicts.

Why Are Cores Created The Way They Are

One of the more common questions we're asked as the VisuStella MZ team is "Why are your Cores so huge and packed full of features?"

To answer the first question of why they're so huge and packed full of features, it's because of one of the inherent problems discovered with the Yanfly Engine Plugins library. That problem is known as Plugin Order. It's not entirely obvious to non-programmers, but the order in which the plugins are installed in the Plugin Manager matter a lot to ensure the compatibility of the plugins working together. This was a problem that was previously unforeseen during RPG Maker VX and RPG Maker VX Ace since script libraries and script usage tends to be a lot smaller. Therefore, when RPG Maker MV came along and plugin usage was at an all time high, the problem became more evident. In fact, more than 90% of the bug reports sent for Yanfly Engine Plugins was due to incorrect plugin orders.

With that in mind, we created the VisuStella MZ Core plugins as large as they did to incorporate the mostly commonly used but core features in the proper order to avoid conflicts. And it worked. Bug reports regarding plugin order no longer exist (for VisuStella MZ at least).

"But not everybody wants all of those features!"

And that's why we included options to disable them. Despite what the suggestion says about it being "hard work" to turn off everything, the majority of those features can be turned off by just turning the associated Plugin Parameter to "OFF" or "Disabled". For the other features, they're usually optional. Being optional, this means you wouldn't be able to know that feature is there if you don't use it at all.

If there are features you can't figure out how to turn off, then I suggest paying a visit to the plugin's help file. If there is no way to turn something off specifically, then there's usually a good reason why we don't allow the option to turn it off. However, those features are rare and the vast majority of features have toggleable options.

The ones that cannot be turned off? Well, we turn those into Extension Plugins instead, so that you don't have to install them at all.

Why We Create Extension Plugins

ExtStandalone Extension.jpg

When features get too big and complex to be toggleable to work with Cores, we turn them into Extension Plugins (Tier 3) instead.


Extension Plugins are purely optional features that aren't necessary for the core traditional RPG experience. These are optional effects or mechanics that fit within smaller subsets of traditional RPG's. Therefore, it doesn't make much sense to include them into the Cores themselves.

However, Extension Plugins are also Extension Plugins because they rely on some functionality from the Cores. This applies to a few of the System Plugins (Tier 2), too. The Extension Plugins (and selected System Plugins) expand upon the base to which the Core Plugins offer. This is to maintain the modularity of the plugin library and game engine while keeping the cores strong but flexible.


Previously with my RPG Maker VX libraries, I rarely was able to go past 30 to 50 scripts per library unless they were completely small scripts that were more like tweaks. However, a script library of tweaks doesn't create a full game engine. Instead, to expand past that and to create a proper game engine, the concept of core scripts/plugins and extension scripts/plugins had to be made.

This is why Yanfly Engine Ace script library for RPG Maker VX Ace was able to scale past 100 scripts. It is also the same reason why Yanfly Engine Plugins for RPG Maker MV was able to reach 200 plugins. This is also the reason why VisuStella MZ for RPG Maker MZ is able to scale to the size it is today.

The majority of RPG Maker VX Ace scripters and users at the time frowned at the dependency requirement of cores for extension scripts. However, there is undeniable evidence that the cores facilitate the process. Atoa, the creator of Victor Engine for RPG Maker VX Ace and RPG Maker MV, utilize the core and extension model. It's why our respective libraries were able to grow to the sizes they are without having the majority of our published scripts/plugins be five-lined tweaks.

So Why Do People Complain About Cores?

The only Cores that I've seen people complain about are those from lesser known Plugin Libraries.

These are often made by beginner plugin devs who don't understand the purpose of Core Plugins. Instead of providing a mechanical foundation to enhance gameplay, the Cores made by the rookie plugin devs are often centered around convenience. The convenience isn't directed towards the game dev, but instead, towards the plugin dev. They contain functions that allow the plugin dev to quickly parse notetags, shuffle arrays, or the like. While on the surface, it seems "helpful", the issue most users have is that these Cores offer very little changes to the game project itself.

I've almost never seen people argue about the dependency on VisuStella MZ's Core Engine. Or any of the other cores bar the few times there are misunderstandings on what they do. The Cores provided by VisuStella MZ and Yanfly Engine Plugins are evident in what they do and the game devs can feel the changes themselves. However, the same cannot be said about "Convenience Cores".

Does this mean Convenience Cores bad? I cannot answer that. However, I can only guess that the reason why people complain about "Cores" is when they install Convenience Cores and don't see any changes to their games, major or minor.