I got away from programming Geoshie for a while, and got to do some fun unrelated A.I. stuff, as well as just spend some time with my family. Geoshie is going pretty well, but my limited testing has gone poorly. I'm kind of taking this in stride though and looking at it as an opportunity to really flesh out the befriending part of the game before I bring it out into the real world to test it.
The first released version of the game has a lot more to do other than adopt and befriend different geoshie, but I've taken to developing in sections. It leads to more modular games that are easier to expand in the future.
The CreatureClass, which serves as a generic placeholder for other creatures, uses a couple of different attributes to decide whether it's moving towards you or away from you: fear, curiosity, hunger, and aggression. It's relatively easy to get a geoshie not to run away: just get the curiosity, hunger, and aggression to, in total, outway the fear. The trick is not to mess up that balance, while you work on the two most important attributes, trust and commitment. Wild creatures are naturally pretty scared of you. Feeding one will somewhat increase trust, and even slightly decrease fear, but will mostly just decrease hunger. Taunting it will increase aggression, but will also slightly increase fear and decrease trust.
Befriending a geoshie, and attempting the even harder task of adopting it will be a challenge.
I'll post some code samples once this gets more fleshed out.
My development of a Windows Phone augmented reality game to be released exclusively on the Rochester Institute of Technology campus.
Wednesday, November 30, 2011
Wednesday, November 9, 2011
Every time I go into my software classes I want to change things.
Knowing that most of my code will eventually be released as open source has really changed the way I think about what I write. And, of course, starting to learn some really interesting and useful stuff in my programming classes makes me constantly want to revise things.
There's an interesting trade off between striving for perfection and just making things work. With a project as small as this one, I still feel like I can nail that, but this is revealing in me a rather unsettling tendency to make sure that everything is exactly as I planned it.
However, I'm really liking the direction this is going. I feel like I have a relatively good, clean, backend that will be easy to extend and add features to without a lot of rewriting.
There's an interesting trade off between striving for perfection and just making things work. With a project as small as this one, I still feel like I can nail that, but this is revealing in me a rather unsettling tendency to make sure that everything is exactly as I planned it.
However, I'm really liking the direction this is going. I feel like I have a relatively good, clean, backend that will be easy to extend and add features to without a lot of rewriting.
Wednesday, November 2, 2011
Diagram of a prototype encounter
A quick breakdown of the backend of a wild geoshie encounter.
Geoshie encounters rely on three different player inputs.
1. The accelerometer data
2. The location of the player
3. Direct player commands (befriend, bait, taunt, and ignore)
Two of these inputs (accelerometer data, and location data) are passively inputted, they're constantly gathered and used as required. So they're not exactly player actions as much as they are attributes that describe what the player is currently doing.
Geoshie encounters rely on three different player inputs.
1. The accelerometer data
2. The location of the player
3. Direct player commands (befriend, bait, taunt, and ignore)
Two of these inputs (accelerometer data, and location data) are passively inputted, they're constantly gathered and used as required. So they're not exactly player actions as much as they are attributes that describe what the player is currently doing.
(diagram of how the encounter is logistically separated. These aren't all classes.)
Geoshie monitors these two sources constantly and sends them to a central hub: the main .swf (Encounter) and that .swf relays that information. That central hub contains the main loop, which runs multiple times per second.
The main loop relays passive player data to the geoshie A.I, which adjusts its catch rates and movement accordingly.
Or in other words, you are constantly relaying information about your movements and location to the geoshie, who is constantly moving and adjusting how much it trusts you based on these movements.
All of this happens passively with no input from the player.
This cycle is broken whenever the player presses a button. If the player presses ignore, that's registered in the central hub and the entire process shuts down. If the player presses bait or taunt, this sends those actions to the Geoshie A.I. and gets it to make a single decision about how to deal with this. These are the actions that massively effect befriending rates.
Finally, the player can attempt to befriend the geoshie, in which case encounter will ask Goeshie to return a random number based on the befriend rate. This number decides whether or not you're successful. If the player is successful, the encounter ends and the geoshie is successfully befriended. If the player is unsuccessful, the encounter continues and the befriend rate is adjusted accordingly.
Mockup of U.I. for wild geoshie encounter
An early mockup of the interface you'll see as you attempt to befriend different Geoshie. I'm looking to try and display as much information as possible without being overly specific. For instance, you might follow something for a while and get a message that it "seems afraid" or "is getting more comfortable." The end result is that you kind of intuitively get to know the creature you're chasing around without doing a bunch of number crunching in your head. The base controls: taunting, bating, and befriending are very simplistic. They're the primary way of interacting with wild geoshie. The real fun comes from the less exact things you do. Getting too close to a goeshie may scare it off. If it's nervous, you can use slow gentle movements to make it feel comfortable. Remember, there's a constant stream of data going to this animal about your location and how your phone is moving. Every geoshie will react to that a little bit differently.
Tuesday, November 1, 2011
Prototype in Development!
A lot of Geoshie is still in the design stage. I've been coming up with a lot of fun ideas about how to make the act of befriending a creature really engaging. That doesn't mean I can't do some development though. I've been working out a flash prototype of a basic encounter with a wild geoshie, and hope to be able to run some tests on that before thanksgiving rolls around.
Thursday, October 27, 2011
Geoshie Explained
Geoshie is a real-time augmented-reality mobile game that will launch exclusively at the Rochester Institute of Technology with the goal of encouraging a more positive attitude among students about exploration and discovery on campus.
In reality, it's much less exciting than that, but it still should end up being pretty cool if it ever gets launched.
Geoshie is (will be) a mobile app (for Android and Iphone) that populates the RIT college campus with a number of unique creatures. Players can wander around campus and attempt to befriend these creatures by dynamically utilizing their smartphones.
A large part of Geoshie is exploration oriented. Players will be able to find different creatures on different parts of the campus, learn detailed information about different species, locate special items, and befriend Geoshie that are totally unique to them.
Geoshie is also socially oriented. Players will be able to team up with other players to look for rare species and find items.
I am planning to eventually release a complete and intuitive PvP system as well as an overarching storyline complete with single player and co-op quests that actually affect the direction of the story for every participant on campus.
Oh, and it's open source as well.
The back-end of Geoshie will be released as either open source or public domain upon completion, although users will have to pay to access an official content server if they want to play my version of the game. They will be free to set up their own servers and create their own creatures and derivatives off of the game.
The main goal of Geoshie is just to be a fun, engaging game that makes it a little bit more exciting to step out of your dorm room in the morning. I believe that life is really amazingly fun, and Geoshie is an attempt to spread that idea around.
In reality, it's much less exciting than that, but it still should end up being pretty cool if it ever gets launched.
Geoshie is (will be) a mobile app (for Android and Iphone) that populates the RIT college campus with a number of unique creatures. Players can wander around campus and attempt to befriend these creatures by dynamically utilizing their smartphones.
A large part of Geoshie is exploration oriented. Players will be able to find different creatures on different parts of the campus, learn detailed information about different species, locate special items, and befriend Geoshie that are totally unique to them.
Geoshie is also socially oriented. Players will be able to team up with other players to look for rare species and find items.
I am planning to eventually release a complete and intuitive PvP system as well as an overarching storyline complete with single player and co-op quests that actually affect the direction of the story for every participant on campus.
Oh, and it's open source as well.
The back-end of Geoshie will be released as either open source or public domain upon completion, although users will have to pay to access an official content server if they want to play my version of the game. They will be free to set up their own servers and create their own creatures and derivatives off of the game.
The main goal of Geoshie is just to be a fun, engaging game that makes it a little bit more exciting to step out of your dorm room in the morning. I believe that life is really amazingly fun, and Geoshie is an attempt to spread that idea around.
Subscribe to:
Posts (Atom)