Miss the Kickstarter? You can now preorder Vacant Sky Awakening from itch.io! You can also preorder the Paradox Prince Bundle, which includes all three episodes as well as their corresponding soundtrack.
It’s been a while since we’ve had any news. Sorry for the lack of updates, but everything we’ve been working on has been kind of coming to a head at the same time, so expect us to make up for it in the coming weeks. We have one big VSA-related surprise coming up and after we finally unveil it, we should have a lot more to say about behind the scenes stuff going forward.
Today, I’m going to provide some more concrete news about the next release from Project BC. This project in particular is very exciting as it marks our first major non-game product and our first foray into expanding the Vacant Sky universe into more media.
Vacant Sky Awakening: Overture of Innocence is a collection of three short stories written by Kim Dyer which provide insight into various characters, both peripheral and primary, in the Age of Antiquity. Two take place in the distant past and one runs parallel to the events of Episode 1.
- First Light of Summer is a vignette from Sarian’s childhood and tells of the aftermath of her struggle with the illness that nearly claimed her life.
- Waltz Through Ashes chronicles the journey of a young Kortas Maladorr and Vaius Monarim, fathers of Dakura and Sarian respectively. When Kortas is sent by his father to investigate a missing emissary, he brings along his grief-stricken friend Vaius to aid him.
- An Innocent Madness follows one of the most notorious bounty hunters in the city of Acacia on a job that will drag her deep into the teeming underworld of Orkan politics. Her latest hunt will test her moral fiber as she navigates the powderkeg of intrigue which threatens to ignite the whole city.
These stories will be available for free to Kickstarter backers who pledged for them. A short while later, they will be available for sale as an ebook. The collection is currently expected to retail at $4.99.
There, And Back Again: The Long, Arduous and Mostly Uninteresting Tale of the Ill-fated Metis Engine
It’s been a while, huh?
There’s been a lot of nothing from us lately, which some of you have correctly noticed as being pretty weird, as I’m normally all about showing progress as it comes out. There are quite a few reasons for that, and I can’t touch on the big ones just yet, but in the interim, I’d like to dam the silence with an update on one of the main reasons that Awakening is taking so long.
Early days: The wild west
In the beginning, we didn’t really know what we were going to use to develop the game. What we did know was what platforms we wanted to support: at the very least, PC, Android, Ouya, Windows Phone, Windows RT, and Playstation Vita. I played around with every development tool under the sun: XNA, Unity, Flixel, and even Haxe for a brief stint (I got halfway through porting Encarmine before the buggy Haxe workflow finally made me throw up my arms in defeat).
Unity was the fastest to develop with, thanks to my past experience with it, but it lacked support for three of our key platforms: Windows Phone, Windows RT, and Vita. So that got dropped. It was around that time that I heard about Monogame, which had just announced support for Vita by way of its Playstation Mobile branch. Since Monogame and XNA are mostly compatible, getting the game onto Windows Phone wouldn’t be difficult, either.
I must have started on coding the game in at least a dozen different tools and languages before settling on building a new engine based on Monogame. This must sound odd coming from me, as when I mentor others in programming and gamedev, I always advocate starting on making your game ASAP, and once you get started, never question the basic design choices you settled on, otherwise you’re liable to keep stopping and restarting forever.
Vacant Sky Awakening is kind of a weird game, though, and the problem space it occupies has continually defied all my nuggets of conventional wisdom.
The biggest problem I’ve been contending with throughout development of the game, aside from its broad spectrum of platforms, is future-proofing. The game is going to be released in 8, or maybe 9, episodes over the course of the next couple of years. Whatever design choices I make now have to stand two years from now as still a good move at the time: still easy to develop for and still marketable as a product.
I learned from Contention about the dangers of starting a long-term project on a crappy foundation. The legacy code I still deal with has made the task of updating Act III a nightmare of frustration and wasted time. I don’t want to run into that problem ever again.
As a result, making the correct choice of development tools now is extremely important, so much so that I’ve been willing to prototype the game on a dozen or more different tools and throw it all away each time to try a different approach.
Post-Kickstarter: VSA Alpha and Metis Engine
After the success of the Vacant Sky Awakening Kickstarter, we got to work on building Metis2D, the Monogame/XNA-powered game engine that would carry the game to its many platforms. Because we coded the engine ourselves, we had full control over it and would be able to adapt to new platforms and requirements as they came into being.
The high level vision was to eventually create something that brought the flexibility and ease of use of Unity into the 2D space, which we could then sell after the game was finished and use it to finance further games.
It was a colossal undertaking.
We ended up releasing our first Metis-powered game, the Ouya port of The Vestibule, in time to be one of the Ouya’s launch titles. It went… well, I wouldn’t say smoothly, but it went acceptably. There were bugs and crashes and race conditions and altogether it was kind of a nightmare, but it was still better than dealing with VS1CE, and that’s something.
With those issues ironed out, we continued hammering away at Awakening EP1, and developed several alpha builds, including the most recent one, Alpha 5, which has the entire game (sans battles) playable from start to finish. The game was playtested by several people, we got helpful feedback, and most importantly, it was adored by everyone who played it! All that was left was to polish up some graphics and add in the battles and the game was ready to release, right?
Yes, actually. We didn’t run into any serious problems, we had a basic version of the battle system working, and everything about the game seemed like it was coming together. This is the part where you’re expecting I’m going to say “that’s when we discovered some horrific bug that changed everything” but the truth is, Vacant Sky Awakening Episode 1 was pretty much done and ready to go into beta.
Beta 1′s Shocking Twist…!
There wasn’t a problem with the game or the engine.
Actually, there wasn’t a problem at all.
But a couple of developments happened in quick succession that had a significant impact on our future plans for the game. I can’t talk about all of them just yet (sorry!), but there were four in particular that caused us to seriously reevaluate what we were doing: 1) We got the thumbs up to release VSA on the PSN as opposed to the much more limited PSM; 2) Microsoft pulled the plug on supporting XNA going forward 3) Unity added support for Vita, Windows RT, and Windows Phone; and 4) Unity announced version 4.3 with native 2D support.
We agonized about what to do for a long while. We had a nearly-complete game with no significant issues, but the rate of Unity’s evolution was making it clear that an eventual switch was going to be inevitable. Unity’s workflow is much cleaner, easier, and faster than Metis’s, especially where UI and shaders are concerned. It can add platforms much faster than we can, with the added assurance that they’ll be fully debugged and well-documented. We would be able to spend our development effort entirely on the game as opposed to developing the game and maintaining the engine.
We could’ve released EP1 as is, but at what point would we make the switch? We needed savegames to be portable between all episodes. What if we ran into a last-minute showstopper bug in some platform for Monogame (as we did on Android, which required a huge rewrite of the rendering code) that knocked us on our feet?
On top of that, there were already fractures starting to open up in our plans because you can’t use Monogame on Vita outside of PSM, which meant we would need to recode the Vita version from scratch and we were now looking at maintaining two engines at that point.
I know it’s bound to be an unpopular move, but for all the above reasons, we decided that the best move would be immediately shifting gears to developing Vacant Sky Awakening with Unity.
That’s not to say that everything has to be thrown away and recoded from scratch. In fact, one of the main reasons we chose to go with Monogame was because it used C# (like Unity) and that we’d be able to reuse most of our code if we ever needed to switch over. On account of good planning, we had anticipated exactly this scenario and took measures to ensure it would be as easy as possible to make the move. One aspect of this was writing the story content in a Lua dialect, which is easily portable to just about everything with no code changes needed.
We’re currently working on the Unity version of the game, as well as polishing up the art assets and producing some new ones. There’s another big surprise yet for the game that I can’t talk about just yet, too. I’m sure the question you’re all asking is when you’ll be able to play the game, and the answer is… probably soon! Surprisingly enough, the move hasn’t delayed the game very much at all. Unity is just so much faster to develop with that rebuilding the game is only taking slightly more time than implementing the rest of the missing features in Metis would have been.
The highly visual nature of Unity gives us greater control over how the game will look and lets us rapidly iterate off ideas and track down bugs, which is an enormous godsend when it comes to the battle system (more on that soon…).
So what will become of Metis? It will still exist, albeit in a stripped down form. Most likely, it’s going to evolve into an RPG/VN-centric Unity plugin that we may or may not sell depending on how well it works out for us.
The end result to you all is a slightly longer wait, but in a much more polished game and smaller wait times between individual episodes in the future.
Sorry again for all the delays, but I hope I’ve outlined the rationale behind the changes well enough that you understand why we’ve made the choices that we did.
Post-script: Another announcement
It’s not exactly true that we’re developing the game entirely in Unity. Because of the prohibitive console licensing for Unity, we’re actually not going to be using it for the Vita version of the game. The Vita version of Vacant Sky Awakening is being developed with Sony’s PhyreEngine (which is why it’s most likely going to be released at some point after the Unity-based version). Unfortunately, due to the proprietary nature of PhyreEngine, I can’t talk about it much, so please understand that I won’t be able to discuss the technical details behind the Vita version going forward. I do plan to do a tech post in the future about our workflow involving designing for two engines in tandem, though, so look forward to that!
Time for another behind the scenes look at the technical aspect of Vacant Sky Awakening. This one is a little more high-level and touches on game design, so the non-technically-savvy readers don’t have to worry about their eyes glazing over.
Lately, I’ve been putting the finishing touches on the skill editor. One of the challenges of making a skill editor before all the content is set in stone is that it can be hard to predict exactly what tools to lend the user.
Let me give an example. In more typical RPGs, a skill could have the following attributes:
There tends to be a linear progression in skill power in these games, in which the skills you learn are just more powerful versions of ones you’ve learned previously, dealing higher damage and costing more MP. Though certainly easier to design and program, that’s also kind of boring.
In Vacant Sky Awakening, a much greater emphasis is placed on support skills, most of which produce unique effects that can’t simply be qualified as status effects (such as granting an extra turn). On top of that, skills can have lots of conditions, such as burning an amount of TP, or requiring you to have at least a certain amount of HP.
Although I could certainly put a checkbox for every single possible quality a skill could have, I decided to disassemble skills into constituent pieces called components. Skill components are the building blocks of skills – any skill can be expressed as a set of components.
Examples of components include:
* Inflict damage
* Can’t miss
* Apply status effect
* Costs TP
* Requires TP
* One use per battle
When I want to create a new attribute for a skill, all I need to do is create a new component for it. To ease this workflow, I’ve created a C# attribute I can stick on a class declaration that causes the editor to read it and create a button for it. Similarly, each field in that class is marked with an attribute that specifies its name and what kind of input widget to create for it.
This approach is very flexible and resilient to change, an absolute must when working on an episodic title where new mechanics can be added in the future that I have no way of predicting right now. It’s also very generalizable; I could apply the same concept to items (in fact, I probably will) just as well.
Thanks for reading this through to the end. I hope it was interesting!
One of the downsides to being a programmer is that I don’t often have anything visual to show off like my comrades of the artistic persuasion. There’s not really anything groundbreaking happening behind the scenes with the programming, either, so writing about the programming process isn’t particularly interesting. But this is one of those rare occasions when I do have something to show.
One of the major challenges of moving away from RPG Maker is that I no longer had a visual editor to define things like party members, items, and enemies. Until now, I’ve been hardcoding them directly in the game, but I’m finally reaching the point where it’s just too much of a hassle to do as a result of the increasing complexity of the codebase.
To that end, I’ve begun building Worldweaver.
It’s still pretty bare-bones and an early work in progress, but it’s an application I’m building to aid in the entity creation process. So far, I’ve finished the first three tabs (save for some minor bugs).
Worldweaver was built using Windows Forms and links directly into Metis and VSA, from where it’s able to draw entity definitions (say, the list of skill effects) and update the editor dynamically to reflect changes in the code.
I’ve spent about three days working on it so far and it has already paid for itself in terms of time spent versus time saved. There’s still a lot of work to be done, but so far it’s shaping up to be pretty helpful.
It’s been a while since you’ve seen anything concrete from us lately, but I hope to change that in the coming weeks and I’ll make up for it today with some insight into what’s going on behind the scenes.
First milestone incoming!
I’ll start off with some exciting news! Our first major milestone, Alpha 1, is slated for June 9th. Alpha 1 is going to be an internal release since many of the features still aren’t in place. Here’s a look at what we hope to have done for Alpha 1:
- All main character portraits done
- All main plot enemy battlers done
- All environment art done
- Two dungeons playable (sans battles)
To put it in perspective, EP1 contains a total of four dungeons (and a fifth optional one), so most of the dungeon gameplay should be done for Alpha 1. Once all the dungeons are in place, the town areas will be added.
Five dungeons might not sound like a lot on paper, but it’s actually more than any other Vacant Sky game has had in the past. On top of that, our philosophy with Awakening is quality over quantity; the dungeons have a lot of optional content, plenty of choices, and hooks for replayability in the form of quests that are linked to other areas.
What’s taking so long?
There have been quite a number of hang ups I’ve talked about in the past that have caused us to miss the originally estimated release date, not the least of which being the sheer size of the cast (every character, major or minor, needs a portrait). This time, I’m going to talk about a more subtle and interesting timesink, as it’s something that has occupied the majority of my time lately.
Writing the content for Awakening is time-consuming. For the most part, every space on every map needs an event to be written for it and every one of those events is unique. There’s no copying and pasting. You get something new each time you step on a space.
But it’s not even the sheer volume of content that’s time consuming, it’s also that we’re not shying away from true nonlinearity.
Most areas of the game have optional spaces, and almost every area in the game can be revisited (if not immediately then eventually). This means that it’s possible to rush straight through every area in the game and save all of the optional content for the end. This means that every optional space needs to be written with the fact held firmly in mind that it could be visited at any point in the game.
Not only could a player save all the optional EP1 content for the end of EP1, the player might return to it in EP2! Or EP5! Keeping this in mind and making sure that the chronological context for every event makes sense from any point in the game is a daunting task.
On top of that, characters enter and leave the party throughout the game. And since Awakening has no superfluous characters (stop laughing, Kate, I know what you’re thinking), every one of those characters has something insightful to say or do that could totally change the way events play out.
You might be led to assume, then, that the optimal way to play if you want to experience all of the content is to save it all for the end such that you have everyone in your party for it. As it turns out, that’s not necessarily true: having someone new in your party doesn’t necessarily add to the event you would have otherwise experienced; it could change it completely. So Awakening has a lot of replayability based on how and when you tackle the optional content.
That’s all I’ve got for this week’s update. We’re working hard to make Awakening as awesome as we can and hope to have something great to share with you all soon.
Thanks for sticking with us.