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.
Subscribe to:
Posts (Atom)