A Quick Update

This is just a quick note on current development: I'm massively behind where I hoped to be at this stage, and it doesn't look likely that RPGMaker Trans V5 will be this month.

The reasons? Threefold. First off, my actual job has been pretty hectic recently. Secondly (and related), I've not been able to get motivated enough to do a decent stint of RPGMaker Trans work.

Thirdly, I asked Ruby to serialise objects to JSON and it decided to insert raw binary into the JSON, rendering it useless.

Sometimes I almost think Ruby could be a serious language, and then I always run into run of these issues. Oh well.

Bug Reports, RPGMaker Trans v5 Progress and Other Stuff

So, I've got to apologise to all of the people who have given me bug reports. I've been woefully slow in actually solving anything. The main reason for this is lack of time. My main job has been quite nuts as of late, which has left little time for RPGMaker Trans development and bug fixing - unlike a lot of other stuff I do, bug fixing needs big chunks of contiguous time, which has been something I've been lacking lately. I'd ask anyone who has reported a bug to hold on just a bit longer.

RPGMaker Trans V5 Progress

A good chunk of progress has been made on RPGMaker Trans V5. The current source code has a lot of features implemented, but not necessarily exposed. Here's a small list:

  • New file reading/writing framework to fix a lot of the old problems
  • New interprocess architecture, to improve speed on Windows
  • Writing RPGMaker game archives
  • Programmatic access to patches
  • More compressible patch export format for distribution
  • Refactoring code to make it easier for 3rd party tools to be developed

It may be the case that the command line version of V5 is available before the GUI version though. I'm still learning QTQuick, but would like to get V5 CLI out as soon as possible.

Other Stuff

As that last bullet point implies, I'm kind of hoping to get the core of RPGMaker Trans into a state where other people can develop tools. As part of that, I'm making a couple of tools which I'll be releasing at some point. These will be part demo projects, but they also have some pretty neat features.

  • Robotrans: A machine assisted translation tool. A lot of games will have some very formulaic text. For example, opening a treasure chest or the stat bonuses of equipment. Robotrans is capable of applying rules and replacements to the translated text to automatically derive some translations. And as the bits which are formulaic are also rather boring to translate, it should make translating much more interesting.
  • Arcknife: Yet another RPGMaker Archive extractor, utilising the RPGMaker Trans frameworks. However, it will have a couple of neat features. RPGMaker Trans's current extractor is actually pretty fast, due to it utilising all processor cores. The new version is much faster, and I anticipate Arcknife to be the fastest extractor available. It should also support RPGMaker MV, and not consume vast amounts of RAM to unpack stuff. Finally, for RPGMaker XP/VX/VX Ace, it will be able to create archives. Why would people want to create archives? Well, RPGMaker's archive utility is pretty slow. It'll also have a neat trick that can obfuscate archives and make them pretty difficult to unpack, for creators for whom this kind of thing appeals.

Repository and stuff moving around

So, it looks like Bitbucket is undergoing a few changes.

Now I think that they could have communicated these better, as the first I knew about it was when I noticed that the Icon for the RPGMaker Trans repo had changed to the Amy Rose avatar that I use (she's a fun character). To get it set up correctly again, I need to move RPGMaker Trans to being a Bitbucket project rather than just a personal repo.

I had been planning to do something similar anyway - as there is already a project for RPGMaker Trans so I can have this website here - so this has just sped things up rather than being an actually annoying change. As far as I know, I'm the sole developer for this project and so changes in Merucial configs won't affect anyone else. The only people this will affect are those rather annoying people who insist on deep-linking to the RPGMaker Trans releases. I'm prepared to throw these guys under a bus because a) I regularly delete old releases anyway so this is nothing new for them and b) I do also say link to this website rather than direct to the releases, and so they should either know better or be prepared for inconveniences like this.

So the actual announcement of the changes:

  1. Bitbucket Repo URL is now https://bitbucket.org/rpgmakertrans/rpgmakertrans
  2. Mercurial Repo access is now ssh://hg@bitbucket.org/rpgmakertrans/rpgmakertrans
  3. Downloads page is now https://bitbucket.org/rpgmakertrans/rpgmakertrans/downloads
  4. Issue Tracker is now https://bitbucket.org/rpgmakertrans/rpgmakertrans/issues

The front page has been updated appropriately, so hopefully there's nothing to worry about.

Other News

As people may be aware, last year my old laptop broke, and I was forced to resort to an even older laptop for development. This did hamper things somewhat - a 1.4GHz machine is only minimally usable in this day and age. Fortunately though, I now have a new-ish laptop, which is similarly spec'd to the broken one. So that's a development hurdle dealt with - the 1.4GHz machine was only just capable of running my IDE, and so it's a relief to me that I can now develop without enforced 5-second pauses that happened whenever IntelliJ decided to do something. The only downside was having to migrate all my files over. Again. At least it's easier this time round than the previous situation of extracting files from an unbootable machine with strong crypto on it.

Coming up soon will be the v4.4 release of RPGMaker Trans, which will debut a new script parser and a minor revision to the patch format. And then it's all steam ahead for v5, although with a possible handy utility release before then.

RPGMaker Trans v4.35 Released

So I released v4.3 very quietly, due to lack of testing and a crash-on-exit bug. v4.31 corrects these issues, and sorts out a few more things. A quick list of things:

  • v4.3: Make a bunch more things translatable
  • v4.3: Fix issue which caused indefinite hang on games with duplicated script names
  • v4.35: Fix crash-on-exit bug in v4.3
  • v4.35: Fix progress bar sticking at 99%

What's Next

The next order of business is a new Ruby parsing engine based on the Pygments library for v4, to fix issues with Ruby script parsing that are showing up (TLDR: While RPGMaker Trans no longer blows up completely, I've seen at least 7 games which do manage to break the current script parser in various ways). This is in addition to the ongoing work on version 5.

Status Update and Roadmap for v5.0

So then, an explanation of what's been happening, because I've been essentially away from development for a while.

First off: my laptop died. I do most development on my laptop, so that slowed me down a lot. Within a week though I had reassembled my old laptop, which was perfectly serviceable, and was back in action. Then that laptop died as well. It took a few weeks before I could recover the data from it and repair it, which is where I am now. However, I still haven't gotten around to looking at the bugs that have been open for some time.

Now, onto more interesting things. I'm currently working on v5.0 of RPGMaker Trans. First, some history: Since v1.95, RPGMaker Trans has been running on a custom multiprocessing based architecture called Headless. Headless made a great deal of sense at the time, because there was no standard way of doing these things in Python. One thing that was a hack then and is still a hack now is running the GUI on Headless as well - while this works nicely on Linux, it causes a lot of lag on Windows.

In addition, Headless actually brings an overall speed penalty when fast operations are introduced - this seems to be due to something like a FPS limiter effect. This became noticeable when the new CFFI unpacker was integrated into a Headless framework, and ended up being slower than the original (when without Headless, it's a lot faster). This is coupled by the fact that Pythons now has built in support for the majority of things that Headless does, and the built in support does things a lot better.

To top things off, I've recently discovered that there's a number of issues with the Windows version. The GUI is adding substantial amounts of padding (for some reason I have yet to figure out), as well as ZIP based patches being thoroughly broken. Also it's slow - possibly something to do with networks. Further, the GUI is adapted to a workflow which I feel is no longer optimal - specifically, it insists that the game should never be patched in place. This was fine when I designed it, but now that I think I know how to do patching in place successfully, it's a limitation.

So, what's going on?

I'll be looking at the bugs on the issue tracker and trying to close them for a new RPGMaker Trans release. This will also include some experiments with Nagles algorithm disabling to see if I can get the Windows version to translate Ruby games faster.

In parallel to that, I'm also working on v5.0. The things which are going into it:

  1. Moving away from the old Headless architecture to something based on Python standards. Should make RPGMaker Trans faster and better
  2. A new GUI - this may also remove the need to bundle PySide in it's entirety, which would cut the download size sdown a lot
  3. A new system for handling file resources
  4. Patching games in place, handling the original versions of files sensibly
  5. The ability to patch RGSS archives without unpacking them
  6. A patch export format
  7. Embedding patches into translated game binaries, for patch recovery/distribution.
  8. Ruby-side patch loading, for more reliable speed

And what about RPGMaker MV?

I've had a look at RPGMaker MV and for unpacked games, it should be easy to add support. I'm not doing so now, but will do in the future. However, I have no idea how to handle packed games at present. I'm able to extract some of the scripts, but nothing else. Anyone with any ideas on this, please get in touch!

EDIT: So, following some discussion on a forum (ULMF, very much NSFW), the format of the packed games has been identified as Enigma Virtual Box. There's some Python libraries that claim they can open these, but they're quite out of date. In any case, I've at least got a starting point. All credit for that to Erithzak over there.