Update 33 - The End of the Beginning

Way back in the summer of 2014 I began writing my first visual novel engine. Not VNgen, mind you, and not even Edge VN. This was a third, unreleased engine—and for good reason: it was a horrible, broken mess. You see, not only was this my first visual novel engine, but the first program I had ever written from scratch.

I've come a long way in four years, leading my work to be praised by developers even with many more years of experience than I have. But while my coding practices may have changed, the goal of creating an engine with an emphasis on high presentation quality coupled with flexibility and ease of use has remained a constant.

VNgen's journey is both a story of three engines and one continuous effort to achieve a single goal. And although it's hard to believe, that journey is finally coming to an end.

That's right: strap on your seatbelts, because our next stop is VNgen 1.0.

Normally I end these devblogs by talking about the latest update to VNgen, but this time things are a bit different. Yes, VNgen update 0.9.9 is available now, and yes, it brings a slew of improvements to the table—one of the largest updates ever, in fact. But more importantly, as the version number implies, this also means Early Access is coming to an end.

This is an incredibly important milestone for me as a developer, since it is the culmination of everything I've worked towards in the past four years. But it's also important for VNgen users, since this will mark the transition to GameMaker Studio 2 for good.

VNgen entered development in late 2016 before GMS2 was available, and since it wasn't clear at the time how quickly developers would migrate to the new IDE, I decided to continue development in GMS1 until I had a complete version of VNgen to give legacy users. Simply put, version 1.0 will be the last feature release for GMS1, with only bug fixes to follow. Development will continue post-1.0 in GMS2, but at a much slower pace as I prioritize developing my own visual novels with it. I have many plans for the future of VNgen, so don't think this is the end of the road—just the end of the tunnel.

Also, the shifting of priorities away from VNgen feature development means a new direction for my devblogs. I've been writing on this site since 2012—longer than some of today's major tech publications have been around, if you can believe that—and I don't intend to give it up any time soon. But rather than exclusively share updates here, greater emphasis will be placed on the XGASOFT side of things. A major revamp is planned for, which will serve as a consumer-facing devblog of its own. These updates will then be reflected on ThinkBoxly, perhaps with some extra commentary from time to time.

A mockup of what's news feed will soon look like
In the meantime, the work goes on! It's a tricky thing, finishing a program. There's always more that could be done, and in truth, I left behind VNgen's original design document ages ago. To me, VNgen 1.0 is defined by how satisfied I am with the available feature set and how it all works. It's been a hectic couple of weeks as I've tried to cram in and patch up anything missing that I feel would detract from that satisfaction.

For a full list of not just today's updates, but every update made throughout VNgen's Early Access period, check out the full changelog on, XGASOFT's developer portal. It's quite a list!

And with that, it's time to bid adieu to Early Access. VNgen 1.0 is scheduled for release on May 18, and will include native GameMaker Studio 2 support and a special surprise I'm very excited to share in the coming weeks.

But don't wait until then! This is your last chance to get VNgen on either or the GameMaker Marketplace with that 33% Early Access discount, so act now!

Once more, I leave you with your weekly Yugure no Kagami status report. Expect big things to develop in this space from here on out!

Yugure no Kagami Status Report

What is Yugure no Kagami? Click here to learn more!table span { background-color: #06F; color: #FFF; padding: 5px 10px; display: inline-block; }