0 reviews
  • Add Review
  • Subscribe
  • Nominate
  • Submit Media
  • RSS

Announcement

Soundtracks released!

It occurred to me that I never announced the release of the first soundtrack here. Whoops.

The A-Side soundtrack contains music from episodes 1 and 2 and can be found here on Bandcamp: http://vacantsky.bandcamp.com/album/vacant-sky-awakening-ost-a-side

The B-Side soundtrack has just been released! It contains music from episodes 3, 4, and 5 and can be found here: http://vacantsky.bandcamp.com/album/vacant-sky-awakening-ost-b-side Kickstarter backers who pledged for the complete soundtrack will be receiving a copy soon.

Announcement

Theme song released!

For those of you who don't follow us on Kickstarter, the theme song to Vacant Sky: Awakening, "The Devil You Know," is performed by the band Cap the Climax. They've just released the album, titled "These Formative Years." You can check it out here on Bandcamp: http://captheclimax.bandcamp.com/album/these-formative-years

Take a listen to their other music while you're there and consider helping them out by purchasing their album!

Game Design

Use of the Maybe Monad in Metis

One of the most obnoxious errors one runs into when programming in C# is the dreaded NullReferenceException, which arises from attempting to use an object when you really have a null reference. The problem is that most methods which return objects will silently return null if the operation fails or produces unexpected output, and a NRE won’t be thrown until a property or method is called on that reference. In this way, null references can quietly leak throughout your program and propagate, filling it with time bombs ready to go off.

The other problem is that a lot of C# programmers (myself included, until recently) intentionally return null references to signify a failed operation. Though there’s nothing wrong with this, it’s very easy to forget to check if the result you received was null, and this is how null references can unintentionally pervade a system. Now you don’t know what’s supposed to be null and what’s not.

The solution we’re using in Metis is the Maybe monad. A Maybe<T> is an object which might contain an object of type T, or it might not. Thus, when a method returns a Maybe<T>, what that’s saying is that the returned value might not actually have a value, forcing you to check whether or not it does. Although it’s functionally the same as either returning a reference or null, it presents a few advantages.

Firstly, because Maybe<T> is in the return type, type safety prevents you from passing it to a method expecting a T without first checking the value.

Secondly, it has a psychological benefit: by establishing a protocol where methods which might not return a value will always return a Maybe<T>, this ensures that any method which is guaranteed to return a value will not return a Maybe<T>. In essence, what this means is that any method whose return type is not Maybe<T> can be safely used without null checking.

Because of this, any null reference which is spotted floating through the system is guaranteed to be an error, since nulls are never intentionally returned.

Sound handy? It is! You can pick up an implementation of Maybe<T> as well as a rundown on how to use it here: http://mikehadlow.blogspot.com/2011/01/monads-in-c-5-maybe.html

Game Design

The Construction of Metis Part 3: The Joy of Modularization

The long delay between parts 2 and 3 of this series were due in part to the huge amount of work I’ve been putting into the engine itself lately and in part to my changing my mind about what the topic of part 3 would be. Originally, I was going to continue writing about the scripting system, but it seems to be too esoteric a topic for anyone to care about, so I’m going to discuss something more general.

Specifically, the architecture of Metis and why, even though it is built originally to facilitate the creation of RPGs and visual novels, its structure will make it applicable as a general purpose game engine instead of merely being used for RPGs and visual novels.

Case study: Unity3D

Unity was another game engine from which we drew inspiration in working on Metis. For those who are unfamiliar, Unity is set up with an asset store, from which you can purchase and download extra assets or pieces of functionality. These packages (or, at least, the well-designed ones) can be dragged and dropped into your game and can add huge new features easily.

This ability to easily swap pieces of functionality out and add new ones is part of what makes Unity such a good general-purpose engine.

Taking it a step further

In order to facilitate the building of extra features for Metis, we’re making sure to provide an interface for every feature you could possibly use, major or minor, such that you can swap out the default for an alternate implementation of your choosing. For example, the IDiceService has two built-in implementations: a fair dice roller and a dice roller which uses a normalized distribution. But you could also easily implement your own IDiceService which uses a Poisson distribution, or even an algorithm of your choosing.

This is also used within the individual modules themselves. For example, Metis.RPG (the core RPG module) provides an IMapService which facilitates the loading of map files. A default implementation for Tiled maps is provided, but you could create your own implementation to load from RPG Maker, or another 2D level editor of your choice.

The key idea here is that everything can be swapped out and customized, while still providing enough default behaviors that you don’t need to customize anything to make a game.

Example: Vacant Sky: Awakening

Aside from the Metis core module, there are two modules that are used in VSA: Metis.RPG and Metis.NVL. Metis.RPG is a fairly substantial module which provides generic RPG functionality such as menus, battles, maps, items, and so on (though VSA uses some custom implementations for things like maps). Metis.NVL is the module for visual novel functionality, such as dialog, menu choices, etc and is designed to be a competitor for Ren’py.

The goal is to make game development as à la carte as possible, so you don’t need to get locked into a huge set of features from a module if you only need a few. So far, it has worked out fairly well in the development of VSA, so I’m feeling good about this design choice.

Progress Report

Vacant Sky 179% Funded



Um, wow. Thanks so much to everyone who pledged and supported Vacant Sky. We're all in your debt, and we plan to repay it with one hell of a game this spring.

Announcement

Featured by the International Game Developers' Association!

http://www.kickstarter.com/pages/igda

With just a week left in the Kickstarter campaign, Vacant Sky: Awakening was chosen by the IGDA to appear on their curated Kickstarter page. Thanks to the IGDA for the shout-out!

In other news, there's just one week left in the Create & Win contest!
author=felicitousArtisan
Hey guys! You like getting free stuff, right!? Like music and games? Well, read on…

So to celebrate that Vacant Sky: Awakening is now over 100% funded on Kickstarter (thank you so much to everybody who pledged and signal boosted!) we are running a competition!

The prizes:

Third place
-A digital copy of “Sounds of Contention,” the Vacant Sky soundtrack

Second place
-A pre-release digital copy of the new Vacant Sky: Awakening Episode 1 soundtrack (Here’s a sampler)
-A digital copy of “Sounds of Contention,” the Vacant Sky soundtrack

First place
-A digital copy of Vacant Sky: Awakening Episode 1 (once released)
-Chance to design a character to appear as an NPC in Vacant Sky: Awakening

-A pre-release digital copy of the new Vacant Sky: Awakening Episode 1 soundtrack
-A digital copy of “Sounds of Contention,” the Vacant Sky soundtrack

How to enter:

Send in something Vacant Sky related, art, fiction, music remix, omake comic, fangame, cosplay or prop photo… Pretty much anything! to create@projectbc.net (link or attachment). It can be from Awakening, Contention, or even Ars Harmonia (free web novel).

REFERENCE MATERIAL: There’s a bunch of official character art and illustrations from Contention and Awakening here and here.

DEADLINE: 11:59 PM Eastern time on February 6th, 2013.

Good luck!

Miscellaneous

Featured on PocketGamer!

VSA and its Kickstarter got a pretty sweet article on PocketGamer: http://www.pocketgamer.co.uk/r/iPad/Vacant+Sky%3A+Awakening/news.asp?c=47955

It seems like a new roleplaying game launches on Kickstarter every few weeks or so, but the recently funded Vacant Sky: Awakening is one to be excited about.

Created by a team of avid gamers and RPG enthusiasts, the episodic Vacant Sky: Awakening follows the story of a saucy young nobleman who quickly becomes the most hated man in history.

Vacant Sky's narrative spans a period of seven years, however, so players will watch characters mature and change as they come to terms with the new responsibilities and perspectives that adulthood has given them.

Not so vacant after all

While many modern RPGs turn to random encounters and experience point grinding to pad out their run times, Vacant Sky: Awakening spares you the tedium.

Instead, like Persona 3, it relies on social relationships and friendships to increase your character's abilities and growth. In other words, who your character ultimately becomes is determined by the decisions and friends that he makes and not the number of Goblin Pathfinders that he kills.

With that in mind, there is plenty of combat, party management, and side quests to be had, but they won't distract from the all-important story.

Although the first episode of Vacant Sky: Awakening has been successfully funded, there are still 14 days left in its campaign for those looking to secure backer rewards like exclusive DLC quests or a digital copy of the soundtrack.

Announcement

First stretch goal reached! Onward and upward!

http://www.kickstarter.com/projects/projectbc/vacant-sky-awakening-a-pre-apocalyptic-rpg

With more than two weeks to go, the VSA Kickstarter has just cleared $9,000, so we'll now be adding Mac, iPhone, and iPad support, as well as giving a free post-episode 1 DLC away to Kickstarter backers of $10 or more.

We're now on our way to our second stretch goal of $10,000, which will add support for Linux, Windows Phone, and Windows RT, as well as add some limited animation to cutscenes.

Announcement

21 days to go and Vacant Sky: Awakening is fully funded!

http://www.kickstarter.com/projects/projectbc/vacant-sky-awakening-a-pre-apocalyptic-rpg
At the time of writing, we're sitting at around $8,300 - 104% of our goal - and still have three weeks left to go. Our first stretch goal is set at $9,000 and will expand platform support to Mac and iOS, as well as add a free DLC starring Sarian to Kickstarter backers. This DLC, Tidebreaker, will be set between episodes 1 & 2 and cover some of the time gap between them.

Thanks to all of you who pledged and helped get the word out!

Announcement

Vacant Sky: Awakening Kickstarter Now Live!

http://www.kickstarter.com/projects/projectbc/vacant-sky-awakening-a-pre-apocalyptic-rpg



Thanks for all your support up to this point. Please help us get the word out!