The Request
As is probably well-known by now, I have recently become much more active on the RPG Maker Web official forums than I was previously. Honestly, it’s a little interesting — and somewhat overwhelming — being involved in a community as large as that one. Normally, I ignore almost all requests for anything related to Ruby or RGSSx programming; for the most part, I am simply uninterested.
One particular request grabbed my attention, though: some time ago, the user Yeyinde created a project scanner and data verifier for RPG Maker XP and RPG Maker VX projects — and Archeia (an administrator at RMW and owner of Division Heaven) requested a version that could be used with RPG Maker VX Ace projects.
The Problem
Yeyinde’s data scanner, for the most part, worked perfectly well and was used by many members of the community — unfortunately, it was not written particularly well. The source code was a complete mess, and certainly didn’t lend itself towards extensibility or flexibility — two things which I hold dear, and which Ruby is exceptionally good at providing.
So I glanced at the source — the core of it was exceedingly simple, but handled in a very blunt and rigid way. The data structures used included code that was entirely unnecessary, documentation was nonexistent, and the code base itself was resistant to modularity.
So I scrapped it.
The Solution
The problem, as I saw it, was intrinsically poor (but functional) design. Users of the program saw no issue, as it worked as advertised for the most part — it got the job done. From the perspective of an end-user, this is all that’s required; from the perspective of a developer, however, it leaves much to be desired.
As I said previously, I admire flexibility, modularity, and simplicity. As such, I decided to approach the use case of the original program in an entirely different way: by developing individual, modular components designed to be inherently flexible and easily extended by other developers.
At Present….
This concept seems to be working quite well. At the moment, the first component — Eidolon — has been completed and offered as a Ruby gem (the source is located in the SES source repository).
Essentially, this component allows the dynamic creation and destruction of the RPG data structures that are used by RGSS, RGSS2, and RGSS3 — which subsequently allows the easy loading and viewing of the serialized data stored by any entry in the RPG Maker series so far (and adding more in the future is quite simple) from an external Ruby implementation.
The design of Eidolon, by the way, allows it to be used in MRI Ruby, JRuby, and Rubinius on Windows, Mac OS X, or Linux — without any undesired artifacts. It is implementation and operating system agnostic.
And in the Future….
Of course, this is only the first part of a modern, modular data scanner for RPG Maker projects. All Eidolon does is create the RPG data structures for a desired RGSS version (even multiple different versions within the same Ruby session) and allow serialized data to be easily loaded — and viewed. It does not handle manipulation of the data or serialization of any modifications; that’s not the point of it.
The next major portion to write, obviously, is the backend for the scanner and verifier — the user interfaces (there will be more than one) will come later. In addition to this, all of the components of the verifier will be as platform-independent as possible, supporting Windows, Mac OS X, and Linux.
The Ideal
I will be releasing standalone Windows executables and Java archives once all of the verifier’s components have been created and assembled into a final form — and along the way, numerous smaller, broadly useful tools will have been created… allowing further work on external, cross-platform tools for manipulating RPG Maker data.
That, in my opinion, is the ideal.