I took a small break from ARC (was getting a bit burned out on it), and for the past few days have been making another RPG tool. Its a "scanner" for RPG projects that performs in-depth analysis and error checking on a project. It is a complete with a host of tools to automate project optimization.
Here are some of its features (there are more, but here's the highlights)
- Compatible with XP, VX, and VXA
- In depth scan of every map, event, and event command. Checks every event command in the game to ensure specified graphics and audio exists, as well as make sure associated data is still valid. For example, it checks that all transfer events connect to existing maps, checks that "Change Weapon" actually points to an existing weapon, etc, ect. I spent a lot of time and was very thorough. Literally every type of event command in all three RPG versions that this can be done with are checked.
- Automatically finds and can copy every used RTP resource to the project locally for distribution. This only works when the resources are used in the database, events, or event commands. You will still need to double-check custom scripts for any RTP resources they may use.
- Option to search and find all unused local resources and delete them. The same script restriction applies.
- Finds and deletes hidden thumbnail.db files (Windows XP only). These are hidden files used for the icon cache by windows to generate thumbnails faster in Explorer. They would normally get packaged with your game without you ever knowing it and add size to the file.
- Automatic copying of appropriate RGSS###.dll to the local directory for distribution
- Script compression by using a stringer Zlib compression, removing whitespace, and removing comments. This can cut the size down by close to half in some cases, but is really only appropriate for a game ready for distribution since the formatting gets hard to read.
- Integrated tool to find and convert JPG and BMP files to PNG, which are optimal for RM
- Integrated PNG compressor, which can compress the PNG IDAT stream much more, as well as strip useless data from the file, all without losing any quality whatsoever. I have seen this method shave off as mush as 90% from PNG file sizes, so its quite handy for quickly saving space.
- integrated tool to convert WAV, WMA, and MP3 files to OGG, which is a nice, lightweight format good for RM. There are options for target sampling rate, bitrate, and number of channels you would like to output the file as.
- A few other minor things such as compressing the Game.exe file to shave off 20 kb, etc, etc.
The point of this post is that I should finish it up in the next day or so, and I would appreciate some people who are willing to beta-test. There are a lot of events, and three engines that need tested to ensure it catches errors as its supposed to do, as well as performs copying of RTP resources without missing any, doesn't screw up scripts when it compresses them, and other stuff. You get the idea.
If you would like to participate, just make a reply stating you would like to, and I when its ready, I will upload a copy for you to download. I will be happy to add all beta-tester to the credits as well, so anyone who uses it will be able to see your contribution to it. I'm really only looking for 3-4 people, and its on a first-come, first-serve basis. If you have a project of pretty good size to test it on, that would be a plus, but I have no problem with, even encourage, to download and run on some projects that people have shared around the community. I will supply more information to beta-tester via PM on specific things to be on the lookout for, so it mainly just requires altering around some database and event stuff within a project, running the program, and seeing if it catches errors that have been created. Nothing really hard.
1. The script stripping of white spaces, empty lines and comments is not really necessary. You may get a few dozens of kB extra space which is really not much.
2. I'm not sure how much sense it makes to convert JPG to PNG. In most cases this will result in a larger PNG. The only exceptions where PNGs might be smaller is if there are only few colors used and JPG would cause very visible artifacts because of that (e.g. a black image with a bit of white text should stay a PNG because of that). Converting such a PNG to JPG and back to PNG (or just any JPG to PNG for that matter) would cause its size to increase a lot.
3. Careful with the PNG compressor. If it just strips the unnecessary extra stuff, that's ok, but it shouldn't do stuff like converting a 24-bit PNG to a 8-bit PNG. Shrinking a PNG image by up to 90% just sounds unreal to me.
4. Keep in mind that compressed data also takes longer to read.
5. Did my Resource Tester inspire you to do this? xD If not, I may have some additional resource checking features that you don't so you should take a look at it and add them as well.
1. On the test project I have been using, Scripts.rxdata gets reduced from 281 KB to 160 KB.
2. Without the compressor, that is mostly true.
3. You can see believe it when you see it. Although 90% is not typical, it usually averages about 30-40 percent. There is no change to the quality of the image.
4. The stronger Zlib script compression is marginal, only a few KB for an entire script file. I am simply using Zlib::BEST_COMPRESSION, which RM might be doing already, but in an older version of Zlib.
5. Actually ARC inspired me. Working on the editor I encountered the problem of how to handle it when the currently defined data for something was erased (ex. Actor's starting weapon was erased from the Weapons tab). I handled it correctly in ARCed to notify all relevant windows when a database item is changed, but I realized that this can occur in RM while making a game and the user might not realize it.
The point is to make a single, all encompassing, resource testing and optimization tool. There are plenty of topics of various scripts to use (including yours ;) ), file compressors, converters, etc, etc. This will be a single program that can automate it for you, and be much more thorough. Instead of just giving a log of used RTP resources, it gives the option of copying them for you. Instead of just notifying of unused resources, it gives the option of finding and removing for you. There are backup and archive tools included so that when you open a project, it prompts to create a backup for you, so even if something goes wrong, no harm is done.
Given, it is still up to the user to ensure their game is bug free, but this program can do 95% or more of the work for you.
This sounds fantastic Zer0. I'd be more than willing to test it in all three engines for you.
1. 10 dozens kB. xD
3. Yeah, 30%-40% makes more sense. Internally PNG is using some compression algorithm so it's most probably just recompressing that.
Yeah, most scripts don't handle stuff, they only put together a list.
The program just uses command-line tool for the PNG compression, I merely redirect the STDOUT of it to the program and start the process without a window. Here's the tool it uses: OptiPng (http://optipng.sourceforge.net/). I am sure many have heard of it. As far as I know there aren't any good front-ends for it (I found some GUI's for it, but they suck), so I may make a GUI for it when I am done with this. It would only take a couple hours, if that.
@GG:
Thanks, I'll upload a copy either later today, or tomorrow. I still need to build many of the controls for the UI, but all the functionality is more or less done.
Sorry to necropost, but did this app ever get finished? I know this topic hasn't been posted in for a year but this sounds like it would be an extremely cool and useful tool.
Quote from: Eclipse on August 18, 2013, 01:00:45 pm
Sorry to necropost, but did this app ever get finished? I know this topic hasn't been posted in for a year but this sounds like it would be an extremely cool and useful tool.
F0 has not been active on this forum for a while Eclipse.
Yeah I know :| I was just curious if a version of this app (beta or otherwise) had been circulated in any fashion.
Did I never release this? Hmmm....
* Goes to look for it... *
-looks back at post-
Yep, I still see a lack of link, and I would like to use this if you have it available...
I did find it actually, but it's still kind of in development stage. All the actual functionality is ups and working, but the interface needs updated and improved, as well as some streamlining and organizing the code a little better. It appears I was going to include a bunch of conversion tools, some of which are fully implemented for all formats.
I could probably finish it with a few hours work, so maybe I will get to it on one of these winter nights when there's nothing to do.
lol. You can blame me too DS. I tested this thing out as extensively as I could but I can't remember if I ever reported it to Zer0.
:glomps both of you:
well, to be honest, the part I would like the most is the "•Automatically finds and can copy every used RTP resource to the project locally for distribution." that you mentioned in the descriptor.. I'm simply too lazy to do so myself, and, the other features looked cool enough to use too, so I thought I would bug you about it.
As of right now, I have ALL the files from the RTP in the game distribution folder, but I don't need all of it there. I just did that trick to not have to distribute the RTP along with the game, but unfortunately that means higher file/folder size..