User Tools

Site Tools


runtime_shenanigans

This is an old revision of the document!


This page is currently a work in progress. Not everything is written here yet.

Runtime Shenanigans

It's probably not a secret that RPG Makers are pretty old pieces of software. The oldest one that can be considered usable nowadays has been originally released in 2000 after all! Therefore, the runtimes, or should i say, the engine itself is pretty old and rusty as well. And it can show sometimes.

However, if you want to, you can easily modernize your game a little bit by replacing the original game executable by a community-made recreation that should give your players a little bit better experience. Even better, you can use these to free your games from Windows' shackles and make it cross platform!

While community-made RM interpreters are cool and all, there is one thing to keep in mind. Technically speaking, you are NOT allowed to use the RTP with them!!! The license for RPG Maker's RTPs does not allow you to use RTP assets in non-RPG Maker engines. Unofficial interpreters DO NOT COUNT AS RPG MAKER ENGINES, therefore, if you distribute your game with RTP included, you're technically violating RTP EULA!!!

Does that matter? As long as you are not planning on selling your game, probably not. I doubt Enterbrain/Kadokawa/whoever owns RPG Maker nowadays will want to sue you over this if you are making free, non-commercial games this way, but either way this is not legal advice. Talk to somebody more knowledgeable if you are concerned. What i can say is that there are games in the wild that do this exact thing and nobody gives a damn, an example of which is technically Collective Unconscious, though it only uses the RTP sound effects in few places as far as I'm aware.

Of course, if your game is not using any RTP assets, you can just not bundle the RTP and this won't apply to you. I really hope i didn't scare anybody away by saying this…

With all of that out of the way…

RPG Maker 2000 and 2003

The runtime for these two is pretty simple, does not include any scripting engines and such. For them, there's a quite long running project called EasyRPG. These people not only develop the EasyRPG Player, which is actually the topic of this section, but also they're working on a custom, RM2K(3)-compatible game editor (not really usable yet) and a free (as in freedom) RTP replacement, that's not yet complete, but what's there looks really, really nice and, if you are REALLY scared of the above disclaimer (or just like the look of these assets), you might want to see if you can make your game only use these.

Anyway, advantages of using EasyRPG Player over the stock RPG_RT include:

  • Freely resizable, scalable game window. You can even maximize it!
  • Full screen mode that does not mess with your screen resolution
  • Controllable text encoding, avoiding Windows locale hell
  • Ability to provide a soundfont for MIDI playback
  • Support for… uhhh… Windows, Linux, macOS, Android, Wii, Wii U, 3DS, Switch, PS Vita, Web, iOS and tvOS (libretro only)
  • Not crashing if an asset is missing
  • Ability to use more than 256 colors in textures, if enabled
  • Controller support
  • Optional widescreen support (though kinda buggy)

There are some caveats as well, though these will probably be resolved by an update one day.

  • Video playback is not implemented
  • Software rendering only. While this sounds bad, for 99.99% use cases it's 100% fine. Only cases where it can be less fine is if you are doing some cursed shit, otherwise you're likely fine.

How do i use it in my project?

Pretty simple.

  1. Download the Windows version of EasyRPG Player. Even if you use RPG Maker in Wine, you'll need the Windows version to actually playtest using the Player.
  2. Go to your project directory.
  3. Delete, rename, move away the original RPG_RT.exe file.
  4. Copy the Player.exe file here and rename it to RPG_RT.exe
  5. You're all set! The project in question is now using EasyRPG Player.

If you want to, you can make RPG Maker itself to automatically provide the Player for new projects. Simply go to the program folder and replace the RPG_RT.exe.dat file with properly named Player.exe

How do i port my finished game to other platforms?

(Note that I don't know how to do this for all the platforms Player is available on. If I figure something out for missing platforms, I'll add it here.)

  • Linux: Simply provide the same directory as for Windows, only replacing the Windows version of Player with the Linux executable. You don't even have to replace it. If you want to, you can put it alongside the Windows binary to make a hybrid build, for both Windows and Linux.
  • macOS: TODO
  • Web: Follow the official guide.
  • Wii: Download the release ZIP, extract the easyrpg-player folder, rename it, put your game files in it and edit the icon.png and meta.xml files to your liking. Finished product can be launched from the Homebrew Channel.
  • 3DS: TODO

RPG Maker XP, VX and VX Ace

In this case, it's a bit more complicated. These programs use something called RGSS, the Ruby Game Scripting System. This is the fancy Ruby based scripting engine that allows you to do much more than with bare events. Problem is, it's notoriously dependent on Windows-specific APIs, not to mention the original runtime using now outdated and deprecated DirectMusic for playing MIDIs, causing all sorts of issues.

Luckily, someone did eventually come up with a open source recreation of RGSS called mkxp, however it itself was targetted at experienced developers comfortable with Ruby, since you had to port your game to it yourself. Because of that, it got forked by, as the author themselves say, “an insane fox with nothing better to do than spend over a thousand hours figuring out how to fix a decade-old engine that runs two-decade old games they don't even care about very much” into mkxp-z, which actually implements the built-in stock RGSS functions in a cross-platform way. It was originally developed with the goal of running Pokemon Essentials-based games, which are pretty darn complex. The goal is considered by the author achieved, and, well, if it can run PE games, it can probably run most XP/VX/VXA games without much work, and it almost definitely can run yours!

Some advantages of using mkxp-z over original runtime include:

  • A resizable, maximizable game window
  • Improved performance over the original runtime
  • More modern Ruby version, which might be useful for more technical folks
  • Ability to use all RGSS functions in all RM versions
  • Actually good MIDI player, FluidSynth
  • Ability to port your game to Linux and macOS, possibly even more in the future
  • Ability to not use the RTP
  • Ability to include the RTP in a non-messy way
  • FLAC support
  • More modern video playback, using the Ogg-Theora (.ogv) codec
  • Provides a replacement font if one is missing from the player's system, unlike the original runtime which displays nothing in that case

As for the caveats…

  • You need to be careful with video playback, as providing a file mkxp-z doesn't like will crash the game.
  • mkxp-z also doesn't have graceful handling of missing assets like EasyRPG Player. The original runtime didn't either though.
  • To play MIDIs, you MUST provide a soundfont. If you want something that sounds similar to the Windows default MIDI synth, but also bundling it won't violate M$ copyrights, you can use this public domain soundfont, recommended by the mkxp-z developers themselves.
  • Any fonts you want to use must be placed in the game directory, in the Fonts folder (create it if it doesn't exist). This is technically better than original RM behavior, but still is different so I'm listing it here.
  • mkxp-z doesn't have “releases” in the normal sense. Instead, it's in the state of “endless beta”.

How do i use it in my project?

This isn't as simple and straightforward as with EasyRPG Player, but it isn't impossibly hard either. Bare with me.

Obtaining mkxp-z

Keeping in mind you'll need the Windows version for testing regardless of your OS; since mkxp-z is in the state of “endless beta” with no normal releases, your options are:

  • Download a known-probably-working build from… me! You can find the directory here. This is probably the easiest way, though please don't bother mkxp-z developers with bug reports if you use this. These builds don't have to be the latest one, after all.
  • If you have a GitHub account, you can just download the latest GitHub actions artifact from the official repository. Keep in mind though that these do expire after 60 days, so there might be times when there are no “official” builds available!
  • Compile it yourself. It's not really that hard, you just need to know how to read and follow the official guide.

As of writing this, mkxp-z official builds and documentation does not mention the fact you need 3 more DLLs on Windows for the program to work. If you are compiling it yourself, you already have them in <your MSYS64 folder/mingw64/bin/. These are:

  • libgomp-1.dll
  • libgcc_s_seh-1.dll
  • libwinpthread-1.dll

If you are downloading mkxp-z from me, these zips already include these. Heck, I even host these DLLs themselves here! If you are not, you'll need to get them from somewhere.

Putting it in the project

After you downloaded mkxp-z, putting it in your project is pretty much the same story as with EasyRPG Player.

  1. Extract the zip in your project directory.
  2. Delete, rename, move away Game.exe
  3. Rename mkxp-z.exe to Game.exe
  4. Done! Continue on with the guide, we are NOT done yet!

Configuring mkxp-z

OK, you have successfully put mkxp-z in your project. Now, there are two things we probably should take care of, that being providing the RTP and the MIDI soundfont.

For RTP, you have two options.

  • If you just need RTP for testing or for placeholder assets, you can tell mkxp-z where the RTP is located in the mkxp.json file manually.
  • Shove the folders from RTP directory from your RM installation. I don't recommend this, as it's a bit messy and can screw stuff up in the editor.
  • Zipping the RTP directory, putting it somewhere in the game directory and telling mkxp-z to use that. This is the option I recommend, because not only it doesn't confuse the RM editor, it also makes it so that your project directory is a finished, ready to play game on itself! For that:
    • Open your RPG Maker directory, go to the rtp directory and put everything here into a .zip file. Make sure there is no subdirectory in the resulting archive!
    • Put the rtp.zip file somewhere nice in your project. I would pick the Data folder personally.
    • Edit the mkxp.json file with something good, like Notepad++ if you're on Windows.
    • Scroll down to the RTP section (around line 392). If you put the zipped RTP as rtp.zip in the Data folder, you should set it as follows:

As for the soundfont, it's pretty similar. Put the soundfont somewhere nice and set it in mkxp.json. If the soundfont exists in the root of your project directory as soundfont.sf2, you should configure it as follows:

After all that, you should be all set! Try playtesting your game from RPG Maker now. If it works, great! If it doesn't, then I probably missed something in this guide. Tell me if that's the case.

There are more interesting options in mkxp.json, but these two are the most essential to set. Snoop around and tinker at your own discretion.

How do i port my finished game to other platforms?

I am only aware how to do Linux porting at the moment. Sorry :(

It's again a similar story to EasyRPG Player. Simply extract the mkxp-z Linux build into your directory. Remember to omit the mkxp.json file! You can even create a hybrid build of your game, for both Windows and Linux this way.

RPG Maker MV and MZ

TODO, though until i write this section: these are pretty much glorified web games, running on nw.js (Chromium).

RPG Maker Unite

Export your Unity project to other platforms. I dunno, I don't care about Unite.

runtime_shenanigans.1759083626.txt.gz · Last modified: by szprink

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki