Maniacs Patch Won’t Bite You # 1 – Basic Feature Changes

Maniacs Patch is one of many attempts to extend the functionality of older versions of RPG Maker (RPG Maker 2003 to be precise) beyond their official distribution. Its author has done a great job, which I will try to present in this article.

Introduction

Before we start, a quite important information – Maniacs Patch works only with the official version of RPG Maker 2003, i.e. the Steam one. Strangely enough it doesn’t have any DRM mechanism baked in whereas the Degica Shop version actually does which is the main reason it cannot be used with Maniacs Patch!

What is Maniacs Patch? First and foremost it’s an incredibly powerful tool and the possibilities it provides are almost on par with those provided by Ruby or Javascript. And by the way, who uses all the capabilities of these languages? There are some issues that the Maniacs Patch does not address, at least for now. The author tried to add the ability to change the resolution of the game engine, but there were some performance issues. He worked persistently to add a new type of variable to 2k3 – in addition to numerical ones, string variables were to be created. This has also failed so far due to the construction of the engine itself, but we don’t know what the future holds. (UPDATE: as of version 19.05.2021 those features have been actually implemented! See this link for more information) First of all, the patch will help those who would like to create a mechanically complex game with their own combat sys. or menus. In the case of simpler sys., it will definitely reduce the amount of repetitive work that you would normally have to do in RM.

The author of Maniacs Patch is a japanese man nicknamed BingShan1024. His marvelous piece of software has added a lot of new features to RM and is rather aimed at people who already have experience with RM 2k3, since the usage of many of them may not be that obvious.

In this article, I will cover installation issues and the features that this patch modifies. In the next article, I will discuss the newly added features and in the following one, I will attempt to present sample usage of the mechanisms from the patch. I realize that this part may not be very interesting, but you gotta start somewhere. This is the most tedious part of working with BingShan’s work but you can treat it as a kind of compilation of rules the patch plays by and initial training. This is quite a technical description and requires you to digest it yourself by fiddling with RM. Hopefully after the third part of the tutorial more things will be understandable.

Installation

Firstly you have to download the patch from the author’s website.

Here’s a direct link to the latest patch version as of now (may become obsolete).

After unpacking the file its contents should look similar to what you see in the screenshot above. You don’t have to worry about copying files or using some other middleware like you do with other RM patches. You only need to run the provided utility.exe.

The utility.exe window (with a description of its elements) looks as follows:

New functionality in old things

At first I’d like to mention one handy thing that patch fixes – loop nesting (one loop inside the other). It is a good alternative to the ubiquitous use of label jumping found in plethora of Polish projects.

Control Variables

The first big thing is the significant revamp of the Control Variables window. It is much (MUCH) more complex than its basic version. If you have troubles understanding the TIP from the image below, don’t worry. I’ll try to explain it more in the summary.

If you don’t know what the bitwise operations on numbers are, please refer to this article.

Selecting the box labeled Other reveals a couple of new options. For example, you can get the computer’s date or time . The date is saved inYYMMDD format, where YY are the last two digits of the year. Time is written in standard HHMMSS format. It can be useful if you want to make a real-time day and night sys. in the game (or some bonus Halloween / Christmas event).

The second page of the box provides access to many other elements of the game.

The third page is quite interesting. It allows for performing a mathematical operation on two variables directly (which wasn’t possible in the basic version) and then assign the result of the operation to a given variable (of course, you can also add, subtract, etc. the result). In a situation shown in the screenshot above, we set the Player Coords variable to the sum of the Player X and Player Y variables. The non-bitwise options from the dropdown menu work as follows:

  • Pow – returns the value of Arg1 raised to the power of Arg2 (Arg1 ^ Arg
    Atan2 function
    (Source: Wikipedia)

    2)

  • Sqrt – returns the root of a number, unary function (so you only set Arg1)
  • Sin – calculates sine value from degrees (Arg1 / Arg2)
  • Cos – calculates cosine value from degrees (Arg1 / Arg2)
  • Atan2 – returns the angle between the line starting from the origin of the coordinate sys. to the point (X = Arg1, Y = Arg2) and the positive part of the X axis of the coordinate sys.
  • Min – returns the smaller number from the two provided
  • Max – returns the greater number from the two provided
  • Abs – return the absolute value of a number, it’s a unary function (so you only set Arg1)
  • Random – returns a random number in the range (Arg1; Arg2), inclusive

For some math functions, Multiplier is also available – the result of the operation is simply multiplied by its value before being assigned to the variable.

Finally, the last, fourth page of Control Variables. Using the elements shown above speeds up the process of setting a variable where normally a Conditional Branch would be required.

Conditional Branch

As for the commonly used Conditional Branch, the window has been rearranged a bit. You can now refer to a switch or a variable by its ID. The second page of Conditional Branch shows the rest of the function .Three new conditions to check has been also added:

The new conditions are:

  • Right after load – checks if the game has just been loaded or started. Useful for e.g. creating your own save sys. However it NEEDS to be checked on the exact first frame after loading, preferably inside a Parallel event without any Wait commands otherwise it won’t work
  • Enable Joypad – checks if a gamepad is in use
  • Window is Active – checks if the game window is on the foreground of the sys. (is currently focused)

Loops

The Maniacs Patch brings loops closer to what they are in „regular” programming languages. If you’ve been ever using a for, while or do-while loop, you’ll definitely feel at home. Below are the various elements of the Loop with explanations.

This is how it looks in the event editor, if you’re curious ;). Of course, the loop alone is not enough. You have to throw something into it, otherwise it’s useless.

Show Picture

Upon opening the Effect window a couple of new options will appear. Who knows why the author decided to change the name from Picture Settings to Effect, since the opened window is called Picture Settings anyway. Fortunately it doesn’t really matter because it’s all about the added value.

Move Picture

Move Picture received an additional option too. You can now enter the movement time when the change is being made from a variable.

Erase Picture

Just like the other windows Maniacs Patch modifies, here you also can use variables to indicate the index range of images to be removed. There is also the All option, which may simplify working with the program a bit.

Call Event

Call Event is not just for calling common events. You can even call a specific page of the event on the map. In addition, thanks to the patch, you can use variables to point to a specific common event or event on the map by their ID.

Key Input Processing

The icing on the cake, although a bit unnecessary. You can now check if the mouse buttons have been pressed or if the player has used the scroll. Maniacs Patch also adds the KEY INPUT PROCESSING EX event command (covered in the next article), which is a more elaborate version of the one above. Key Input Processing is a tad simpler to use and it’s probably the main purpose of getting the user to use it.

Summary

If you managed to make it this far- congratulations! Perhaps this article will convince someone to test the Maniacs Patch or motivate them to make a project that once could not be accomplished due to technical limitations. It’s important to understand how variable referencing with Variable ID works in order to use the Maniacs Patch efficiently and effectively. The funny thing is that almost everywhere it’s called Variable ID except for the Control Variables window itself, where this way of referencing is simply called – Variable. If you don’t understand how does it work, here’s a small explanation.

Suppose the variable „Variable ID” was previously set to 5.

This way we do not modify the variable named „Variable ID„, but the variable Number with the ID = 5. Above you can see a case where the value 5 is added to a Number using the Random function (it just happened that way :>).

The variable ID is just the number display left from the variable name that you see in the Variable window.

For the curious

https://twitter.com/BingShan1024 – the author’s Twitter account, where he posts updates for features he’s currently working on. The posts appear in a semi-regular manner. Unfortunately only in Japanese but DeepL works absolutely wonders for deciphering BingShan’s thoughts.

https://bingshan1024.github.io/steam2003_maniacs – the author’s website devoted to the patch, unfortunately only in Japanese too (full page translation provided by Google Translate doesn’t really help in this case, most preferably you have to copy the interesting parts into DeepL to get a translated text that isn’t straight gibberish). It contains a description of all the Maniacs Patch’s features along with download links.

That’s it for today, see you soon with another portion of technical stuff!

Soul

The original article was translated by Michu and edited by Axer.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.