Why Extension Plugins Are Not Standalone

From Yanfly.moe Wiki
Revision as of 14:17, 30 September 2021 by Yanfly (talk | contribs) (Why We Create Extension Plugins)
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.


Introduction

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 cores 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 instead.