EasyRPG Player 0.3 “Slime”

We are happy to announce the next major EasyRPG Player release. We want to thank all our developers for the huge amounts of time they invested in improving the Player. The new release is called “slime” everyones favourite enemy. You can get it in our download section. But what is the 2nd most popular enemy? You will see when 0.3.1 comes out.

Official RPG Maker 2003 release

Before we write about the new features we have an annoucement to make. It was a really unexpected news for all of us: An official English version of RPG Maker 2003 was released. Instead of using an illegal fan translation you can buy a legal version now. This is basicly your only option because our own editor is still far away from being in a usable state. (No we were never in contact with Enterbrain and are not payed for this statement). We read that the sourcecode got lost. Therefore they have to use binary patches. This means the risk that gigantic new features are provided is reduced – Which is good for us. The new English RTP is automatically detected by the Player (#454), games made with the new version will work as good as the old ones.

New features

Now back to the new major release. It brings many important features, some of them were completely missing before, these are:

Vehicles

Vehicles (#219) was one of most important missing feature, breaking many games depending on them. A well known game broken directly at the beginning by this was Don Miguels Sample Game, you can now cross the lake together with Marcus! The implementation includes boarding/unboarding, vehicle teleport, on board music change, save and load position support, airship terrain based landing check and system graphics based airship shadow (#434, #436, #441).

Don crossing the sea
Don crossing the sea

Map loop

Another important feature implemented is the endless scroll map, vertical, horizontal or both. This was required by some games to work properly and some of them didn’t work without this at all. The implementation includes support of special movements, like jumping between loop edges, and takes care of event picture, panorama and camera movement. This change makes the dreams in Yume Nikki finally completely enjoyable. (#455, #457)

Battle improvements

The battle system is one of the most complex and most commonly used parts of RPG Maker. We added further additions to our implementation, including: Items dropped by defeated enemies are now added to the party’s inventory (#398) and multi-use items are really multi-use now (#420). Some skills crashed the game when used (#405).

When a timer reaches 0:00 the battle ends now. This is a strange behaviour because there is no way to call a timer based event in battle. But that’s the RPG2k way.

The event interpreter got some bug fixes: The command “End battle” is now supported (#393) and weather/tone effects are visible now on-screen (#396). The condition checks “Monster/Hero can act” and “enemy hp” were broken (#367)

We also fixed a deadlock that sometimes occured in the RPG2k3 battle system. (#474)

Save

As you know RPG Maker uses a binary format and we try to figure out the fields to improve compatibility. Our main problem is still the save file because we are the only ones who try to figure out the format. We don’t provide our own format but are compatible with the original RPG Maker savefiles. There were many new fields discovered, some statistic:

In 0.2.2 release we had 1103 chunks in all binary formats (LDB, LMU, …) of which 81 were unknown (92.66% known). Now with 0.3 new chunks were discovered resulting in a total of 1122, of which 31 are unknown (97.24% known). Yes, 19 new chunks were discovered, it’s possible that we discover even more. (#128, #132 and #133)

  • A nasty bug preventing parallel events from continuing after loading got resolved. (#474)
  • Fix savegame corruption for Russian games when encoding was specified in RPG_RT.ini file (#139)

Android

If you checked the PlayStore the last weeks you probably noticed that we made some updates to the Player. Thanks to a new developer (BlisterBoy) the Android version got significant improvements. He added support for the long-awaited button mapping, now you can enjoy all RPG Maker 2000/2003 because all buttons are available on the screen if you want. (#443)

Besides these there were some minor improvments:

  • Accessing the settings for changing encoding crashed the program when the INI file was missing (#435)
  • Support for Joysticks (#392)
  • German and French translation (#412)

Further extensions like support for different game directories and game/engine dependend will come later because our Android developer is currently busy with real life.

Run in the Web

As already mentioned in an earlier blog post EasyRPG Player runs now inside your web browser. This port was further improved and supports now asynchronous loading of assets. That means not the whole game is downloaded during start up which significantly improves the loading times. All images and music is downloaded on demand and map files are downloaded while the transition plays. Save files are locally stored, they are lost when you clear the local storage of your browser (#389, #417, #425 and #462).

How about playing a round of Ib? More games will come! We can also help you in releasing your own RPG Maker games to the web. Just contact us!

You will need an up-to-date browser. Firefox runs the games a bit better then Chrome. This could change when new versions of the web browser are released.

Other

Now about other fixes that don’t fit anywhere else:

The most funny one is probably a Polish fan translation of RPG Maker that translated a bit too much. The “stop music” event specified by file name “(OFF)” was translated as “(Brak)”. The Player accepts now both strings. (#391)

  • Frame skipping is now more smooth (FPS stay constant). Before frameskip was speeding up and slowing down the game which felt strange (#287)
  • PNG transparency was incorrectly applied in some cases. (#358, #430)
This is me reading the libpng docs
This is us reading the libpng docs
    • Referencing a variable indirectly via another variable wasn’t working correctly (#387)
    • Transparent textshadow color in Wadanohara fixed. (#394)
    • Common events were reset during map change. In Vampires Dawn this resulted in recasting of transformations after each map change (#402)
    • Switch items (e.g. save stones in VD) were not consumed. Same for skills of type switch. (#403, #404)
    • Timers are now visible on screen (#406)
    • Support for ThisEvent in CommonEvent (references callee of CommonEvent instead of crashing) (#412)
    • RPG2k VALUE (a newer version of RPG2k) uses a different way to encode the Key Input Event (“Enter password” in Don’s translation).  (#424)
    • Rendering of some sprites/tiles was off-by-one pixel (#428)
    • MoveForward moves now always correctly, map passability fixes and animation speeds more consistent with RPG_RT (#451)
    • Too many games relied on RPG Maker ignoring access to switch/variable 0, which is an invalid index. EasyRPG doesn’t warn about this access on-screen anymore. (#458)
    • 32 new chinese characters and Wong sign added to built in shinonome font (#464)
    • Bush depth (Character bottom becomes transparent over bush tiles) implemented (#468)
    • KeyInput command was improved. The game NASU (included with YumeNikki) is now playable! (#469)

liblcf

Most changes in our lcf parsing library were support for new chunks mentioned earlier under “Saves”.

  • We fixed a bug in the number parsing code that broke a few games (because the database failed to parse) (#128)

Quirks in RPG Maker: Unicode and having fun with codepages

This is the second blog entry from our “Quirks in RPG Maker” series. In the previous article we introduced the non-Unicode application problem. Now let’s explain how this problem has been addressed.

The problem: Non-Unicode games

As explained in the previous article, Unicode is a standard for writing characters and texts using an universal encoding. Before existing an universal standard, some languages were using their own character encoding, sharing often the same bytes representing different glyphs. Games created with a non-Unicode editor contain non-Unicode texts. These games won’t be readable properly under operating systems with a different encoding than the original, unless some conversion between encodings is applied.

Encoding conversion issues

Modern operating systems are Unicode. This helps to convert non-Unicode encodings to Unicode, having enough room to fit any previous encoding to the new universal. However there are multiple issues when conversion standard was being designed.

Non-Unicode Windows Japanese Encoding is Shift JIS. This encoding was similar in the first 127 characters with ASCII (7-bit part), except the backslash (\) showing a yen symbol as a replacement. Originally, the command trigger for show messages is a ¥ followed by a letter, e.g. ¥c[1], in western is \c[1]. This was breaking message codes before. In fact, Japanese Windows shows a Yen sign (¥) as a directory separator even in modern Unicode Windows. In Korean Windows shows a Won sign (₩) instead. The wave dash from Shift JIS was incorrectly mapped to the Unicode full-width tilde, generating issues not only when showing the sign, the problem could affect games with filenames using this character.

The first approach: libiconv and Windows API

libiconv is a library to convert common legacy encodings to Unicode, supporting most non-Unicode Windows encodings. In order to play any non-Unicode game we needed to set the encoding manually before playing the game. There is an EasyRPG specific parameter in RPG_RT.ini to set the encoding by hand.

However, libiconv and Windows API were not supporting a way to detect the encoding. There were issues with yen, won and full-width tilde conversions, having issues when playing Japanese and Korean games.

Games don’t say which encoding are using

There are RPG Maker 2000/2003 games written in many encodings, but there is no a clear way to determine which encoding are using, as they can share the same bytes for different languages.

The solution: ICU

ICU (International Components for Unicode) is a library which brings very good support, including proper encoding conversion for Yen, Won and full-width tilde and an heuristic system for character encoding detection. With this feature the encoding can be autodetected and works fine for most games.

Broken game translations

There are games however, specifically game translations which are mistranslated, having mixed encodings and making the encoding autodetection fail. This is the case for some broken Yume Nikki translations. If you have file not found errors, you probably are using a broken translation. You can try to force manually the encoding in RPG_RT.ini for these particular cases, they may work better.

The ICU encoding heuristics detection gets some text data from the game. Currently uses some texts from the game database terms. Not all are passed because some default database translations from some editors are untranslated from Japanese and ICU would detect these games as Shift JIS when they probably are written using Windows codepage 1252 (western).

HTML5 Player port

Not interested in any details? Run TestGame in your browser

Some months ago we wrote a post for the April Fools’ Day called HTML5 port plans which was announcing a planned web based EasyRPG Player port.

Because of this date it could be a fake, however some details were really planned about making this real. Using the Emscripten compiler, Player C++ code can be converted to JavaScript code and run in modern web browsers with a faster computer.

This effort could be considered too early to be done, however it is pretty useful, for example, for checking the result online along with the Test Game for fast testing without needing to download Player, game and RTP if not installed in the current machine.

The new port will require a fast machine with a modern browser. Mozilla Firefox (newest version) is recommended, as it is faster than other browsers when running it. Processor requirements are currently high, a +2GHz multi core processor is suggested.

Saving works. The Esc key maps to “Disable fullscreen” in the browser in some cases, use the X key instead to toggle the menu. But even with these flaws it is still a nice proof of concept.

You are invited to try TestGame running in your browser, feel free to share your thoughts and feedback in post comments. Imagine when the JavaScript port becomes more matured you can run RPG maker games directly from your website, how cool is that?