Wednesday, March 31, 2010

Game Play

So I've gotten a lot of the basics down - really at the meat of the game now (the daily gameplay).

I think I've gotten it down to:

  1.  Users can try to make bombs.  
    1. This is based on their level - the higher the level, the more variations they can make.
    2. They will consume energy to build bombs.  They will get X energy per Y hours.  As they level, they will get more energy
    3. They will get various qualities - from the best possible of that type to not working.  So they could make a mid-level pipe bomb (e.g., 1/2 the max damage, or 1/4 the radius
    4. If they are able to make the bomb, they will get experience.
    5. [?] Higher level bombs will require lower level bombs.  For example, if they user wants to make a timer pipe bomb, they'll first need to have a basic pipe bomb.
  2. Users can place bombs
    1. When placing a bomb, they will use stamina.  They will get X stamina per Y hours.  As they level, they will get more stamina
    2. Placing a bomb will result it success, failure, or the bomb going off.  The bomb going off will be as normal (damage anyone around it, etc) but the want-to-be bomber will loose HP and get no exp.  Failure will be something like a Guard discovers them, etc., and they can just re-try.
    3. If they are able to place the bomb, they will get a small amount of experience.
    4. If the bomb goes off, they will get more experience and possible rewards.
  3. Users can disarm bombs
    1. When disarming, they will use stamina.  
    2. Disarming will result it total success, partial sucess, failure, or catastrophic failure.
      1. Success will give the disarmer experience and rewards.
      2. Partial will take X amount of HP off of the bomb (a bomb is disarmed when it hits 0 hitpoints).  Anyone who was able to take partial hitpoints off of a bomb will get a small amount of exp if the bomb is finally disarmed.
      3. Failure means they didn't affect the bomb
      4. Catastrophic failure means they made the bomb go off.  This will be just like the timer ran down - bomber gets full exp, disarmer gets damage along with anyone around them.
  4. Bombs can go off
    1. Whenever a bomb goes off, the user who placed the bomb will get exp and items.
    2. When the bomb goes off, anyone that had a last know location around the bomb will loose HP.
    3. If the bomb goes off on a disarm, the user trying to disarm will get extra damage
    4. If the bomb goes off when being placed, the user who tried to place it will get extra damage but no exp or items.  Users with a last know location will take damage.
    5. If the bomb goes off as part of a contract, the user who put the contract out may get a reward, and the bomber will get extra exp and items.
  5. Users can gain items.
    1. As users bomb and disarm, they will get items.  These items can help them make bombs, place bombs, or disarm bombs (e.g., a special pair of wire cutters that give a +2 to disarming).
    2. Users will be able to purchase special items.  These will help as in #1, or be special bombs.

Monday, March 29, 2010

Progress


So I've been working on a new location-aware app for a while now, which has the working title "Phone Bomber".

The basic idea is people can place bombs at locations, others can try to defuse them, and bombs blow up. It's essentially a virtual world mapped on the real one - users can place a virtual bomb at the McDonald's down the street, others can then see there' sa bomb there and try to defuse it. If the defuse works, those that participated in defusing get rewards. If the bomb blows, the bomber gets some points, and anyone that's within the blast radius takes a HP hit (even if not playing - if you last did something at that McDonald's and a nuke goes off, you are SOL :)).

This is all based on my previous work on AnnotatedEarth. I had a list of things I wanted to do on the platform, from dating to gaming. This is built on a more simple game I had planned on doing (and still will at some point)

I'm a bit worried about releasing it, from a controversy point of view - this IS a game - it's all virtual. No worse than any other game involving guns and war, etc. - but as it's mapped on the real world, I'm not exactly sure the reaction it will get... Also not sure if Apple will approve it. If they don't, I may do something (lame) like change bomb to "Fluffy bunny"  that throws stuffing up over a radius, if no one pets them before a timer runs out.  So basically the same game with different terms and graphics.  

I will also likely do a VERY graphically/UI simple version of the game up front, to get some friends using it - and to see what Apple does.

Anyway. I've been working on it off and on now for a couple of months. MOSTLY thinking about it, designing it in my head. I've also got some of the basic pieces working.

I'm using Google AppEngine for the back end. Using it's (wild) DB, and Python, to write a basic web service that can be hit. I'm new to both Python and AppEngine (along with its DB). Which is cool, I wanted to learn something new, but it's not going as quickly as if I'd done it in C#.

The basic web service is done at this point. I still need to flush out the actual game play, but these works:
  • Signup
  • Login
  • Get user info (name, last location, etc).
  • Create Bombs (admin function)
  • Place Bombs
  • Place Contracts (Drive-thru person piss you off? You can take a contact out on that Local McDonald's!)
  • List Bombs around a users location
  • List Contracts around a users location
Still to do (that I know of):
  • Defuse bomb
  • Defuse bomb for contract
  • cron job to trigger bombs when their timer hits zero (if not defused) + calculate who gets rewarded and who gets a HP hit.
  • Spawn Bombs
That last one, Spawn Bombs, is important I think. One of the huge problems location-aware apps run into is when someone uses the app in an area where no one else is using it - there's not a lot for them to do. In order to deal with this, if no bombs are within a certain distance (5 miles? 10?) the game will randomly place bombs when the user requesst a list around them. That is, if the user asks for a list of bombs and there isn't any, there will be a 1 in X chance of a the game creating a bomb (using a system account) that the user can interact with.

I will also likely have a  cron job that looks for bombs that no one but the placer is around - and randomly try to defuse them.

I will be hiding this from the user - when they try to do this, I very well may also create a local account (that will be re-used to place future system generated bombs) - it SHOULD look like others are playing. As more actually do, then the system bombs won't be generated.

As I'm also fairly new to iPhone development (my first target device), I decided to write a test app in .NET that hits the AppEngine app. This will allow me to test all the calls - AND fully test out the game play. Once all that's done, then I just need to write the iPhone app (which will mostly involve that platform, as the backend should be done).

Here's a screenshot of the test app:

Yes, it's one freakin' huge window, and complex. Again, this is just my test app. I wanted something that where I could see what was going on, adjust game balance, and easily test stuff.

I am hoping I will get the back end done in the next couple of weeks. Day job + SR is taking a lot of time :)

I have also tentatively named the new company "Location Play" (thus this blogs name).  I really didn't want it tangled up into RS (in either direction), and I'm planning on writing more than just this game, for location aware.  I'd actually like to do like Zynga - create a back-end template that can just be re-done a bit for new games, but are essentially the same.  e.g., do a bio-attack game that focuses around that (but essentially the same).  I think Location Play was a decent name, and fairly meaningful.