Monday, July 23, 2012

Up To Speed

 It's certainly been a while since I posted updates on this promising some less cryptic information.  Having not fulfilled any of that, it's about time for a massive development update talking about where I am with Geoshie and what my current vision for the project is.  Below the break I'll jump through just about everything I've got on the project so far, beginning with a recap of past information in case you're new, going through development and gameplay and ending with just a tiny bit of narrative.  A lot of this is subject to change, but it represents my most up to date view of the project at this time.

 Recap

Geoshie is an augmented reality, single-player game for the Windows Phone in the style of metroidvania type games.  It features a strong emphasis on exploration and contextual storytelling.  Players will use a variety of tools to interact with various invisible creatures known as 'geoshie', and with their aid will explore an ancient civilization and uncover the story behind both it and the modern day creatures that inhabit it.  Because of the nature of narrative and gameplay, Geoshie is going to be custom built exclusively for the Rochester Institute of Technology.  You will need to be on-campus in order to play it.

Geoshie has been in development for just under a year now.  It started out as a top down interface for having random Pokemon style encounters while walking around campus.  At this point, it was going to be developed for Android based phones and use Adobe Air as its runtime environment.  The original plans for Geoshie featured strong multiplayer components and network based storage.  The engine itself was going to be released as open source, and charges were going to be levied for multiplayer server access.  However, in order to create a more streamlined experience and to further emphasize the gameplay and narrative goals I had in mind (and because networking is satan incarnate), Geoshie underwent a significant redesign right around the time that school ended.  In addition to this,  I came into possession of a Windows Phone running Mango, and moved the development over to C# in order to target this platform (the original development was being done without a smartphone).

Basic Design

Geoshie is a game that emphasizes exploration and discovery above all else.  Most, if not all of gameplay will have this in mind.  You'll be visiting various parts of RIT's campus and collecting bits of lore at different parts.  Some of these will be maps to other locations and treasures.  Some of these will be collectables that come with their own back-stories.  Some of these will be diary pages.  And, some of these will be new tools or items that allow you to revisit areas and get a closer look at what's going on there.

Alongside you will be the geoshie, invisible creatures that you'll interact with and befriend in order to, again, discover the secrets and bits of lore that are imprinted onto their minds and bodies.  Befriend a geoshie and it will aid you during your quest by augmenting your equipment and powers on command.  Some geoshie will extend how far your radar can see, or help you find buried treasure, or attract or scare away other geoshie.  Befriend enough geoshie, and little by little, these creatures will walk you through the history of a long extinct civilization.

If all goes as planned (those being the key words of course) Geoshie is going to be a somewhat lonely and introspective experience.  It's very strongly single player, by releasing lore very gradually and by allowing players to learn different things at different rates I hope to encourage people not to discuss their games with others, and as such it should be easy enough to invoke the kind of second guessing and introversion that games like Dear Esther or Metroid foist on the player.  I've always kind of enjoyed venturing up into the woods behind my house and walking around for hours coming across old abandoned barns, fences, and interesting rock structures, trying to map out the curves of the earth, following birds and deer, and just generally getting lost.  It's a relaxing experience that nonetheless fills you with a sense of the world being much bigger than you.  These are the types of feelings I'd like to invoke.

In my mind, augmented reality is best used to create these types of meta-game experiences, that draw you into thinking and puzzling over them even outside of the game itself.  I want everything to sort of blend together for the player, to the point where they can forget they're playing a game and just start interacting with the world on its own merits.

Interface and Gameplay

 Let's be more specific.

Geoshie is, at its surface, a collection of tools rather than a unified gaming environment.  The main screen is an inventory view that allows you access to, among other things, your Lorebook, Navigator, and Goggles.  It's here that you'll be able to navigate through your collectables that you've found, and interact with pretty much anything that you pick up while playing.  To truly begin playing though, you'll need to pick one of your tools for interacting with the environment. 

Geoshie uses location services and motion to figure out where you are in the world.  The Navigator and Goggles are the two tools that, at this point, I've spent most of my development and coding time on. 

In the Navigator view, you'll be able to track yourself, and things around you, using a top down map-style view of the world.  This is where you'll spend most of your time.  I mentioned above that being around geoshie will change how your devices function.  The Navigator is a good example of this.  Being around one type of geoshie may make your navigator fill with static, activating the powers of another will allow you to see different artifacts or repel a geoshie that's bothering you.  By using the powers of the different geoshie you've befriended, you'll be able to naturally augment and adopt your devices to your specific situation.

The goggles represent Geoshie's biggest gameplay gimic, and the one that is currently seeing the most development and thought, so it's subject to change.  At the moment, they operate in two different modes.  Both work similarly though.  By holding the screen up and using the camera stream, you'll be able to look around and observe otherwise invisible objects in the world, both the geoshie themselves and, by accessing their memories, virtual environments and messages from the past world.  It's tricky to explain, but not hard to show, so I'll upload some demo videos once I make some more progress.

You'll also use the Lorebook to keep track of your own personal journal, as well others' journals and maps.  This allows you to follow the story, find out more about the powers of each geoshie you encounter, and generally move through the game.

Engine

Geoshie is written in C#.  It combines Silverlight and the XNA Framework to create its interface and tools.  I've spent a large part of the summer getting caught up with Silverlight and learning the basics of 3D.  As of now, I have most of the interface work done, including contextual menus, which I've based off of the rather excellent Silverlight for Windows Phone Toolkit.  I've also been slowly figuring out how to get GPS working side by side with the Microsoft's Motion APIs for Windows Phone 7.1.  GPS accuracy ranges from about 3 to (in bad areas of reception) 10 meters, which has presented a ton of challenges when working with components such as the Goggles View.

Goggles was a concept that I reluctantly integrated into the game.  It's painful and complicated from both a design perspective and a programming perspective, but much more doable than I expect it to be.  There are a ton of tutorials out there on getting the motion APIs working in Windows Phone for augmented reality (too many to list here).  They've been extremely helpful.  Microsoft also has a rather impressive tutorial on getting 3d working in XNA, and I've been able to successfully couple that with silverlight and get 3d models superimposed on a camera stream.  My plan from here is to integrate what I've done with the Motion API/GPS and set the phone itself as the view matrix.  Which jumps back to my original difficulties with GPS polling rates and accuracy, but there are solutions to that which I'm exploring.

One of these is the concept of averaging multiple readings to get the most accurate positioning possible, and then using accelerometer and gyroscope readings to calculate more subtle movements.  That's going to take more research though and thought though.

Much easier to deal with is the tactical view.  There are a lot of cool things you can do with just pure GPS data and nothing else.  I created a very simple app that would allow you to play hot/cold with a location using a blinking light.  It was much more engaging than it had any right to be.  In particular, using a distance based interaction for items and triggers allows me to essentially ignore tracking problems as mentioned in the goggles view (now you see why I was so reluctant to include it initially).

Development

My summer has been extremely irregular, so that's led to some interesting development practices.  Typically what I'll do is work in the afternoons if I can get myself motivated enough, and try and focus on one area on a time, alternating between design, planning, and coding/research.  I've found that when I look at a project like this as a whole it quickly gets overwhelming and I can't force myself to sit down and code. 

I'm at the stage still where coding a new feature doesn't overly effect what I can or can't do as much as let me know what my limitations and options are, so I'll usually try and do some basic design for a feature to figure out what I need it to do, code it, and then work backwards and find out if it meets those requirements and what I need to change design wise if it doesn't. 

Usually this leads back into planning and more design as the game gets subtly restructured to deal with what the technology will allow me to do.  It's an organic process, but also a dangerously circular process; so I try to avoid making any changes to something that's already completed.  If I code a feature, I use it, and I don't design any other features that infringe upon it, change it, or build too much on top of it.

Because my family travels around a lot during the summer and I rarely have a computer near me to work with, or internet when I do have a computer, I tend to take a lot of notes.  Especially when I'm working with math or figuring out interfaces, it's a lot easier to sketch out what I'm thinking rather than try and remember it for later.  At some point I'll start uploading some of them if people are interested in seeing what they look like.

Narrative

There's quite a lot I can't (or rather won't) share about the current state of the narrative.  I hate spoilers, and for a game that is about exploration, they seem doubly bad.  However, I will say that Geoshie does have a definite end.  It will be as long as I can comfortably make it, which may end up being somewhat short to avoid over-scoping.  It will feature a small cast of around 4-5 main characters interacting within the confines of two un-trusting factions of leadership in a long dead civilization.  These stories will be told through mostly through diary entries.  They will be somewhat mature in content.

A lot of this revolves around secrets and the intrigue that surrounds them.  Don't get me wrong, Geoshie isn't going to be The Dark Knight Rises; I've always been a bit bothered with the melodramatic presentation of secrecy.  I'm not interested in building a game that jumps into the whole dead-if-you-tell, dead-if-you-don't debate.  Geoshie is about the process of finding secrets, sharing stories with those around you, and creating resolution for the problems of the past.  Life is complex, and people have different sides and backstories that, in subtle ways, define who they are.  That's what I'm really interested in. 

If you could share your stories, feelings, and lessons with people that would come hundreds or thousands of years after you, would you?  And if you were that receiving person, how cool would it be to create that kind of connection and interaction with people who you'd otherwise never be able to meet?  So while Geoshie isn't going to be exactly cheerful, I don't mean to make it depressing or fatalistic.  There's a very purposeful optimism behind figuring things out and unraveling problems like puzzles, and even if they're darker puzzles I still want to maintain those feelings, and create that strong sense of closure and finality that a lot of games seem to shy away from these days.

I've been spending a lot of time on the narrative aspect of Geoshie, and I feel like it's slowly shaping into a somewhat compelling story with a couple of twists and some intriguing characters, although of course that will be up to players to ultimately decide.

Direction and Timelines

A big goal at this point is getting an engine into a usable state that I can start doing tech demos as soon as RIT's IGM department starts sponsoring student showcases again, the idea being that a regular stream of forced updates and presentations will keep the project grounded and force me to make regular progress on it, as well as create hype.

Geoshie is, technically, a proof of what is possible with the medium rather than a fully structured commercial game in its own right, although I do want to make it as complete an experience as I can (more on that below).  From a more selfish perspective, it's more important to me to be able to demo the game to as many people and companies as possible than to waste time pushing it into a commercial box, especially since the potential player-base is so small (WP7 owners at RIT).  Distribution is not something I'm spending a lot of time thinking about at the moment.

With all of this in mind, the current release date for Geoshie is sometime in 2013.  As a tech demo and an experiment in game design for me, I'm not going to let the project spiral too far out of control to the point where it prevents me from doing other more intriguing game concepts I have, especially when it has such a small target demographic.  However, within that concept, I want to create the most polished game experience that I can.  There are a lot of augmented reality demos coming out at this point.  What bothers me in cases like this is that they seem to purposely limit themselves just to prove that they're about technology.  A lot of gameplay ideas get ignored, and a lot of features get shoehorned in just because they can.  As much as possible, I'd like to make a game.  Not a technology presentation.

Whether or not that's going to end up being the case is still to be seen, but I am (cautiously) optimistic about where I am at the moment in comparison to where I was half a year ago when this project was still a pipe dream.  And I'm very excited to get back to school into a programming environment and start putting more time into this than I have this summer.

In short, I pretty much have the best major in the world.  I hope this clears some stuff up for you.  It could probably have been more detailed, and there are actually one or two things I left out, including the work I'm doing designing puzzles, how actual encounters and interaction with Geoshie will work, and the back-end engine work I'm doing, but this should be enough to get you going if anyone has actually been curious about this.

No comments:

Post a Comment