EasyRPG Player 0.6.0 “Preemptive Attack”

It is this time again! After 30 months since 0.5.0 we present you: The next major release: 0.6.0 “Preemptive Attack”. As the codename tells you already: This release focuses on battles and battles were always really lacking in EasyRPG Player – until now.

First we have to tell you: We are sorry! This blog post will not do 0.6 justice. In these 4 months more code was added more than in the previous 12 months. There were so many minor detail changes especially in battle and the savegame system, you can’t write this all down without getting burned out, because typing this is pretty boring and reading it is even worse. That means sometimes this blog post will simply sum up 10 minor changes in one sentence. If you are curious about more details, simply write us a message or read the linked GitHub issues.

Especially the battle system was in an interesting situation: In August we received ca. 100 commits by a new developer and they fixed many issues in the battle system and the algorithms but unfortunately this developer had no time anymore and left us alone with these commits. How shall we handle this? Luckily a new developer appeared shortly after and helped us fighting through the mess. We had many long discussions spread over 3 months, some commits were simple, some controversial (will this break games?) and some just wrong. Getting all these patches in was a nightmare and we could not wake up by pressing “9” but in the end we got them all in and now and you can enjoy them in this release!

New startup logo

You know the EasyRPG Player Logo from day one! For the first time we updated it and gave it a more modern look that is consistent with other well-known engines. (#624)

The EasyRPG Player Logo as of 0.6

Known regressions in this release

This new release of EasyRPG Player contains lots of savegame compatibility improvements with RPG_RT, but this also means the Player is now incompatible with saves of old versions! You can still load them, but you will see visual glitches: To fix them, simply change the map. If this doesn’t help: You must restart the game, sorry. This should be the first and last time such a compatibility nightmare occurs, because from now on we save the EasyRPG Player version in all savegames. This allows us to ensure savegame compatibility, because we can determine exactly which version created the savefile (#1656) and fix incompatibilities while loading.

When in a battle it is possible that battle animations created with the “Show Battle Animation” event command are not properly working, because the interpreter is not waiting for completion. We believe that this is more correct than the previous behaviour, but it breaks the animations in the game Alter A.I.L.A. Genesis.

Pictures are now updated before the events. By comparing with RPG_RT we are sure this behaviour is correct but it completely breaks picture zoom in the Smash Bros. clone もしもスマブラだったら. This will be fixed in 0.6.1 when a new, more accurate interpreter is implemented.

Regressions fixed

  • The ChangeEquipment event command crashed when a two-handed actor got the weapon in the first slot removed while the second slot was empty. This broke many effects in Yume2kki.
  • On some platforms all events on the map flickered while scrolling
  • The Android version crashed when attempting to report a bug (how ironic!) (#1477)
  • Our internal RTP translation table which maps Japanese to other RTP versions didn’t work anymore. (#1579)
  • Removing the Class with ChangeClass command did not work anymore. (#1657)

Events/Interpreter

The RPG Maker 2000 demo for the Tokyo Demo Fest 2018 Wild compo (search for tdf2018wildcompodemo) was hanging or skipping parts of the demo sequence. If you are familiar with the Demo scene you know that the synchronisation of video with audio is very important. Therefore this game used an undocumented feature: “Get MIDI Ticks” of the Change Variable command works for non-MIDI files: It returns the track position in seconds. With this implemented the demo plays perfectly. (#1517, #1523)

Enjoy the demo in our web player

Sprites are now properly rendered at borders of small looping maps (20×15, which is the minimal map size) . When a sprite overlaps the border of a looping map it is rendered two times or four times, depending on the corner. Before Player only rendered the sprite once. Contrary to RPG_RT we support proper looped rendering for the airship and fixed a visual glitch: When the Pan is locked events on the most bottom row become invisible. (#1216, #1541).

This video is a glitch exhibition of RPG_RT panning bugs. We don’t emulate them, EasyRPG Player will behave correctly in all these cases.

Screen/Picture Tint, Shake and Flash:

  • The “affected by Tint” flag is now fully supported for Pictures. (#1545, #1546)
  • The screen shake effect is now fully implemented and matches RPG_RT completely. (#1547)
  • The “affected by flash” flag is now partially supported for Pictures. When the Picture is below the weather plane the screen flash will be always applied, we plan a fix for a later release. (#1549)
  • All screen effects were applied one frame too late, you probably never noticed this but as we become more compatible we care more about timing.

With these bugs fixed the game Desolate City: The Bloody Dawn (Enhanced Edition) becomes fully enjoyable.

Panoramas are now matching RPG_RT completely. There are too many ugly details to explain here, just try it. They work perfectly! Try it with pan or on looping maps or on maps with scrolling backgrounds, it will work everywhere. Additionally the new savegame fields panorama X/Y from RPG Maker 2003 English edition are now supported which means the panorama position is preserved in savegames. Pan is also correctly saved and restored now. (#1485, #1498, #1531, #1534, #1551, #1554)

The Change HP command didn’t work when the whole party was being damaged. (#1558)

RPG_RT only does Game Over checks after certain event commands executed. We already supported this but lacked some commands, e.g. Change EXP, Change Level and Change Equipment. (#1583)

Parallel events did not halt execution when an “Input Number Message` Command was used resulting in the number input being skipped. (#1598)

Move event related fixes (Spoiler: 0.6.1 will have a gigantic amount of movement fixes, we postponed them because they need testing first):

  • The facing direction is now correctly calculated for jumps. (#1113)
  • Menu calls through event commands (Menu, Shop, etc.) happen now immediately instead of waiting until a movement finishes. (#1559)
  • Movement commands targeting vehicles that are not on the map are now queued until the vehicle appears on a map, before the Player would hang when Proceed with movement was used. (#1580)

ChangeHP, AddState and RemoveState match now the RPG_RT behaviour: (#1481)

  • HP changing is not possible when an actor is dead
  • If ChangeHP kills a character, it adds the Death state to that battler
  • When Death state is cured it always sets the HP to 1
  • When a character dies, all the other states are erased, the defense, charge, gauge and stat modifiers are reset, and the current attribute shifts erased.
  • When a state is added, all states with priority <= max_priority – 10
    are cleared. (#1489)

When the default cancel option in a `Show Choice` is an unused choice, e.g. when you have a Yes/No Answer and Cancel is the 3rd, non-existing, the Player does not crash anymore (#1634).

The ChangeClass command removes now the equipment. (#1657)

Battle

This release features a gigantic amount of battle changes especially to the algorithms and the RPG Maker 2000 battle UI. The RPG Maker 2003 battle UI did not receive many improvements. We want to handle 2003 in a later release but all the algorithm changes also apply to RPG Maker 2003 battles.

List of issues / pull requests: #1102, #1371, #1447#1448#1449#1451#1539

RPG Maker 2000 only

There was a gigantic amount of cosmetic changes to the RPG Maker 2000 battle system, so we cannot list all of them:

Dual attack and dual weapons are now implemented (#480#1540)

The victory message has correct amount of delays.

In some cases the amount of SP recovered reported -1 instead of the real value.

When an ally receives damage the screen shakes now.

Dead enemies cannot attack anymore.

When you hold Cancel while a battle executes the battle will stop.

The battle message box was completely rewritten. All the messages generated should now match the RPG Maker 2000 behaviour. including most of the delays. We won’t list them here as the old message box was completely incorrect.

When an ally is targeted no battle animation is displayed. Instead the sound effects of the first 20 frames are played, everything else is cut off. (#1377)

The battle state machine we use to handle the battle state execution was completely refactored. This makes the code more maintainable. (#1573)

The word-wrapping algorithm of RPG Maker 2000 v1.61 hung the game when the word was longer than the line. (#1570)

Auto battle supports now attack-all weapons. (#1540)

The Defend command ignores the agility and is executed first. (#1560)

Restriction changes are now applied even during turns. This means an actor who just received a “No Move” restriction won’t attack in this turn anymore. The same applies when the actor runs out of SP before invoking a selected skill. (#1538#1560)

When a state was healed right before an attack the state can be caused again.

While holding the Decision key the battle execution speed will be doubled.

RPG Maker 2003 only

States which resulted in the inability to move (Sleep, paralyse, etc.) never auto-healed because the turn count was not increased. This made many games, OFF and Mother: Cognitive Dissonance among them, much harder. This already worked in 2k. (#1276)

Various visual fixes for the RPG Maker 2003 Battle system improve the experience in Mother: Cognitive Dissonance: (#1605)

  • Battle backgrounds are now animated
  • Background or Terrain loading is now correctly handled, including battle tests
  • The traditional battle style shows now a SP box in the skill selection and hides the SP in the actor list
Both

When a monster is killed by an event command the death sound plays now. (#1439)

Battles, victories, escapes and defeats are counted now. (#1439)

The skill “Life gift” heals now the correct amount in Vampires Dawn. (#1128) A similar issue with incorrect MP recovery was fixed in DBZ: The Legend of Z. (#1374, #1480)

Status effect immunity of items is now supported.

Battle Animations don’t block the battle interpreter anymore.

Battle music starts playing now when the transition from the map starts, before it started after.

In many places the sound effects were wrong, some examples:

  • Confirm and cancel sounds were missing or played twice
  • Confirm sound was played when you pressed enter while a battle action was executed
  • Items didn’t play the item use sound

The custom skill name of the actor is only displayed when the “rename skill” checkbox is selected.

Weapons that inflict states inflicted the wrong states.

The Skill menu remembers now the cursor position.

Buffs and Debuffs stack now correctly.

Items and Skills that affect groups only reduce the SP once.

State probability respects now the armor resistance.

The battle is over when the whole party has a “No Move” restriction and the chance of recovery is 0%.

When having an ability that halves SP cost the halved SP are rounded up.

Equipment that protects against an element works now like a buff and shifts the attribute.

All states with a recovery rate of >0% autoheal now after a battle is finished even if they can persist on the map. (#1392)

Attacks that target all enemies do not hit hidden enemies anymore.

The battle windows are now animated and slide from left to right.

Self-destruct shows now a zoom-fade-out. (#1452)

Medicine is now usable by any actor in battle, but when the target cannot use the medicine it will silently fail. (#1482)

Automatic state heal happened one turn too early. (#1504)

The Random Encounter algorithm was redone and matches now the RPG_RT implementation. (#1455)

The critical hit algorithm combines now the critical percentage for actor and weapon correctly and equipment that prevents critical hits is supported. (#1487)

The algorithm for physical attacks matches now the RPG_RT algorithm. (#1511)

The RPG Maker 2000 battle uses now the correct algorithm to determine the turn order. (#1519)

The SP required to use a weapon or a skill are now correctly calculated. (#1511)

The skill window remembers now the last selection per actor. (#1525)

Fixed equipment (curse) is now implemented for items and states. (#1562)

States that grant 100% dodge are supported now. (#1563)

Savegames

Jump and Crouch didn’t work anymore in Ara Fell after loading a RPG_RT savegame in Player. (#787)

After loading a savegame in Peuteris Grey the scrolling began to induce motion sickness (#1026).

The save count fields are now respected: When the database save count mismatches all common events are reloaded from the database and when the event save count mismatches all map events are reloaded from the map. (#1203, #1441)

Saving of tile substitution is now supported. (#1266)

Reading switches or variables does not resize the array anymore. Only write operations will do this. This fixes Witch’s Heart when the savegame was written by RPG_RT. (#1360, #1475

Steps are now counted and stored in the savegame. They are only used for applying damage when an actor is poisoned. (#1472)

Continuous Flash effects are supported now and the flash state is correctly saved and restored. (#1501)

Many party and event related fields are now correctly saved. This is the main cause of the regressions in loading old Player saves. (#1499, #1502#1522)

The player character was not visible in Makoto Mobius because the last actor in the savegame was not initialized. (#1514)

When loading a savegame that had no events running the event running on the main interpreter was not deleted. (#1565)

When the title screen was disabled in a RPG Maker 2003 v1.10+ game pictures were not restored when loading a savegame. (#1571)

Various gameplay changes

The ExFont resource is now automatically extracted from RPG_RT.exe and used as the ExFont graphic in Player. This will help a lot of games that use custom ExFont like Alter A.I.L.A. Genesis and Mother: Cognitive Dissonance and (#605)

The debug scene, accessible through F9 when TestPlay mode is active, got new features: Besides variables and switches you can now change gold, items, start battles (#1431) and it is now accessible in battles. (#1432)

The improved debug scene is full of new features for your testing (and cheating) pleasure.

Many minor text alignment issues across many scenes were resolved. (#1512, #1520)

The load/save screen has now animated scrolling. (#1520)

Escape & Teleport play now the skill sound. (#1591)

The window showing a description at the top in many scenes has a special behaviour: Whitespace is only half the normal size. (#1611)

The Shop scene received multiple fixes:

  • FaceSets are now displayed in the message window (#1614)
  • It was possible to sell items in an empty inventory which crashed the Player (#1615)
  • The arrows which indicate if a new equipment is better or worse use now the correct algorithm (#1590, #1615)

The unpopular 2k3 Status scene uses now the terms from the official RPG Maker 2003 release instead of the RPG advocate translation. (#1616)

Vehicle BGM plays now correctly: When you enter a vehicle the old map BGM is stored and when you switch the map the vehicle BGM continues playing. After leaving the vehicle the stored BGM is restored, except when the map changed, then the map BGM plays. (#1619)

The Equipment scene shows now a “>”-arrow between the old and the new parameter value. (#1660)

Items that invoke skills behave now correctly in the menu. (#1526)

Moving the entire party in the back row is not allowed anymore. (#1444)

The Items Tab in the RPG Maker Editor has a very obscure behaviour: The equipment settings where you can choose between Actor and Class are a global setting! This means when you change it to Class, the class check applies to all items (same for Actors). We find this highly counter-intuitive but support it now for compatibility reasons. (#1438)

The radio button in the red circle is a global setting! This changes the usability for all skills to either actor or class.

The logic for skill usability on the map and in battles is very chaotic and we should document it someday. We found one more edge cases: Skills that only affect states which end after battle are not usable on the map anymore. (#1439)

Changes to the Walk through wall (hold CTRL) feature in Test Play mode (#1439):

  • You can’t walk out of the map bounds anymore
  • While an event move route is active the feature is disabled
  • The feature is disabled while in vehicles

The bush transparency effect only applies to characters on the “same as hero” layer.  (#1465)

Our image cache didn’t differentiate between transparent and non-transparent images: When a picture was loaded twice, once with transparency and once without, both were transparent. (#1576)

When a map has save/escape/teleport flags set to “inherit from parent” and the map is moved to the root of the tree the flags are now handled like “enabled” even though there is no parent. (#1597)

FileFinder

Because Windows is case insensitive we must emulate this behaviour on all platforms, otherwise files are not found when the case doesn’t match. Until now we only supported this for A-Z, but the game Blue Star Story required it for Ś->ś. We switched from our naive algorithm to the ICU library which supports lower-casing for the whole Unicode range. (#839)

More fun with Unicode: There are multiple ways to store many glyphs in Unicode, e.g. ä can be stored as the codepoint ä or as a+” and OSX uses the second option which breaks loading of almost all files because the game and the filesystem name mismatch. The Player normalizes now all strings, again using ICU. (#1530)

The popular game Violated Heroine was unable to load assets in subdirectories on Windows because the directory separator was handled incorrectly. (#1383)

The macOS version will not crash anymore when a directory is accessed that is not readable. (#1476)

Via hex editing it is possible to put assets in subdirectories or even navigate upwards with “..”. The Player attempts to convert these to a canonical path by removing redundant path components. The VIPRPG game エターナリ草 referenced “Picture\map\\block01” and we did not to convert \\ into \ before, resulting in “image not found” errors. (#1542)

When the path to pictures contained a slash “/” (only possible with hex editing) the path separator was not properly transformed on Windows which meant many assets failed to in Violated Heroine. (#1629)

When the RTP is not installed or only partially installed the Player will always emit now a noisy warning when any RTP asset is requested. The warning displayed on Player start is gone. (#1630)

Building

Building for Windows (with vcpkg) is now supported by our CMake script. Which means this is the only supported way to build for Windows now. The Visual Studio project files were removed. (#1270, #1536, #1537)

The install path for manpages on UNIX is now customizable. (#1533)

The Android port was updated to SDL 2.0.9. This fixes startup crashes on multiple devices with broken Adreno GPU drivers. (#1609)

Ports

BSzili ported the Player to AROS (#1492). Check out his website for obtaining the Player.

The Nintendo Switch port received a major update: The port compiles now with the latest version of devkitA64 and supports hardware acceleration which gives a huge performance boost. Debug tracing is now possible with nxlink. (#1607)

Other

On certain hardware configurations the audio on Windows was broken when the WASAPI backend was used. This only affected our nightlies after 0.5.4, because for this release we used an older version of SDL. (#1405)

The seed used to initialize the Random number generator is now written into the logfile, making game recordings/replays more deterministic. (#1446)

The WildMidi library searches now first for /etc/wildmidi/wildmidi.cfg because the timidity.cfg contains soundfonts on many distributions which WildMidi does not support. (#1467)

liblcf

Our library for reading and writing RPG Maker files got major updates! When you load any RPG Maker file (there are LDB – Database, LMU – Map, LMT – Map Tree or LSD – Savegame) with liblcf and save them without modifications the result will be now perfect down to the byte for 99.9% of all files. The exceptions are files with custom modifications due to patches. We cannot handle them, but we support custom headers and they are preserved.

The reading and writing was tested against 1500 games and we hope that this gave us enough coverage to say: Our read and write code is now perfect!

Additionally we handle now all the default value corner cases, e.g. there is in some cases a difference between a missing and an empty field. E.g. when the party field is missing it means that Actor 1 is in the party, when it is empty it means the party is empty. (#229, #234, #242, #268, #277, #279, #283, #284)

liblcf will not choke anymore on corrupted chunks. This makes a few games playable for the first time in EasyRPG Player, because when liblcf cannot parse it, Player will not play it. Games that start now are Der Sinn des Lebens, Devil or Angel, Kroetenstuhl, Rick Jones Hunters and Monster World RPG. (#249, #250)

All chunks are now identified which means there is no field left anymore whose purpose is unknown. This allows us to make saving in EasyRPG Player match RPG_RT behaviour but we are not fully there yet! (#261, #264)

Music and sound effects are now correctly restored from savegames. Before pitch and volume changes were ignored. (#262)

String parsing was optimized which gives a minor parsing speedup mostly noticeable on slow systems. (#273)

This affects some users and developers: Our gigantic RAM eater reader_struct was split in smaller files. This means you will not run out of memory anymore when building e.g. on a Raspberry Pi and the compile speed was increased. (#289)

The new animation type “Step frame fix” added in RPG2k3E is supported now. (#306)

liblcf for Developers

A new helper function PrepareSave was added which can be used before writing LDB, LMU and LSD to increase the save count. (#266)

Most of our liblcf code is generated through scripts but one part still used a boost preprocessor macro. This was now replaced with a jinja2-template, too which removes the last usage of boost in our code. (#238)

When the CMake version used for compiling liblcf is older than 3.10 the bundled EXPAT and ICU CMake files are now used for finding the libraries. In newer versions of CMake they are provided by the host system. (#275)

The Save chunks for Player, Event and Vehicle inherit now from a common base class SaveMapEventBase. This matches the RPG_RT behaviour and allowed us to remove many code duplication in Player. (#282)

Our code generator supports now emitting of constants. (#287)

All liblcf structs are now equality comparable. (#291)

As for Player building for Windows (with vcpkg) is now supported by our CMake script. Which means this is the only supported way to build liblcf for Windows now. The Visual Studio project files were removed. (#294)

The tarball created by autotools contains now the CMakeLists.txt. (#297)

Headers and Sources are now sorted and listed in both Makefile.am and CMakeLists. The CMake generator supports now creating of logical groups you should know from the Visual Studio project. (#298)

Mimetypes are now provided and install for the RPG Maker files on GNU/Linux. (#301)

EasyRPG Player 0.5.4 “Antidote”

This release took us far longer than we expected last year and as you can see the changelog is a bit short for 1 year and a few days of development time. We are always critical low on developers and this year we all had a serious lack of time and other personal issues. Though don’t worry we can still provide you with some cool additions that will improve playing a lot of games.

There are tons of battle fixes in the queue but due to there sheer complexity we decided to delay them for the upcoming 0.6 release, hopefully also in 2018. Sorry!

Why you should use EasyRPG Player

A few hours ago we were notified that the author of Deep 8, Independent Art, created a video for us which lists all the advantages of EasyRPG Player over RPG_RT. Thanks for this nice video, it is really a great summary!

Watch the Video (Link goes to Youtube)

Regressions fixed

Due to a change in our shutdown code the Player crashed when closing the Player while in a battle (#1298).

Technically this was not our fault, but because of a bug in the libpng library we used on Android the loading of some graphics failed in Violated Heroine ( ͡° ͜ʖ ͡°) (#1311).

The support for RPG Maker 2000 1.61 placeholders erroneously prefixed the “Critical Hit” message with the name of the actor in older RPG Maker 2000 versions (#1291).

Transitions

All missing transition effects are now implemented (#900). This includes:

  • Random Blocks
  • Random Blocks Up/Down
  • Zoom
  • Mosaic
  • Wave effect

Furthermore Transitions are now implemented as “Drawables” (Graphics rendered by our engine) which means frameskip and fast-forward works now as expected while a transition is active (#1094). The timing of transitions is now also adjusted, e.g. the Game Over scene has slow ones but menu to map is fast.

As in RPG Maker when a battle starts the screen flashes now twice and then a zoom effect onto the actor happens (#1369).

We would like to thank our new developer Sormat for this significant contribution.

Performance

The Tone effect performance was significantly improved and is now 50% faster for single effects (Tone or saturation) and 100% faster when both are enabled at the same time (#1380). This change is mostly noticeable on our CPU constrained ports (3DS).

Audio

All sound effects are now stopped when the sound “(OFF)” is played. As a bonus this also applies to inofficial translations where this string was translated to e.g. “(Brak)” or “(Kein Sound)” (#1120).

Battle

Monsters with the “flying” attribute move now up and down in the RPG Maker 2003 battle system (#1220).

Flying enemies are now really flying

A bug in the alpha channel handling in the Tone Blit code resulted in strange looking weather effects and colored boxes when a battler had an effect in the RPG Maker 2003 battle system (#1225).

Due to a bogus check fleeing from random encounters was not possible in RPG Maker 2000 battles (#1350).

The placement for party members was incorrect in RPG Maker 2003 battles (#1399).

The RPG Maker 2000 battle system reported hidden enemies in the initial enemy appearance message (#1370).

Turning a switch OFF after an enemy action contained a bug and turned the switch ON instead. The switch toggling was also broken for some types of enemy actions (#1419).

The turn counter for RPG Maker 2000 battles did not increment before determining the enemy actions. This means all enemy actions that depended on the turn counter were executed one turn too late. Together with the previous bug this fixes the battles in Heaven and Hell Episode 3 (#1419).

Our Player crashed when using Switch Skills in 2k battle, when there was no target. Now we show “???”, like RPG_RT does (#1440). This only affected games made with the English RM2k release.

Map and interpreter

The game COLORS: Lost Memories uses a modified database with actors of level 0 (normally the minimum level is 1). This corner case is now supported though the game is still unplayable due to interpreter timing issues (#1248).

In Razas standing characters were shown with the incorrect movement frame “left” instead of “center” (#1198).

When a move route was active while boarding the Airship, the shadow of the Airship already moved with the route while the ship itself was still playing the ascend animation (#1268).

Battle commands were incorrectly loaded from RPG_RT save files and the handling of classes was updated (once again) because we figured out that one field in the save game is not “class_changed” but “battle_commands_changed” (#1287).

The “Change Class” and “Change Battle Command” event commands support now range based operations on multiple actors. This is an undocumented feature not exposed by the RPG Maker editor interface (#1288).

The charset animation frame was not reset to “Middle” when a Jump happens or “Stop Animation” is used (#1289).

Pictures with “Scrolls with Map” setting were rendered at the wrong position after a savegame was loaded (#1296) and the last picture of a savegame was not restored at all (#1299).

The viewport got misaligned by 2 pixels when the map reached the map border (#1300). This is a strange bug which we already fixed twice before but it reappears under different circumstances.

After the strange “Set Vehicle Location” behavior encountered last time which allows moving the party when outside of vehicles (#1257) we got another report. The game 呪いのこうもりさん uses this command for changing maps. This usually crashed RPG_RT but when the event ID is valid on the new map it will magically work. Our Player emulates this now with a teleport, this doesn’t fully match RPG_RT behaviour but is close enough (#1303).

A black screen occurred after using the Portable Portal given by the Witch in Violated Heroine. This was a timing issue caused by the use of “SetMoveRoute” with an empty route. An empty route was processed like a normal move route, therefore the interpreter was off-by-one frame and this race condition broke the code. Empty move routes clear now existing move routes and result in a delay of 0 frames (#1308).

Spritesheets (a new RPG Maker 1.12 feature) were broken and only worked once (#1331).

For implementing screen shake, tiles that were outside of the map were rendered black to avoid graphical glitches, but Frozen Triggers uses a modified 1×1 tile map, therefore the whole screen was drawn black. The implementation was changed and combined with the previous fix the game is now fully playable!

Frozen Triggers went from completely unplayable to fully playable. The scripting in this game is insane, a must play!

Here a longer gameplay video, they are desynched, which can have various reasons, but you see the difference ;).

In Touhou Mother party members became solid after battles or scene transitions. The issue was that the max_stop_count (used to measure how long to wait between move commands) was overwritten on event page changes even when a custom route was executed by an event command  (#1344).

In Witch’s Heart the Hero was moved to the top-left corner when landing while on the broom. The broom is implemented as the airship vehicle and the Player reported “Not in Vehicle” already while the airship was still descending which caused timing issues (#1349).

Play Memorized BGM did not work after a BGM fade-out (remained silent, #1354). This is the 2nd bug fixed in Witch’s Heart.

When a new map loads all events have one frame of execution time before the fade-in happens. This behaviour was already implemented but event sprites were not being updated, resulting in visual issues like e.g. instant visual changes after the transition is finished (#1358). This is the 3rd bug fixed in Witch’s Heart.

Message substitutions of e.g. \n[1] with a hero of name \n[1] resulted in an endless recursion/hang (#1379).

Terrain damage is supported now. Furthermore when the party steps on dangerous terrain a red flash appears now when the receive damage (#1389, #1393). Items that prevent terrain damage are also supported. Therefore you get the full game experience now when you walk in the desert of Vampires Dawn without sun protection.

When a vehicle is entered and no further movement happens, the vehicle still faces to the left but the hero actually faces forward. The facing of the vehicle is now updated to match the hero facing direction. This change does not match the RPG_RT behaviour but slightly improves the user experience and has no possible regressions (#1403).

When the boat or ship is on walkable terrain (usually not the case for water) the airship can land on the boat or ship. This seems like an RPG_RT bug and we don’t know a single game that depends on this feature (#1404).

Calling the menu is disabled now while the player has an active move route (#1404).

Events with “Same as character” layer priority can’t move through boats and ships anymore (#1404).

Two handed weapons are now fully supported in the equipment scene and by the “Change equipment” event command (#1397).

When a monster rapes the heroine in Shitigadianzu the progress bar is now filling up. This was due touch events not triggering while a move route was active. For this change we will not provide a video, because we would need to censor three quarter of the screen and disable the sound (#1412).

The movement was glitchy in the currently unreleased game Super Crystal Hunter because “Fixed direction” movements were not handled correctly (#1413).

Using the computer multiple times in log.[in] does not result in a black screen anymore (#1416). Our interpreter executed the wrong event commands after “Show/Hide screen”.

Ports

All our ports support now all music formats and libraries, however, 3DS may have performance issues with some formats (#1332, #1339).

The 3DS was migrated from the deprecated graphic library sf2dlib to the official library citro3d. This fixes flickering issues and gives a minor speedup (#1422).

You can play now the most memory hungry game on PS Vita: Hero’s Realm (#1340).

The Player runs now as homebrew on the Nintendo Switch  (#1337). See the previous blog post for more information.

BSzili ported the Player to MorphOS and AmigaOS4 (#1415). Check out his website for obtaining the Player.

Misc

The Player checks the dimensions of assets and issues a debug log in the console/log file when they don’t match the expected dimensions. To reduce the amount of useless debug output this check was disabled for Monsters, Panoramas and Pictures (#1333).

The name input scene supports now Traditional Chinese (#1307).

Traditional Chinese in the Name Input Scene

Loading of custom ExFont files is supported now. ExFont is an embedded resource in RPG_RT and is substituted when using the strings $a-$z and $A-$Z in messages. When an ExFont.bmp/png/xyz is in the game directory, EasyRPG Player will load now this file. Vgperson already bundles a ExFont in their game translations (e.g. The Grey Garden, Witch’s Heart and Wadanohara), we hope other game creators/translators will join soon ? (#1352).

Witch’s Heart uses a custom ExFont around the actor names
The dead skull was before highly misleading
By far the worst: The font of Mr. Saturn is completely unreadable. This game bundles currently no ExFont, you have to provide it by your own!

The Skill Menu of a character can’t be accessed anymore when they have a “Do Nothing” restriction (#1395).

When a skill is used in the menu the first sound effect of the corresponding battle animation is now played (#1397).

The actor target scene used to select a skill target did not render the skill costs correctly (#1397).

The hero class is now checked when determining if an item is usable (#1397).

When accessing LCF data structures, sanity checks were added to ensure that no invalid objects are referenced which result in crashes. Most of these checks won’t be ever encountered, because otherwise games in RPG_RT would simply fail in most cases. We do not recommend running games from untrusted sources in EasyRPG Player but this change should reduce the exploitable attack surface a lot (#1259, #1345).

Due to multiple bugs in the SDL2 library concerning fullscreen mode, the Player starts now always in windowed mode and immediately toggles fullscreen mode. This fixes missing title bar icons under Windows and incorrect/pixelated graphics when switching back to windowed mode under macOS. Additionally, the zoom hotkey determines now the desktop resolution which allows higher zooming levels (#1364, #1406).

Two new System database chunks have been identified. One can be neglected, but the other can be used for the equipment usage in 2k3 mode (#252).

For developers

The CMake build scripts for Player, liblcf and the Tools were completely rewritten to use modern CMake. These scripts support now compiling for all major platforms (Windows, Linux and macOS). We slowly plan to migrate most of our targets to CMake to reduce the maintenance burden. This includes deleting the Visual Studio project files and most of the platform dependent Makefiles (#1365).

The SDL UI class was refactored and split into separate files for both legacy SDL and SDL2. This makes the SDL2 UI code much cleaner, because we have lots of workarounds in the legacy SDL code which were not needed anymore in the newer versions (#1327).

Building against SDL2 mixer version 2.0.2 is supported (also recommended because of better mp3 support) now (#1297).

Compiling on platforms that do not have a “d_type” field in the directory entry structure is supported now (#1334).

Our App works now with “targetSdkversion=26” on Android. All apps updated after October 2018 must support this (#1323).

Compiling on platforms where int32_t is not defined as int (but for example as long int) is supported now in both liblcf and Player (#1326).

liblcf (mostly for developers)

Our data access library (liblcf) can now better decide which fields and flags it needs to write for different database versions (#237, #240).

Bugs in the writing of RPG::Actor chunks were resolved  which increases the compatibility with RPG_RT (#235). There are further works in progress which will result in perfect reading and writing of all LCF files but we were afraid of regressions, therefore this must wait until the next release, sorry. :)

The defaults for the terrain grid values were fixed, this should solve some overlapping battler issues which occured in RPG Maker 2003 games (#247).

All enumerations provide now a string representation (#241).

EasyRPG Player 0.5.3 “Stimulant”

We continue our one release per quarter-cycle and release “Stimulant”. Besides initial RPG Maker 2003 1.12 support this is a pure bugfix release.

Unfortunately most of the issues cannot be illustrated this time, expect a less visual blog post than usual :(.

Regressions fixed

Listed here are bugs that were introduced between 0.5.1 and 0.5.2 and have been fixed in 0.5.3.

  • The Player crashes when attempting to use a healing item outside of the battle (#1221).
  • The last-minute “battle encounters based on terrain tag” patch in 0.5.2 contained a bug for the default case: When the terrain tag array is shorter than the current terrain ID, it defaults to true instead of false. This broke battle encounters in Vampires Dawn completely (#1218).
  • A change in the logic whether characters or tiles are drawn for events resulted in a rendering error in Yume 2kki: It uses event tiles with no name. They were rendered as black boxes but must be rendered transparently instead (#1228).
  • The \N[X] actor name function didn’t work correctly anymore (#1229).
  • We reworked the name input scene to match the RPG_RT behaviour and only show two pages per language, e.g. Hiragana and Katakana for Japanese and Latin alphabet and ExFont for Western Europe. Unfortunately this broke a riddle in Ib, because the English translation by vgperson was auto-detected as Japanese and this made it impossible to input the solution (#1272).
  • Battlers are affected by screen shake again (#1280).

A few hours before release another regression was noticed which was introduced in 0.5.2 when placeholder support for the official RPG Maker 2000 English version was implemented: The actor name is shown by default in “critical hit” messages which causes grammatical errors. Because this is only a cosmetic bug and we are already in code freeze we decided to delay a fix to the next release.

RPG Maker 2003 1.12

A few weeks ago a new version of RPG Maker 2003 was released which heavily extends ShowPicture with new functionality like spritesheets and pictures in battle.

EasyRPG Player already implements most of the new picture features except pictures in battle and affected by Tone, shake or flash (#1273).

Additionally “This Event” can be used in Common events now. We support this now for all versions of the engine except for “Erase Event” because this event command results in a no-op instead of an error. We had to keep it disabled for old engine versions because this breaks games otherwise (#1265).

A look in the future

In an attempt to make the Player more stable, all RPG Maker data will be sanitized to detect out of bounds access and invalid data. The main motivation for this is to catch new game bugs more easily but as a side-effect it will also make the Player more exploit-safe.

EasyRPG Player will come to two additional platforms: iOS and ChromeOS through a Chrome App. The Chrome app is mostly finished and the iOS app still lacks some parts of the GUI, especially the layout editor. We will announce when any of the apps is ready but do not expect the iOS app to be submitted to the App Store because the yearly fee is expensive and Apple will very likely reject us.

A virtual filesystem is under development, this allows e.g. running games from ZIP archives or games that are embedded in the Android APK. Together with the optional dependency PhysFS, more archive formats like 7zip will be supported, too. But due to solid compression (full decompression of one file requires decompression of additional files) RAR and 7zip will usually be too slow.

Fixes

A visual error in El Heredero del Rey was caused by handling the character orientation after a page change incorrectly: When both pages contain the same default direction the current direction of the actor is not altered (#1226).

Correct character shown in EHR

Battle2 animations (the large ones) were handled incorrectly. The original logic looked for a normal battle animation and afterwards for a large one but there is a field in the database which indicates if the large battle animation is to be used. This fixes a visual error after defeating the knife-monkeys in El Heredero del Rey and simplifies the code (#1234).

The elevator in HOME was not working. A workaround was to smash the enter button but the proper fix was to disable action events when an autostart event is pending (#1109).

Key Input handling had two bugs (#1217):

  • When “Wait for input” was active the variable that contains the time until the input happened was not reset to 0 at the beginning.
  • When key input was non-blocking the time variable was still reset to 0 instead of ignoring it.

The Violated Heroine became stuck when walking through the East Gate. This was caused by another timing issue: An event with a lower ID than the last running event started in the same frame instead of the next one (#1132).

Aurora Wing: did not continue after the first enemy turn.  Intro has a skippable hang and first battle gets stuck after enemy turn. The game checks if a variable contains 999,999 which is the maximum variable value in RPG Maker 2000. Unfortunately, our Player defaulted to the RPG Maker 2003 maximum 9,999,999. Resulting in the variable being higher than the game expected (#1002).

In the dungeon crawler 題名のない竜退治 the interpreter got stuck after collecting an item. This was caused by an “Erase Event” call in a map event that was called by a parallel process. The interpreter continues now correctly after this case (#1243).

Celestial Silfade Story (シルフェイド幻想譚) froze sometimes after using an attack command in the custom battle system. This was caused by a misalignment of the screen which was off by 2 pixels (#1064).

Additionally, this game uses timers to show the current time of the day. The rendering was off by one frame resulting in heavy flickering (#1245).

When the Teleport or Escape skills target an area instead of a map the area is replaced with the map it belongs to. This fixes the game DQ2悪霊の勇者・製品版ver1.50 (#1253).

We found a game that abuses an implementation detail in the event comment “Set Vehicle Position”: When the party is not in a vehicle the vehicle ID of the party is -1. When -1 is used as the vehicle to move the party is moved around instead (#1257). Furthermore an intended behaviour was not implemented: When the party is in a vehicle the party is moved to together with the vehicle.

The interpreter was not refreshed when a move route altered a switch. This fixes a cutscene in Desolate City (#1232).

Misc

The hero name input scene supports now Simplified Chinese (#1239) and Russian (#1278). Additionally, the name input scene code was modified in order to always show the Latin alphabet and ExFont pages (#1284).

Chinese name input
Russian name input

Sound effects stop now when the Player returns to the title screen (#1147).

The background for battles started with the “Start Battle” event command were wrong when a random encounter happened before. This was caused by an incomplete variable reset when the former battle ended (#1224).

All RPG Maker 2003 backgrounds filled the log with “Image size out of bounds” messages because the check used RPG Maker 2000 background sizes which are smaller (#1223).

When switching back to Window mode under Linux the Window sometimes stayed fullscreen with the window rendered in a corner. This was fixed for the F4 and F5 case, but using your window manager to go to fullscreen and back still may not work as expected (#383).

Android

When the screen was rotated while the Player was running in the background the viewport was partly offscreen after returning. This was fixed by updating to the latest version of SDL2 (#1185).

Deprecation of the Windows RT port

To make the Windows maintenance easier, we are going to switch to the vcpkg tool for compiling our dependencies after this release. This tool does not support ARM Desktop Apps which were required for the unsuccessful Windows RT. Therefore this will be the last version of EasyRPG Player that runs on the Windows RT platform.

UWP for ARM is supported by vcpkg, so if we ever release a Windows Store version of the Player, it will run on ARM, too.

liblcf

The new RPG Maker 2003 1.12 picture chunks were added to liblcf (#213).

The system graphic stretch setting (tiled or stretched) was not correctly restored from savegames created by RPG_RT (#214).

A bug in liblcf was fixed which resulted in corrupted LDB files (Stream read error). The error was quite trivial: We wrote one zero-byte too much at the end of the file… Now lcf2xml can finally be used to modify databases properly (#209).

The input/output API uses now C++ iostreams instead of filenames. This makes the library suitable for the planned Player VFS and will fix unicode related problems under Windows (#206).

The liblcf code generator uses now Jinja2. This will make extending liblcf easier (#202).

EasyRPG Player 0.5.2 “Miracle Candy”

Only three months after the last release we have another update for you before we take a development break for the summer.

This time with a fix for a critical bug that snuck in right before 0.5.1 and corrupted savegames of non-English games. This was especially bad in Yume Nikki because it completely broke the Save and the Player was stuck at the loading screen of the game.

Map

Hero graphics are always reset now when they were changed by a move route command and a teleport happens. Before the reset only occurred when the teleport was to a new map. (#1111)

The birds in a quite cruel minigame in Deep 8 play now the dead animation properly. This was a bug in our interpreter: The movement pattern of the new event page was not applied under all conditions. (#1112)

We handled timers incorrectly. Some games had code that checked e.g. for “Timer >= 1s” followed by “Timer <= 0s”. By looking at it both cases should be false for the time between 0.99s and 0.01s but RPG_RT rounds up the timer checks to the next second and EasyRPG does the same now. (#1165)

The timer functions of “Control Variable” wrote the frame count into the variable, not the seconds. This broke the intro of The Sacred Tears: TRUE. (#1166)

A regression introduced in 0.5.2 which broke horizontal parallax scrolling was fixed. (#1148)

The algorithm of movement type “cycle” matches now closer the RPG_RT behaviour:

  • When the character is ready to move, he will first try moving forward (or in the default direction if we are facing the wrong way: Right for Left-Right, Down for Up-Down)
  • If that failed for 20 frames, keep trying to move forward, but if it fails, now try moving the opposite way too.
  • If that fails for 40 more frames, try going forward and if it fails, now move (do not just try to move) in the opposite way, and reset.

As you can see in the video of Deep 8 below, Chloe walks now in the correct direction. Since it is a looping map, she passes by multiple times in the incorrect version which looks funny. (#1167)

Additionally the video illustrates the new font we support (mentioned further below).

Tile 0 is now always drawn, before our code assumed that this tile is always transparent. (#1169)

Tile ID 0 is rendered now. No mice anymore ;)

Pan screen commands that go out of bounds are ignored now. Before the Player calculated the offset which went out of bounds, e.g. when the camera is at the right map border and the screen is panned by 3 right and 3 left nothing happens, but in reality the screen must scroll 3 tiles to the left as RPG_RT does. This fixes the incorrect camera in the Razas intro. (#1169)

Correct screen panning in Razas

The hero jumps now in the correct direction after touching a “!”-switch in Super Mario RPG – The Seven Sages. Jumping did not respect the turn commands before. (#1171)

The collision check based on the tile id in Schmetterlinkskuh-Flugsimulator-Simulation 2k did not work, because the tile id command did not handle looping maps correctly. (#1176)

Our message box code crashed when a hero name (indirectly) referenced itself with a message command, e.g. Hero 1 with name \N[1] would endlessly substitute the first hero name with itself. (#1145)

Battle

The English release of RPG Maker 2000, v1.61 is detected now and the message substitution by placeholders and automatic linebreak feature was implemented. (#588)

Text substitution is supported now in the RPG2k v1.61 battle system.

The well hidden “Appear Randomly” option in the troop context menu of RPG Maker 2003 was implemented. (#987)

The battle against the nurse in 7thjojo was not winnable, because the battle ended when all party members were removed. This was introduced to fix The Huntress of the Hollow in the last version but the behaviour was wrong: Only RPG Maker 2003 ends the event execution immediately when the enemy party is defeated. For the ally party case and RPG Maker 2000 the victory/lose check happens after the event execution finishes. (#1180)

Battle encounters respect now the current tile – sea monsters will not appear on land anymore.

The “Change Enemy HP” command did not end the RPG2k battle when the last monster died when the event was executed at the beginning of a new battle turn. (#1191)

Conditions for enemies in RPG2k battle which prevent them from attacking are respected now (#1204).

Internationalization

In RPG Maker it is possible to choose between two different fonts: In the unofficial translation by Don they are called RMG2000 and RM2000 and in the Japanese version they are MS Gothic and MS Mincho. (#352)
For non-CJK (Chinese, Japanese and Korean) languages a new font as a replacement for RM2000 was added: ttyp0. The look and feel is similar to Don’s RM2000 font.
The RMG2000 uses a font similar to Shinonome (which is the font we already used before).
For CJK-games not much changes, our already built-in Shinonome Gothic and Mincho are used but with the following changes compared to RMG2000:

  • ` (grave accent) is an opening quote
  • ' (straight apostrophe) is a closing quote
  • " (straight double quote) is a closing double quote
  • Cyrillic and Greek characters are double-width
  • ellipsis … is in the middle of the line
Illustrated are the old font and the new font. Both fonts are supported and they depend on the font setting of the game.
Illustrated are the old font and the new font. Both fonts are supported and they depend on the font setting of the game.
Support for additional scripts: Greek and Armenian. Though we are not aware of any games with these languages :(

The “Enter Hero Name” scene does not show Hiragana and Katakana anymore when playing a non-Japanese game. This caused a lot of confusion for years. We plan to add custom pages with glyphs related to the current language later. (#364)

The Korean RTP was added to our built-in RTP table. This means when you have the Japanese RTP installed it is possible to play Korean RTP games, too. (#452)

The Japanese name input scene shows now ヴ instead of を or ヲ which are very uncommon in Japanese names. (#1193)

Audio

The Opus audio codec is now supported for both music and sound. This is especially useful for the web player because it reduces the filesize a lot. (#1159)

Misc

The output system, consisting of the on-screen console and the log file writer was improved: (#1199)

  • The message overlay can now collect all messages since startup and shows them when the graphic system is ready (e.g. the DSP firmware missing message on the 3DS), before they were only written to the logfile and usually not noticed by the user.
  • For file-log and on-screen similar messages increment now a counter which is appended to the line. For the file-log a message is always written twice: The 1st time it happens and a 2nd time how often it was duplicated (this is to ensure that something is logged in case of crashes)
  • The console does now automatic line breaking with the code written for the RPG Maker 2000 v1.61 battle system which requires this feature, too.
  • Path components outside of the game path are stripped now (see screenshot, look at the filenames reported). When the path is outside the game path it does nothing, so RTP paths are not touched.
The new on-screen console automatically inserts linebreaks now.

The “–load-game-id” command line argument ignored the “–save-path” option. This remained mostly unnoticed because the save path matches usually the project path except for the web player where it resulted in “File not found” errors. (#1174)

The Z index values which are used to define the rendering order of everything on the screen were refactored and all magic numbers are gone. This makes the code more maintainable and actually fixed a bug which resulted in heavy flickering because the rendering order of Pictures and battle animations was below the Screen effects. (#1062, #1195)

Android

The fast forward button was not rendered on all platforms, because some default fonts did not include it. (#1124)

The text is now properly centered in our on-screen buttons and hopefully does not overflow over the border anymore. (#1146)

The fast forward mode can be switched from “hold” to “tap” and the multiplier can be configured. (#1146)

Web Player

The file system used by the web player can be replaced through Module.EASYRPG_FS. This is useful to implement a server-backed savegame system and was implemented upon request of rmarchiv.de where you can see it in action. (#1173)

Using “Fast forward” in the web player skipped map loading and resulted in “Map not found” errors. (#1174)

Arrow keys do not scroll the browser window anymore. The F-buttons are filtered, too (not supported by all browsers). (#1188)

OSX

The project path was not correctly set when EasyRPG Player was executed from the command line. (#1175)

3DS

The Nintendo 3DS version does not crash anymore when the DSP firmware is missing and displays a visual warning instead. (#1142)

Similar to the Wii port the RTP is now searched in “/data/rtp/”.

The touchscreen reported the incorrect button since the beginning and nobody noticed it :(. A nice outline was added which highlights the currently pressed button.

PSVita

An unnecessary thread scheduling was removed in the rendering thread. However, this probably has no noticeable performance impact. (#1158)

EasyRPG Player 0.5.1 “Magic Water”

Half a year after the 0.5 release we provide the first bugfix release which brings interpreter fixes (as usual), a few new features and resolves a crash we encountered in 0.5.

Crashes fixed

Unfortunately our Tone performace improvements had a bug which resulted in a crash when the ChipSet is smaller than the default size and the tone is changed. This broke at least Aëdemphia and Mystic Star (#1037, #1048).

Audio changes

This time the audio subsystem changes are not as significant as for 0.5.0. For the normal user basicly nothing changed. The audio system uses now a generic code which handles all the mixing of music and sound effects. This allows us to heavily simplify the code of our ports.

SDL mixer is now an optional dependency. For the Wii version we dropped SDL mixer completely, the same will happen soon for the Android version. The 3DS and Vita code were improved and the 3DS version finally supports MIDI playback and all noise-bugs when playing sound effects should be gone. The new Vita audio code results in a much better performance and less lag (#968, #1100).

Map interpreter

Screen shake, a very elementary feature of RPG Maker, got implemented. Besides Video playback this was the last event command that wasn’t supported (#565). You can see a screen shake in the video below.

The move command “Change graphic” incorrectly changed the current movement frame to “middle”. The frame is now untouched which fixes a visual issue in the intro scene with the red haired woman in Velsabor (#658) and a glitchy door open animation in Deep 8 (#1114).

The PicPointer patch got implemented (#1033). This is a quite popular modification of RPG_RT which allows using Variables to point at pictures. This fixes the games Aëdemphia, Sternenkindsaga and probably many more.

The ship in Dunkle Schatten never arrived to rescue the party. Movement event commands for vehicles were simply not working (#1050).

The method “Remove all equipment” of event command “Change Equipment” was not implemented. (#1050).

Picture rotations and sine wave effects were not stopping when a “Move Picture” command didn’t contain any effect. Additionally rotations take care of the remaining rotation time now and stop the image always when it is at the initial position, if there is not enough time left for another full rotation. (#1046, #1063)

The custom battles in Razas did not start because they are invoked through a parallel event which does a teleport followed by a transition. Parallel events of old maps stop executing forever when they are interrupted, which was the case for transitions. We fixed this behaviour (#1032).

Due to a bug in our performance improvement code of 0.5 we broke the transparency when rotating images that had no alpha channel. This affected the UFOs in Yume Nikki (#1077).

UFOs in Yume Nikki fixed in 0.5.1

The room “SH1” in HOME hanged our Player, because the code to move events away lacked a sanity check and this room contained more then 10 cows which push each other (#1082).

The boat minigame in Wolfenhain did not start because boarding of vehicles during a teleport resulted in a hang (#1079).

When the hero is placed directly on a “Same level as hero” touch event the event is not executed anymore. This fixes a softlock in Rip-The-Blood’s Ford in Space Funeral (#1084) and allows further progress in the game Sternenkindsaga (#1086).

Touhou Alive (東方ALIVE) did a huge amount of out-of-bounds reads in the variable array. This array is dynamically resized but our code was not optimized for this many resizes resulting in a significant framedrop (#920).

Events that are above or below the hero and have start condition “Hero Touch” don’t trigger anymore while a move route is executed. This fixes incorrect teleports into cities while travelling with the airship (which is a scripted airship, not a vehicle) in Mystic Star (#1051).

The event command “Change Event Location” supports now changing of the facing direction for the “Constant location”-case (#1118).

The tutorial of The Huntress of the Hollow was impossible to continue because a bug in the handling of “Change Class” resulted in the Scout skill being removed, which must be invoked once to proceed in the tutorial battle (#1131). Additionally we fixed the “level up” and “skill learned” message box behaviour when using “Change Class” to match RPG_RT.

Battle interpreter

The “Enable Combo” battle command was implemented (#945). Skill reflection and Skill (de)buff are supported now by the battle system (#1069).

A really annoying bug in our RPG Maker 2000 battle system resulted in actors executing multiple attacks per turn. We were aware of this bug since a year but had no idea what was causing it. In the end the cause was that we removed actions from the wrong side of the action list (#933).

The hit rate calculation for normal attacks and the calculation of fatigue were incorrect (#1055). The escape algorithm was fixed, escaping is much more unlikely and escape correctly plays a sound effect now (#1103).

The skill “Eule” was not working in Wolfenhain due to a bug in the check for “BattleCommand used” (#1080).

Two additional game breaking bugs in The Huntress of the Hollow were fixed. We didn’t handle the “Abort Battle” command correctly and executed the Victory handler instead which resulted in an incorrect cutscene (#1127). The battle interpreter halts now immediately when any battle end condition (Victory or Lose) is fulfilled. This game called a common event after killing all enemies and this event hanged the interpreter. Now the event is not called anymore because killing of the enemies is a victory condition (#1129). Note that this is actually a game bug… ;-)

The “Preemptive Attack” setting is now respected when starting battles in RPG Maker 2000 (#1137).

Other improvements

Our built-in font Shinonome got a proper Wave dash (〜) for japanese and missing glyphs are now indicated by a replacement glyph. Additionally some glyphs were visually improved (#1045, #1047).

Here you can see the replacement glyph � and the correct wavedash.
Here you can see the replacement glyph � and the correct wavedash.
Visual improvements to the glyphs
Visual improvements to the glyphs

The WenQuanYi font was added to Shinonome. This allows proper rendering of most chinese glyphs (#1058).

Chinese glyphs are now available in our embedded Shinonome font
Chinese glyphs are now available in our embedded Shinonome font

The FPS counter got a semi-transparent background to make it easier readable on bright backgrounds (#1049).

The keys Page Up and Page Down are supported now in single column selections (like the game browser or the menu). This makes scrolling in long lists more convenient (#1049).

When the map was looping, event tiles appeared half a tile too late (#716).

Due to an error in our rendering code, parallax backgrounds jumped sometimes (#761). The same issue resulted in an incorrect background in the designer room in Embric of Wulfhammer’s Castle (#961).

The rendering order of Pictures and Battle Animations depends on the version of RPG Maker used. Currently EasyRPG renders battle animations behind pictures but since RPG Maker 2003 1.05 and RPG Maker 2000 1.50 the order was swapped. We added additional heuristic to handle this edge case (#1031). This is mostly noticable in the battle system of Live Together.

The monster (which is a picture) is correctly rendered behind the menu (which is a battle animation)
The monster (which is a picture) is correctly rendered behind the menu (which is a battle animation)

VX-Ace like charset behaviour (width and height are calculated based on the image proportions) can be enabled now by prefixing the filename with a $ (#1067). This is just a visual change, the Player won’t adjust the rendering order for too large CharSets.

Support for large charsets in 0.5.1

The “redo” function in the infamous reordering scene was broken and cancel correctly removes the last selected actor now (#1072).

The calculation of the string length when writing LSD files was incorrect when the strings contained non-ascii characters. This was no problem for our Player, but RPG_RT refused to read these savegames and reported “Stream read error” (#1090).

A very rudimentary input record and replay functionality was implemented. This functionality is not useful for general use yet and is used for testing purposes (#1096).

The random number generator (RNG) uses modern C++11 random APIs now which should improve the randomness and the RNG is now portable which means you get the same sequence of random numbers on any platform. This is important to get deterministic replays (#1104).

The item usage count (for items with more then one use) was handled incorrectly which resulted in infinitely usable items when loading a RPG_RT savegame (#1087).

It is now possible to speed up the game (3x) by pressing “F” or through a new touch button on Android (#1010). Because the music speed stays normal this can break a very small amount of games which use the music position in events.

Shop merchants payed the full price when selling items. The deal is now more in the interest of the merchant: The price is halved (#1110).

Event IDs were not correctly restored when loading a savegame. This resulted sometimes in the warning “Event ID 10005 is invalid” because ID 10005 refers to the current event and for this lookup you need a proper event ID. This resulted in minor issues in Yume 2kki that were fixable by leaving the virtual computer (#1131).

Panoramas were not correctly rendered when a savegame created by RPG_RT was loaded (#1071).

Improvements to RTP handling (#1139):

  • The environment variables for adding RTP paths support now multiple directories (delimited by “;” on Windows and “:” everywhere else).
  • The official English RPG Maker 2000 RTP is now supported.
  • Our EasyRPG RTP is now supported (though, still quite incomplete).

Basic support for mouse and touch input was added. This is currently opt-in and must be enabled through the command line arguments “enable-mouse” and “enable-touch”. These features are the first step for a multi-platform touch UI (#1057).

Android

The Android game browser supports displaying of title images in XYZ format now (#1074).

Our Android gamebrowser with XYZ-image support. Ara Fell uses the "Skip title scene" feature of newer RPG Maker versions and has no image in the title folder at all.
Our Android gamebrowser with XYZ-image support. Ara Fell uses the “Skip title scene” feature of newer RPG Maker versions and has no image in the title folder at all.

The “Report a bug” function crashed on Android 7 due to changes in the security model (#1105).

Wii

The Wii version finally supports automatic encoding detection through the ICU library. The Wii version was the only one that lacked ICU, due to the CPU of the Wii which is a PowerPC. PowerPC is “Big endian” and most other platforms (like PC or Android) are “Little Endian”. The endianess influences how bytes are stored, e.g. Big stores as AA BB CC DD and Little as DD CC BB AA, so you have to swap the data (we do this when reading LDB and other files). To compile for Wii we “cross compile”, that means we use a compiler on our PC, that generates PowerPC code for the Wii (that’s faster and more convenient), but ICU doesn’t support mixed endian builds (because their build system involves running some tools on the PC which don’t support byte swapping). But we were finally able to find the bug in the ICU build system and now have a working version for the Wii (#1095).

PSVita

The Vita version supports now shaders. To toggle them you have to use the 4 corners of the screen. This may not be very intuitive but we still lack a generic settings Ui :). The rendering runs now in an extra render thread, this means the framerate slightly improves and shader effects will not slow down the Player at all (#1078).

liblcf

A heap corruption bug in “ReadString” was fixed (#194). The usual safety rule apply: Don’t run content from untrusted sources through liblcf or in EasyRPG Player. The Player is probably easy to exploit using a malformed file but we try to keep liblcf safe :).

The calculation of the event size for non-ascii strings was wrong. This was the same bug as in the Player but in this case it fixes the problem in other tools like xml2lcf (#196).

The XML converter for LMU (Map) files doesn’t write an empty ID field anymore (#186), which was never intended to be used anyway and caused confusion.

A Chinese translation of Wadanohara was detected as encoding GB18030 which is not included in the ICU version used by most of our ports and resulted in an error. This encoding is now handled as Simplified Chinese (codepage 936) (#187). This game is a really bad mojibake-offender: To get correct filenames you have to extract the japanese Wadanohara archive with a Simplified Chinese encoding.

liblcf doesn’t update the timestamp value of savegames anymore. This was problematic because lcf2xml wrote a new timestamp each time the files were converted instead of using the original one. EasyRPG Player sets the timestamp correcty during save now (#195).

The default value for a Battle2 animation_id is now “1”. This fixes an invalid animation error (e.g. in Space Funeral: Legend of Earth Birth) when the first animation is used as Battle 2 (#193).