Kate posted a brilliant behind-the-scenes look at the design and creation of the new Auria. Check it out on her blog.
Sorry for the long wait, but this year’s preparations took a lot longer than we expected. Today, we celebrate five years since the release of Vacant Sky Act I. It’s hard to believe that so much time has passed since then. Since Act I, Project BC has:
- Released several more games, including Act II, Act III, Act I+, Act II+, The Vestibule, Finding Eden, and Encarmine
- Funded the development of Vacant Sky Awakening Act I through Kickstarter
- Expanded to nearly every platform under the sun with the Awakening project
- Incorporated as a proper business
- Quadrupled (!) in staff size
Today, we celebrate not only five years of Vacant Sky, but five years of Project BC. Before we dive into today’s Contention announcements, let’s take a look at what to expect from us going forward.
New products in 2014
2014 will be the first year that we offer products other than just games. We’ll also be offering middleware for other game developers, both technical and graphical. The Metis RPG framework that underpins Vacant Sky Awakening is currently the largest middleware product we’re working on, but it will probably not be ready for market until well after VSA Act I is out. In the very near future, you should expect some art assets, both 2D and 3D, to hit the Unity Asset Store.
Status of the Complete Edition
The Day of Contention is a time of endings and beginnings. Five years ago today, we saw the cessation of Auria’s old life and the beginning of a new one. The Vacant Sky Complete Edition is an extension of her journey, in higher quality and better continuity with the rest of the series. Currently, two of the three episodes have been released.
For those looking forward to the end of the Complete Edition, I have good news and other news.
The good news is that Act III CE will be released before this time next year, and the Complete Edition will finally be finished for good.
The other news is that the form it’s going to be released in might not be what you expect. Due to technical issues with the project, we’ll be overhauling the format of Act III CE. In order to give closure to the story and to make good on our word to finish the Complete Edition, the updated story will still be intact as well as all of the choices and endings, but the battles and exploration are being removed from the final episode. It was a difficult decision to make, but due to the enormous amount of technical debt the project has accumulated over the years, it is the only way we’ll be able to finish it this year.
Hopefully, our final announcement of the day will make up for any disappointment this may cause.
Death & Rebirth
For the past few years, I’ve always been personally involved in directing two projects at a time: a main project (VS1, and now VSA) and a secondary project in preproduction. With the conclusion of the Complete Edition, I’ll be bumping up a new project into preproduction. Although I typically don’t like to announce a project so early into development, it would have to be either today or next year’s Day of Contention, and I figured the five year anniversary of Contention would be the perfect opportunity.
Since the inception of Vacant Sky, we’ve come a long way, both technically and artistically. Although originally, the plan was for Awakening to be a stepping stone into the rest of the series, it seems I was (as always) naive in thinking it would be a project that would be over quickly. Awakening is eight (or is it nine?) acts to Contention’s three, each much more in-depth than the entire Contention project combined. Vacant Sky Awakening is a series unto itself, and it would be a shame for it to put the original series on pause for years when it was originally conceived of as a way to bring in more fans to it. And, as many questions as Awakening raises, it also brings answers. Many answers. Answers a lot sooner than I intended to give them.
Having had time to reflect on this, I’ve revised my vision of Awakening’s role in the future of Project BC. Instead of delaying the original series until its completion, I intend to alternate between volumes of Awakening and of the original Vacant Sky. This way, answers in Awakening will properly coincide with the questions posed by the story of the present era.
Following the conclusion of the Complete Edition, we will be relaunching the present era series in full 3D.
I’m excited to show the new design of Auria Edith, which will be debuting in Death & Rebirth, the first installment of Vacant Sky Quickening.
Thanks so much to everyone who has stood with us over the years and helped us become the company we are today. I hope you’re as excited about the future as we are. Look forward to another awesome year with us.
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!