The Walking Dead and Visual Novels

Some people like to slap the term "visual novel" on just about any game with a semblance of a story. The latest target for their misguided labeling is Telltale’s video game adaptation of The Walking Dead. Unlike Phoenix Wright where I can see why someone would call it a VN, The Walking Dead isn’t even close. It’s a completely standard Western-style graphical adventure game all the way through.

Continue reading

OELVN Recommendation Chart v1

Look, I made a thing.

The interactive version contains links to the homepage and VNDB entry for each VN. Clicking on the screenshot displays the full size version.

I’ve seen quite a few ‘regular’ visual novel recommendation charts over the years, but never one specifically featuring English-language visual novels. I guess there probably aren’t too many people who’ve read a significant enough number of OELVN to make such a chart. Of course I haven’t read everything either and that’s a disadvantage of making a chart based on the opinions of a single person — what I haven’t read isn’t on there.

I’ll be updating the chart periodically to make small improvements/fixes and, when necessary, to swap out some of the VNs. I’m interested in hearing suggestions for other visual novels I should read or consider putting on the next version. Please don’t recommend (dating) sims or RPGs with visual novel parts unless the VN parts outweigh the gameplay parts.

The black art of resource compression

Apparently resource compression is hard for some people. I’ve always seen it as a fun game — try to pack everything into as little space as possible without significant quality loss.

The resource optimizer included with NVList automatically applies most of the advice from this article. Work with PNG files and super-high bitrate audio all you want, the resource optimizer will automatically pop up during packaging.


Before attempting any type of optimization, first assess the current situation. I like to use windirstat for this. It generates a graphical representation of a folder and everything it contains. Downloads can be found here (no Mac/Linux support, but the download page links to alternatives).

This overview gives you a good idea of the relative size of images vs audio — in this case: red=images, blue=audio. Strangely large files (like a misplaced 20MB PSD) will also stand out clearly.


PNG uses lossless compression — you don’t need lossless compression. Near-lossless is good enough and saves a considerable amount of space. JPEG will only take 25-50% the space of the PNG version even at a very high quality setting. For backgrounds and other images without transparency, prefer JPEG over PNG.

Transparency in images is problematic; JPEG just doesn’t support it. There are however similar formats that do support transparency. NVList supports JNG which stores color as JPEG and transparency using JPEG/PNG. You should never have to create/edit a JNG file, just set the resource optimizer to the ‘size’ preset and it will generate them for you. Ren’Py supports a similar format, JCC which stores color in one JPEG file and the transparency information in a separate JPEG file. Either of these image formats should save around 50% in file size.


Sometimes I’m glad NVList only supports Ogg-Vorbis audio, it makes it harder to screw up. There’s no reason to use any other audio format; MP3/AAC can’t be used due to software patents, Opus lacks software support. FLAC is a good choice for archiving, not so much for a downloadable game. Don’t use uncompressed audio under any circumstance — way too often have I seen 5+ MB sound effects.

As for quality, anything above 160kb/s (VBR) gets quickly diminishing returns.


The choice in packaging format can shave a few megabytes of the final result. The images, audio, video are already highly compressed — you won’t save more than a percent or two for those — but most of the code for the engine isn’t. 7-zip or an installer using the same algorithm (LZMA) can save 5-20MB compared to the .zip version. Installers created with NVList use LZMA and pack200 (a special type of compression for Java code).

Editing photos for use in visual novels

Using filtered photos for backgrounds is a common technique used in amateur/freeware visual novels to keep the required art assets down. In this post I’ll try to explain some of the techniques that can be used for photo editing. I’m using Photoshop filters and terminology, but the methods should be applicable to any image editing program.

Step 1: Get the picture

The first thing you need is a good base photo for editing. Sometimes you’re able to take the photo yourself, but most of the time that’s impossible or unpractical. If you need photos of exotic locales or ancient architecture, vacation pictures can be a good source. In most cases, public domain or other royalty free photos will be your primary source. Here are some sites to help you on your way:

Since we’re going to apply some heavy filters later on, it’s okay to upscale a low-resolution picture. Sloppy/bad photo editing is masked by the filters in the same way, so don’t be afraid to paste objects from one photo into another even if your photo editing skills aren’t exactly up to professional standards.

Continue reading

JDOgg v0.3.2

I was having some problems with the Vorbis SPI (JavaSound plugin) from javazoom — it cuts off silence at the end of vorbis audio. It also closes its input stream when reaching the end of the audio, requiring a nasty hack to support looping playback.

At the same time, I was also looking for a way to play video’s from an unsigned applet. Luckily, adapting Cortado solves both my problems. It includes 100% Java implementations of Ogg/Vorbis/Theora decoders. I ripped out the decoders and added my own code for time-accurate seeking and stream synchronization.

Writing a new Vorbis SPI was quite easy once I had a fully functioning Theora player.

Google code project page