Showing posts from 2018


Scratch is an online visual programming language designed to teach newcomers how to code. If you know me very well, you'll know I've often been critical of visual programming languages, citing them as being more cumbersome to learn and use than plain code. While Scratch isn't a total exception, it struck me as one of the better options out there, and so I set out to create something in it myself to find out.

The result is Scratcheroids!—a simple, yet sophisticated interpretation of the classic Asteroids game that uses many programming techniques I regularly employ in actual programming languages. While the limitations of Scratch are clear, I was pleasantly surprised to realize just how far I could take it, and Scratcheroids! barely... er, scratches the surface. Normally, Scratch projects are limited to a play space of just 480x320. I circumvented this by creating a barebones camera system which not only simulates a larger area, but supports parallax depth, variable positio…


XGASOFT is a middleware and game development studio I independently founded in 2017. Its name stands for International Game Arts, represented both by its diverse creative influences and its collaborators from all around the world. XGASOFT's mission is "telling stories with code"—using interactive technologies not just to entertain, but to impact and inspire.

Its first product, VNgen, is designed to facilitate just that, putting the power of interactive storytelling in the hands of developers of all skill levels. VNgen is designed to be a great experience for both developers and end users, placing an emphasis on smooth animation and production value previously only achievable on a large budget.

As a game developer, XGASOFT utilizes VNgen and other first-party technologies to create interactive stories of its own such as Yugure no Kagami: The Mirror of Dusk, a Japan-inspired urban fantasy adventure following the exploits of metaphysical Guardians of the Sun and Moon and t…

Edge Engine

Edge Engine is a suite of software created from 2014-2016 for GameMaker Studio. It began from a utility I wrote for myself, originally titled Simple Display Scaler before being rebranded as Edge Display Scaler some time later. Although it was one of the earliest programs I ever wrote, the utility value of a drag-and-drop scaling solution that worked across all platforms appealed to developers of many skill levels and instantly put my work on the radar. Inspired by this success, I went on to write other tools in the same spirit, culminating in Edge VN, one of the first fully-featured visual novel engines for GameMaker.

Before GameMaker Studio's EOL in favor of GameMaker Studio 2, Edge Engine was used by hundreds of developers and included in projects spanning a variety of platforms, including PC, Android, iOS, and PlayStation 4.

While it is no longer supported, Edge Engine remains available to download for legacy users on both the GameMaker Marketplace and

Download on GameM…

Final Fantasy XV Radio Tuner

Based on Vidsquish, Radio Tuner is a frontend for a collection of audio libraries that makes it possible to import, export, and replace music from the hit JRPG Final Fantasy XV—specifically, music designed to play while driving the game's featured vehicle, the Regalia.

As one of the first mods available for Final Fantasy XV, Radio Tuner was immediately popular among fans and was featured in a number of online media publications, including Kotaku,, Rock, Paper, Shotgun, GameWatcher, and many more.

Download on NexusMods

Download on ModDB


Vidsquish is a graphical frontend for a collection of video processing libraries designed to offer compression, customization, and enhancement of videogame cutscenes—including some ultra-rare ones supported by few other tools. Featuring a powerful profile system, new games can be added to the roster of supported titles without modifying the underlying code, and new profiles can be created by the community as well.

For those trying to save disk space, Vidsquish cuts down on the filesize of one of most games' largest components, sometimes by several gigabytes. For those wanting the smoothest experience, Vidsquish offers interpolation to convert low-FPS cutscenes to 60 FPS or higher. Running a non-standard monitor? Vidsquish supports virtually any aspect ratio with options to crop or letterbox content to best fit your screen.

The user interface is fully skinnable, supporting both landscape and portrait layouts. Not only does this allow customizing the frontend to suit your tastes, bu…


PalmDB is a download catalog for Palm OS applications opened in 2018 to preserve the legacy of this highly influential piece of pre-smartphone tech history.

From the early '90s to late '00s, Palm pioneered many technologies we enjoy in modern smartphones today. Unfortunately, with the popularity of iOS and Android, Palm failed to gain a foothold in the smartphone market and was shut down in a series of acquisitions. In the years following, Palm OS's massive library of applications was nearly lost. With no first-party store and almost all third-parties dropping support, for a time it was virtually impossible to find any trace of what was once a thriving digital economy.

This began to change thanks to Reddit. A small community of Palm enthusiasts slowly found each other on /r/Palm, some of whom had archives of their old software ready to share. These were first collected on, where my own archive was featured among a handful of others. But I wanted to take thi…

Chaos Rings Preservation Project

In the early '10s, Square Enix teamed up with veteran JRPG developer Media Vision to create a series of role-playing games exclusively for iOS, and later Android smartphones. For the time, it was an incredibly ambitious project with advanced graphics, console-style gameplay, a deep storyline, and a highly memorable soundtrack. Unfortunately, the games were a bit too far ahead of their time, and updates to Android and iOS broke compatibility with them just a few short years after release. Rather than fix the games, Square Enix simply pulled them from sale, leaving arguably the best original mobile game series to be lost to time.

The Chaos Rings Preservation Project resurrects the earlier games in the series by using offline, prepackaged emulators running compatible versions of Android on Windows PC. The latest game, Chaos Rings 3, currently retains compatibility with the latest versions of Android and iOS and is not included in the project, although it is possible to run it in the…

LucasArts Classic Game Patchers

While it no longer exists today, in the '90s and '00s LucasArts stood at the forefront of advancing game technologies, and produced many titles spanning a wide variety of genres which are considered classics to this day.

While many of these games are now available for download through GOG, in the past it was difficult if not impossible to get them running on modern PCs due to outdated 16-bit installers and ancient video modes not supported on today's graphics cards. To solve these and other problems, I collected community fixes and added some of my own to compile patches for the original disc-based versions of the games. My goal was to preserve the original experience as much as possible, right down to retaining the classic LucasArts launcher used by many games of the day.

These patches will not replace your original CD—they are not cracks. Instead, an ISO image will be created and patched with all necessary fixes and updates to get the game running on a modern PC. This i…

"The Sunflower Society" (Ghost in the Shell)

A reference to the 2001 anime Ghost in the Shell: Stand Alone Complex, "The Sunflower Society" is a YouTube channel dedicated to the preservation of the final hours of the short-lived online multiplayer game Ghost in the Shell: First Assault, based on the anime of the same name.

Introduced in late 2014, First Assault spent most of its days in alpha and beta testing, only enjoying a full release six months before its worldwide closure in December 2017. Despite mixed reviews, the game was enjoyed by a small but dedicated community, of which I was a part from the first closed alpha test.

Aside from its significance as part of the Ghost in the Shell franchise, First Assault served as a notable reminder of the impermanence of games as a service. With no LAN functionality ever implemented, the closure of official servers rendered the game completely inaccessible even for users to revisit familiar maps locally.

In order to preserve the gameplay experience and the hard work of its …

About ThinkBoxly

ThinkBoxly was the original tech blog I started all the way back in 2012—before many of today's major web publications even existed! Initially, it was intended to be a tech news and reviews portal, but with time, it evolved into something more personal. From 2017-18, it served as a devblog for VNgen, the first product developed under the XGASOFT brand. Today, it lives on in these archives as a record of over 200 posts and 50 videos created in its lifetime, collectively generating hundreds of thousands of views.

Fun fact: the name "ThinkBoxly" came from a suggestion in a domain name availability test. The original name was going to be "TechBox", but that domain was already taken. A few randomly-generated permutations later and "ThinkBoxly" was born! It might not make much sense, but it lent itself to a catchy logo, and the name stuck.

Update 36 - Starting From Zero

When you've spent long enough on the journey, sometimes it's easy to forget the destination. When Yugure no Kagami was first conceived four years ago, I had no idea it would be this long before I got there. But as this devblog stands to witness, it's been a long process of laying the foundation for the purpose of saving time in the future. By building VNgen once and building it right, I've positioned myself (and other developers!) to quickly and easily create content without compromising on functionality or presentation.

Well, I've been teasing it long enough. As of today, I'm proud to present to the world Yugure no Kagami ZERO, the first chapter of this epic saga, set to release independently later this year. Check out the fancy teaser site here, and read the official press release here! In a new tab or two, preferably—because that's not all we have to talk about today!

Zero is a very special project for me, as it was conceived specifically as a way to intro…

Update 35: Building (With) Tools

A wild devblog appears!

For the past couples of months, I've taken a bit of a break from the regular devblog-style posts to cover some related topics instead. Each one was important to me, but there's another reason for the hiatus as well: behind the scenes, things were shifting gears in a big way. It's taken time, but the foundation is laid and I'm now settling into the process of building with tools, not just building tools.

It's been enlightening to place myself in the shoes of a consumer using VNgen in real-world scenarios, and especially pleasant to discover just how well it holds up to daily (ab)use. Once, I forgot a certain feature even existed until I needed it, then *bam*, there it was. It would have been a huge pain to implement now if it'd been missing, so suffice it to say I was relieved to discover there was no oversight on my part there.

But that's not to say VNgen is perfect, nor is it yet capable of everything it could or should be. Soon it'…

Say Hello to XGASOFT 2.0!

It's hard to believe almost a year has passed since XGASOFT's main site first went live, and along with it, the unveiling of Yugure no Kagami to the world. Since then, however, my development efforts have been laser-focused on completing VNgen, the engine designed to make it possible. It might've looked like nothing was happening, but the planets are aligning and it's time for that to change.

And change it has: has been completely revamped from backend to frontend, and is about to see a lot more activity very soon. As described in a previous devblog post, future development updates will be featured by XGASOFT, leaving ThinkBoxly for more personal content instead. What's more, you can now subscribe to receive XGASOFT updates by email and receive 10% your next purchase of any XGASOFT product (like VNgen)!

And speaking of VNgen, keep your eyes peeled for a new update hitting the Marketplace and this weekend! Feedback and development have both contin…

Finding Success in Failing Health - A VNgen Post Mortem

VNgen is a visual novel and animation engine for GameMaker Studio. Using a custom scripting syntax, it is designed to produce premium content quickly and easily on a wide variety of platforms. It is currently being used to create both first-party and third-party indie games of multiple genres. If you value my work, please consider supporting me on Patreon. Your support will play a critical role in the ongoing development of these and future projects. Stay tuned to the end of this post for details!

I'll be honest: VNgen had a rough launch. Days turned into weeks, things came up, and I had my head down trying to get through it all without breaking something in haste.

But it did launch, and you can now download VNgen 1.0.2 for both GameMaker Studio 1 and 2 RIGHT NOW! GMS 2 users can even try VNgen for FREE with the trial version, so what are you waiting for?

Reception so far has been extremely positive, and I appreciate everyone's patience as 1.0 and post-launch fixes rolled out a b…

On Steam, Valve, and Indie Developers

For the past year-and-a-half, ThinkBoxly has been exclusively a devblog of my progress on developing original commercial content like VNgen. If you've followed me during that time, you've probably gotten used to the absence of editorial and feature-style posts (if you were ever aware they existed around here at all). But this is my blog, dang it, and I get to write what I want*. And as you can probably guess from the title, today's topic is hardly unrelated.

Valve, it's time we developers had a little talk about Steam.

(*Also, VNgen is out now and I don't have anything newsworthy related to post about its development at the moment—because it's done! If you're a developer, you should totally check it out.)

Unless you've been living under a USB pet rock, you're probably aware of the sharp decline of Steam over the past couple of years. Once the darling of every PC gamer and every maker of PC games, at the hesitant hands of Valve the storefront has accrue…

Update 34 - I Hate Delays

I hate delays.

I hate my delays. If something else is delayed, I can wait. There's plenty to do in the meantime. But when I'm the one that has to make the call, it's a different issue.

If you know me very well, you'll know I'm terrible at giving ETAs, which is why I hesitated to give one for VNgen until the very last. And to be fair, based on what I anticipated VNgen 1.0 to be at the time, it was a reasonable estimate. But the more I thought about it, the more I became convinced VNgen was missing something critical to the 1.0 experience, and so I'm going to have to ask everyone to wait just a bit longer.

The good news? The wait will now be even more worth it.

Today, May 18th, was originally supposed to be VNgen 1.0's release date. That's no longer going to happen. Instead, I'm pushing it back to June 1st (yes, still 2018).

This I feel is a generous amount of time that will give me longer than necessary to make sure 1.0 is everything it needs to be. Not n…

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 …

Update 32 - Shader Business Revisited

I've spoken before about the importance of standardization in VNgen. It's so important, in fact, that multiple times I've discarded working solutions purely because they didn't conform well enough to established guidelines. A while back, one of these solutions involved using a shader to dim characters while they're not speaking—a method that was quickly replaced by blending in a transparent black rectangle instead. And yet, at the time, I said the effort to incorporate shaders into VNgen wasn't wasted, but that it served as a proof of concept for shaders possibly finding their way back into VNgen in the future.

Well, my friends, the future is now. That's right: as of version 0.9.8, shaders are now implemented into VNgen as first-class citizens alongside transitions, animations, deformations—the whole lot.

Shade-what?If you're familiar with shaders, I don't need to tell you what a big deal this is. If you're not, this might sound either completely …

Update 31 - Log and Let Log

VNgen's backlog was one of the first things written for the engine well over a year-and-a-half ago. While it might seem like putting the cart before the horse, the backlog was actually a convenient testing ground for some of the new concepts necessary to make VNgen a reality. But then that reality materialized, and the backlog was left the oldest feature, requiring more than one overhaul to keep it up to date.

Nowadays, standardization is the name of the game. VNgen's codebase has been cut in half despite more features being added since the first Early Access release. For the past two weeks, it was the backlog's turn yet again—and this time, other problems were also solved in the process.

Two BirdsWhile you might not have noticed, text labels have been broken in VNgen for a long time. This was hidden by a dirty hack that forced labels to refresh every single frame, but even so, under certain specific, but very reproducible conditions the works were sprung. Linebreaks were du…

Update 30 - All Things in Modification

It's hard to believe a third of a year has already passed since VNgen first released in Early Access. With the advent of GameMaker Studio 2 requiring some extra strategizing for the release of version 1.0, the EA period has definitely gone on longer than originally intended, but not unproductively. VNgen has grown by leaps and bounds both internally and externally such that its code is barely recognizable as the same product that shipped in late 2017.

As the march towards 1.0 continues (and indeed is nearly drawing to a close), each component of the underlying engine is being re-evaluated. Why does X feature exist, or why doesn't it? How does it work, and how can it be standardized to work like everything else (or vice versa)? Does it feel natural to use?

All of these are important questions, and only scratch the surface of tests a new change must pass to determine whether it fits the image and scope of VNgen 1.0. But there's also another question that's often more fun: