Thursday, September 19, 2013

Nostrum and clouds.


Hey! I made "Nostrum," a short flight sim game for the Oculus Rift VR Jam thing, and I placed 2nd. I won a bunch of money and a t-shirt, so I'm pretty happy with that.

For the first week of the three week jam, I was actually prototyping a lion simulator game. Then I watched Porco Rosso and thought, "wow, that'd be a fantastic game." So I stashed away all that previous work and started something new.

I realized the whole "1930s Mediterranean Ocean seaplane" culture would make a fantastic theme / setting for a VR game, because so much of Porco Rosso is about looking and seeing -- and this era of flight (open-top cockpits) offers plane designs that are very good for looking around with very little obstruction. This was also an era without HUD elements and GPS: to figure out where you were, you had to memorize landmarks in the terrain... and to track your enemies you had to look around and see where they went. It's all about seeing.

"Clouds" are central to Porco Rosso. In one scene, Porco uses cloud cover to hide from his pursuer -- he has a certain mastery and understanding of clouds, which makes him a better wiser pilot. However, flying in clouds is also dangerous: you cannot see where you're going. In one flashback, Porco tells a story about how he flew into a cloud and all he saw was "white." At this point, Porco says relatively little: he "talks" more in the images, of all the surreal things he sees in the cloud. Clouds offer another world that defy explanation and defy imagery. His attitude about the whole ordeal is ambiguous: was he traumatized by his experience in the cloud, or has he survived the cloud and now mastered that pain, or is it something in-between? This cloudiness mirrors the question central to film, which is the question of Porco's identity: is he a human, or a pig, or a human cursed to be a pig, or a pig at heart, or a human who chose to be a pig, or what? Even the ending is somewhat ambiguous -- but the ending is ambiguous on purpose, and tells you so. This is "crystal-clear" cloudiness that argues ambiguity is a valid choice and way of life.


So, clouds were one of the first things I prototyped. Not just because of their thematic relevance, but also because of the opportunities for adding tactical terrain and visual interest to the airspace -- otherwise, flying around is boring, because there's nowhere to go, up in the air. Clouds help you quantify the airspace and give it a certain mass.

For clouds, I experimented with a lot of particle-based approaches, looking specifically at the Muse Games' technical blog post about their cloud system in Guns of Icarus. I ended up not mirroring their approach at all, but their research was helpful with the insight that large transparent particles result in lots of overdraw, so it is better for the center of the cloud mass to be opaque without translucent feathery edges, to reduce overdraw. From there, I played a lot with simple shaders and inverted spheres, to try to get a translucent "lit from within" effect that clouds have, but with pretty standard geometry and rendering techniques. What was most important here was to communicate "volume" -- the space that the cloud takes up, and the space that the player can fly into. I don't think my cloud implementation is perfect, but I think it is good enough for now and communicates what it needs to.

Right now with clouds, I'm interested in making a "cloud system" -- not a weather system necessarily, but more like a way for players to interact more meaningfully with clouds. Currently, the player mostly just hides in clouds to evade pursuers... I think I want to let the player "seed" clouds as well, kind like a crop-duster plane, by scooping up water from the ocean and spraying it high in the air. (That's not how real cloud-seeding works, I don't think, but oh well -- video game logic can take over here.) I'm thinking that will produce a nice "up and down" pacing to flying, where sometimes you will want to be up in the air and sometimes you'll want to be closer to the water. Also, the pacifist themes of Porco Rosso resonated a lot with my personal ban on making first person gun games, so everything came together pretty quickly for me like this.

If you want to see more of Nostrum, I'll probably be showing it around at Indiecade next month in Los Angeles. And hopefully, I'll have this released in some form by the end of the year...