[review] Heartful Chance!

Heartful Chance!
Heartful Chance! screenshot
genre high school romance
creator Studio Sprinkles
summary Hyperactive girl becomes famous for writing love letters, gets asked to write one by her crush

Yo dawg, I heard you like compressed archives so I put a self-extracting installer inside your .zip download so you can extract while you unzip. But seriously, why is the download a .zip containing the real installer?

Story

Eimi is a hyperactive girl who gets pressured by her friend Charlotte into writing a love letter to Charlotte’s crush in Charlotte’s name. While attempting to secretly put the love letter in the guy’s locker, Eimi meets Kouhei whom she falls in love with at first sight. The delivered love letter works marvelously and Eimi becomes known within the school as the love letter princess. The plot thickens when Kouhei asks Eimi to write a love letter for him.

So far, so shoujo. From this point on the plot gradually splits into two routes. Will Eimi be able to conquer Kouhei’s heart, or will her affections shift to ‘bad boy’ Henri. Class-skipping, ear ring wearing, tree sitting — Henri is clearly a delinquent. Where did the delinquents-like-sitting-in-trees thing come from anyway?

The grammar in Heartful Chance! is pretty bad. Still readable, but you’re subjected to a near constant barrage of awkwardly-worded sentences. At least it crosses over into funny bad sometimes.

The plot is predictable, lighthearted and completely silly. Characters act comically over the top, especially Eimi. She occasionally goes into full-power stalker fan girl mode, going so far as to set Kouhei’s picture as her desktop background (the evening after they first meet). Kouhei and Henri by contrast, act completely normal…

Presentation

As soon as you start up the VN for the first time, the opening movie starts playing. It’s a traditional opening that introduces the characters and teases some of the plot. What I found very peculiar is the way some animated objects seem to jitter from one frame to the next, similar to the way stop-motion video shakes. I’m not sure if it’s just a really bad encode, or if it’s actually animated that way. Also, what’s up with the split-screen shot of Eimi looking appalled and Kouhei smiling. That looks so very, very wrong.

Characters change expressions, but not poses or outfits. The facial expressions are ridiculously over the top which matches the writing. Eimi and Charlotte have incredibly thick bottom eyelashes that give the appearance of them having bags under their eyes. It just makes them look haggard.

There’s a high number of backgrounds for such a short VN. This comes at the price of quality — the line art is simplistic and very angular, coloring makes excessive use of gradients and texture paint. Heartful Chance isn’t stingy with the number of event CG either, with multiple images for each love interest. In addition, there are a handful comedic cut-in images using chibified characters.

The user interface can best be described ‘kawaii as fuck’. Everything’s pink with polka dots and strawberry motifs. Even the text is pink. Sometimes the text flows outside the text box on the sides (should really have been spotted prior to release).

Conclusion

Heartful Chance is cliched and kind of stupid, but it’s also completely silly and rarely takes itself seriously. If you can suffer through the awkward grammar (or even better; find enjoyment in it) and turn your brain off for an hour, it’s actually pretty enjoyable.

[review] Homeward

Homeward
Homeward screenshot
genre slice of life
creator samu-kun
summary High school kid moves back to Japan, meets estranged sister and childhood friend

Story

Riku Saionji moved all over the world with his dad after his parents divorced, leaving behind his mother and Sora, his younger sister. When mom becomes hospitalized, they return to Japan and Sora moves in with them. This kicks off a traditional slice of life high school romance story with three love interests: Nonami, Haruka and Sora.

Nonami is a goofy, always energetic Kendo club member. She’s also Riku’s childhood friend from when he lived in Japan ten years ago. She has loved Riku all this time, blah, blah, etc. you know the drill. Haruko is miss perfect, class representative and a cooking club member. The jealous tsundere slot is filled by Sora.

The story is divided into two acts, part one acting as the common route and act two branching out into a different direction for each character. The common route covers cherry blossom viewing, a trip to Seattle during golden week, a sports festival, beach trip and the school’s cultural festival. Stereotypical school life stuff, really. All three girls are present for each of these, even the trip to Seattle. The tone stays very lighthearted and there’s a lot of slapstick comedy. Too bad most of the ‘humor’ consists of people falling on top of each other, accidental gropings, etc. The first time you get to do anything date-like is the dance at the end of the cultural festival. Shortly afterwards the common route ends.

The writing is pleasant to read, although it can get a little too flowery at times. There are a few typos here and there, but nothing major. One point of annoyance is the gratuitous use of Japanese without explanation or translation. Normal people wouldn’t know what iinchou/keion/NEET mean, even manga/anime fans will likely have to look up a few words. There’s also a tendency to use the Japanese versions of huh/hey/uhm, and such remarks.

The second act begins with a dramatic twist (Riku has to move back to America) that’s the base conflict for each of the character routes. This causes the routes to feel too similar to each other, especially Nonami and Haruka’s routes. No matter the route, it involves a lot of Riku wallowing in self-pity and being pathetic.

The Nonami and Haruka routes are very similar. After hearing he has to go back to the States, Riku becomes a worthless sack of shit. In Nonami’s route, Riku has trouble telling her he’s leaving and lies to her face they’ll always be together. He then cheats on her with Haruka.. In Haruka’s route she doesn’t have time to meet Riku for several days. He then cheats on her with Nonami. When they confess what happened, Haruka collapses from exhaustion. Turns out, she was frantically trying to get into the same American university as Riku so they could be together. Haruka then apologizes to Riku for what happened. RAAAARRGGGHHH. Riku is a gigantic douche to the point where I wanted bad things to happen to him.

The Sora route is the most interesting. Riku and Sora elope and camp out in the mountains for a night before attempting suicide by jumping off a mountain (society won’t allow for their relationship, boo hoo). They decide not do go through with it at the very last moment. Riku, master of good timing, thinks now is a good time to tell Sora she’s adopted, lolwut. Maybe you should have told that earlier you damn moron!

Presentation

The opening video is very traditional, consisting mainly of camera pans over existing art accompanied by some dramatic text. I have no real complaints about its artistic merits. However, the video has interlacing artifacts and every second or so skips several frames.

Filtered photos are used for the backgrounds. Both quality and quantity of the photos is good, and the filtering looks nice. Background transitions are all wipe to black or dissolves which can get a bit boring. The sprites are a tad on the simplistic side, but the characters have a good number of poses and expressions. On the event CGs the character art is of significantly lower quality (comparable to Katawa Shoujo) with the backgrounds consisting mainly of the same filtered photos as the rest of the VN. There are quite a few event graphics (especially for something free), so some drop in quality can be overlooked.

There are snow/rain effects that almost look good. The raindrops are oddly short and bright white and the snow movement is strangely jittery (the image positions appear to be rounded to the nearest whole pixel). Scenes with background animations (snow/rain/camera pan) have an unfortunate tendency to stutter when a new sprite is shown.

Music and sound effects are a weak point. Sound effects are mostly absent, often we’re told about a sound in the text but we don’t get to hear it for ourselves. The soundtrack consists of stock music, a number of which I’ve heard before. The music selection relies heavily on melancholic piano pieces, especially in the first half hour. These often feel too heavy for the accompanying scene, weakening their impact when they are needed. "Sad Farewell" (played during very emotional scenes), sounds distractingly much like the fairy fountain theme from Zelda.

The interface looks very nice, I have only minor complaints. The mouse over effects can be a bit too subtle, especially in the CG gallery and I also missed some type of click-to-continue indicator to show that the text has fully faded in.

Conclusion

Homeward doesn’t try to break any new grounds with its storytelling. It ticks all the checkboxes — romance, comedy, dramatic ending — but it gets most of the details wrong. The comedy doesn’t quite work, and the drama is fueled by an out-of-nowhere event made considerably worse by the protagonist acting like a complete fool. If you can get into the humor and/or live with the largely groan-worthy second act, Homeward is an attractive looking title with a good amount of content (6~8 hours).

NVList v2.3

Just realized I never made a post for the 2.2 release of NVList. The changelog may look a bit intimidating, but most of the changes are pretty small fixes. The biggest improvement is a large increase in performance on singlecore processors. NVList by default tries to load images in the background, but on slow singlecore processors the image loading doesn’t get enough processor time to finish withing a reasonable time frame. Because of this, image loading is now synchronous for systems with only one logical processor.

There were also some compatibility problems when using a VIA/S3 UniChrome GPU (as reported by a Nanolife user). UniChrome is a low-end DirectX7/OpenGL1.2 integrated graphics chip from 2004. The problem was not performance (seemed to hover around 30-40 fps on my test system), but rather a bug in the graphics driver. It crashed when calling glReadPixels with GL_UNSIGNED_INT_8_8_8_8_REV. There’s now an explicit workaround in the code when your renderer contains the words "via" and "chrome" :V

Changelog:
2012/05/01 — 2.3 (r23)

enhancements:
- Implemented a basic auto-updater menu item (experimental, see game.ini)
  JVM running NVList must be closed before library files can be overwritten.
- Added a menu for setting the window size to a XX pct of the preferred size
- Camera.add() now returns an ICameraImage which can be used to change the
  image’s depth after adding it to the Camera.

bugfixes:
- Generated installer splash screen was corrupted for images with alpha
- Launch4j PPC binaries (windres/ld) replaced with PPC/x64 universal binaries
  This should fix builds on Mac OS X Lion
- getPlayTime() function was broken.



2012/04/16 — 2.2 (r21)

enchancements:
- Script errors printed on-screen now try to include a filename+line.
- Clicking to instantly display the entire paragraph now works properly for
  text with [bracketed] Lua code in it.
- When using the img/imgf functions with a sprite slot, the y parameter can
  now be used to change the baseline y. 
- The OSD (toggle with F7), now displays much more information.
- Added a quickload(slot) function
- text/appendText functions now support StyledText objects as their text args.
- waitForTextVisible function now takes an optional TextDrawable to wait for.
- The createStyledText function can now be called with a StyledText arg.
- Added a createLayer(name) function that calls imageState.createLayer()
- Image cache size can now be specified in pages. A page is the amount of
  memory required to store a full screen RGBA8 texture.
- Debug window got a line in the VRAM graph indicating the image cache limit.
- Added a vn.system module with lua wrappers for SystemLib functions.
- Added a website() function that opens a webpage in an external browser.
- Tuned the scale factor at which the main FBO starts mipmapping.
- The Lua tab in the debug window now contains a print stack trace button.
- Parse errors related to img.xml are now displayed on screen.
- Added BlurGS class that provides a scalable blur.
- Preferences starting with vn. can now be accessed through the prefs Lua table
- Implemented depth-of-field/perspective for the Camera object.
- Reduces mach banding of wipe tween (WipeGS).
- Changing the text layer constructor now triggers text layer recreation.
- quicksave/quickload now display a success message on screen.
- Added support for reading precomputed mipmaps from KTX files.
- Added prefs for readTextStyle, textLogStyle, choiceStyle, selectedChoiceStyle
- Added registerJavaClass() function for importing Java code from Lua.
- No longer requires separate executables for 32/64 bit Java.
- Building a release now creates a .exe version of the generated installer.
- Improved perceived startup time by showing an empty window early during init.
- Significantly improved image load times on slow singlecore processors.
- Reduced processor usage for sound playback, especially on slow singlecores.
- Game update stops when the window is minimized. 
- Video capture function (F8) now forces continuous repainting to reduce video
  stuttering.
- Added mouse wheel down as a text continue key.
- Changed Build.jar to automatically do a rebuild when necessary.
- Changed main.lua to act as a template for a standard VN titlescreen.

bugfixes:
- Rewrote the way OpenGL resources are managed internally. This should fix a
  memory leak occurring when the texture cache becomes full.
- Fixed mapping of linear volume dB gain. Previous implementation could raise
  output levels over their natural maximum.
- Text style property editor used by Build.jar now applies any pending edits
  when closing the popup dialog.
- Editing a preference in Build.jar now also updates save/prefs.ini
- Silently crashed if gluegen-rt was not in the library path.
- Keyconfig only read the first key specified for each line.
- Increased default minimum heap size to improve performance in situations
  with high garbage generation (like particle effects).
- When running on hardware incapable of NPOT textures that also doesn’t support
  large textures, the just-in-time resize could cause a data alignment error. 
- ARGB screenshots were shifted up by 1 pixel in some instances.
- Improved support for escaped \$, \[ in text lines for syntax highlighters.
- Events enqueued with edt.addEvent() now wait while the main thread is blocked
- Saving could change the result of == for Lua userdata objects.
- Using alt+enter to return to windows mode from full screen advanced the text.
- Up key accidentally opened the text log even during a choice.
- Show text log menu item was broken.
- On some graphics cards, the menu bar popups were overlapped by the screen.
- Crash on UniChrome GPU for glReadPixels(type=GL_UNSIGNED_INT_8_8_8_8_REV)
- Drawing blended quads used wrong UV coords when NPOT textures unsupported.
- screen2image aspect ratio was wrong when FBOs turned off and the physical
  window didn't match the aspect ratio of the VN's virtual resolution.
- Setting the FBO preference to true, now really always forces the FBO on.
- Updated JOGL to 2012-02-28 build to fix compatibility with Mac OS X 10.5

NVList project page

[review] Shira Oka: Second Chances (demo)

Shira Oka: Second Chances (demo)
Shira Oka: Second Chances (demo) screenshot
genre high school dating sim
creator Okashi Studios
summary Loser guy gets a second chance at high school life

Disclaimer: I’ve never understood the appeal of dating sims — most of them are grind-fests with a second rate harem story sprinkled in between.

Shira Oka is a Japanese-style American developed commercial high school dating sim. After having been in development for years, it was finally released in late 2010. What sets it apart from the competition is the large amount of ‘polish’. It has animated sprite transitions, lots of backgrounds, some voice acting and even an animated opening video. It’s also a giant turd.

Story

You play as Generic McLoser (name changeable), who blames his boring job and alcoholism on being dull in high school. Then you wake up and you’re back in high school. Not the high school you went to, since you don’t recognize anyone..? You’ve been brought back by Satsuko, the plot exposition Angel. She gives no reason why causality should be victim to your happiness, just roll with it. You get the usual character customization screens and Satsuko tells you to take a nap.

You wake up several days later and decide to go for a walk. You stumble across a classmate: genki girl Aya. She barely knows you, but nevertheless immediately forces you to take a magazine personality test in the middle of the road for no reason. Excellent writing. She apparently stole your phone when you dropped it at school — three weeks ago — but now she’s giving it back to you. No-one cares…

Over the course of the next few weeks you gradually get all your "grind stat X" activity buttons. On random days there are automatic events that introduce each of the 8 billion love interests. These events are very short and generic — the girls pretty much just mechanically mention their club/hobby. Meeting everyone takes two months all the while you’re blindly grinding random stats in the hope it’ll be of some use later.

Then, you get run over by a truck and die.

Your guardian angel warps you back to day 1, saving your life but clearing your gained stats… that you’ve just spent the last hour painstakingly grinding for. Are you fucking kidding me? Fuck you game, fuck you.

Presentation

The opening video is one of the most fascinatingly horrible things I’ve ever seen. The opening shot is a penguin in a bikini. The animation is rough, whatever. The song sucks, whatever. The opening shot is a penguin in a bikini, logic clearly plays no role here. The penguin obsession of the OP is completely lost on me, there seems to be no relation to the game at all.

The sprites and backgrounds both look ok. Not particularly good, but not shamefully bad either. The sprites blink and they have a mouth flap animation while talking. The eyes are sometimes misaligned, and some mouth images have a pixel of black color bleed at one edge. The mouth flaps are also way too fast (unless they’re all channeling Scatman John). When sprites change poses there’s a short animation which is pretty cool. It unfortunately does go pretty far off model a lot of the time (as do some sprite poses).

The music sounds like cheap MIDI stuff. Like you’d expect, really. But what you’d probably not expect is the voice acting. Most characters have at least a line spoken out loud. The voice acting quality is unremarkable, though there isn’t really enough of it to say much.

The interface uses some nice animations and particle effects, but the main textbox is pretty ugly. The stats at the top of the screen consist of a number and a bar. The number is the integral part of the stat value and the bar represents the fractional part. Why is the fractional part so much more prominent even though it’s far less important than the integral part.

System

The gameplay is shit. You’re blindly grinding stats without any goal or motivation. It doesn’t get much better than grinding ‘literature’ to ‘get’ literature girl or something. There doesn’t appear to be any specific deadline or event to work towards. Oh, and enter randomly stops working as a way to continue the text sometimes.

The great majority of your "game time" is spent pressing the same activity button(s) over and over again and watching the same simplistic animation. You have to watch the same animation for every single day of the week, every week with no way to skip it. It’s a good thing you can’t actually die of boredom, but I strongly recommend removing sharp objects from the room before playing.

Conclusion

Your time is better spent staring at decomposing roadkill.

VNDS Converter Update 2012-04

Umineko

Changelog:
2012/04/29 — v1.4.3
- Switched from nsaout -> nsadec to work with UmiTweak
- Added (limited) support for UmiTweak patch

Fate/Stay Night

Changelog:
2012/04/29 — v1.2.3
- Fixed Heaven’s Feel unlock flag not getting set

Sharnoth

Changelog:
2012/03/30 — v1.0.1
- Support for destination folders with spaces in their path

Inganock

Changelog:
2012/03/30 — v1.0.2
- Support for destination folders with spaces in their path

[review] Analogue: A Hate Story (demo)

Analogue: A Hate Story (demo)
Analogue: A Hate Story (demo) screenshot
genre sci-fi
creator Christine Love
summary Future Man finds multi-generational spacecraft, inhabitants transformed into historic Koreans

Holy fuck it’s on Steam. Does that mean they accept visual novels now, or is Analogue just that good? When it first came out, I tried out the demo for a few minutes but it didn’t really grip me. Perhaps it’s worth a second look…

Story

You are someone from the future. You aren’t told anything about yourself or the state of the universe (which is rather inconvenient when you’re asked about the state of earth later). You’re ordered by someone (let’s just say the setting isn’t well-explained) to investigate a drifting multi-generational space ship. Entering the ship, you’re greeted by a command-line interface — one of the VN’s points of token interactivity where you slap some widgets or diddle some doodads. It’s not a minigame, you just type in some incantations. This activates the ship’s AI: *Hyun-ae. She’s not particularly concerned with the state of the ship or that some unknown person is trying to access its data.

The majority of Analogue is spent reading diary entries from the ship’s former inhabitants (of course they all keep a diary). Every once in a while *Hyun-ae needs to be poked to get a new batch. Most of the entries aren’t particularly interesting and the fragmented storytelling gets old fast.

Once in a while, *Hyun-ae will offer her opinion (strange for an AI) on the log entries. She acts like a spoiled child and throws a fit when you don’t answer her questions the way she likes (is that normal for an AI made in 24XX?).

The story told through the log entries gives insight in the society aboard the ship — In the time span of 300 years, their twenty-fifth century society has changed into a replica of historic Korea.

what? how‽

The remaining part of the demo focuses on the treatment of women in this replica of a historical Korean society (and *Hyun-ae complaining about it). Apparently that’s what’s most important here…

I feel tricked.

Aesthetics

The sprite (singular, there’s only one in the demo) looks pretty good. She has multiple poses and expressions at least. There are no backgrounds to speak of. The total amount of art seems more appropriate for a NaNoRenO release than a commercial title.

The background music is all right, though a bit repetitive. Especially one track early in the VN that sounds about five seconds long.

The user interface looks nice and functions decently. The transition fade when switching pages is annoyingly slow and the user interface is unresponsive while it lasts. The diary entries are paginated instead of scrollable requiring an uncomfortable amount of mouse movement.

Conclusion

Analogue isn’t a bad VN, but its quality lies primarily in its game design. The flashes of interactivity and the fragmented storytelling are precisely timed to distract you from the relative tedium of the main plot. Some interesting questions arise, but they are never explored.

Inganock Converter v1.0.1

Converts an installed copy of “Sekien no Inganock” to a version playable with VNDS. The converter should also work on the unpatched Japanese version. I don’t know what would happen if you tried to convert the recent Full voice ReBORN edition.
Changelog:
* 2012/03/21 — v1.0.1
- Unarchived encoded images weren’t being properly converted.

* 2012/03/10 — v1.0.0
- Initial release

Umineko Converter v1.4.2

Someone asked me if I could add support for the Russian translation patch. Previous versions of the converter didn’t work due to character encoding issues. The Russian translation patch encodes printable text in cp1251, but leaves rest of the script in SJIS. I had to implement some trickery to be able to switch character encodings mid-file, but it should now mostly work. There may still be some parts where the characters are messed up due to a misdetected character encoding.
Changelog:
* 2012/03/14 — v1.4.2
- Support for the Russian translation patch