So I think, after tonight, that the back end part of this has settled down.
I now pass back complex (plist) data on most calls - which usually includes the user info. I was originally doing a double trip - for example, when a disarm attempt was made, the client would get back info about it - but then would have to get user info, to get sta/hp/exp info. So that user info is now passed on most calls. Kind of a pain - not to much change in the back end, but had to rip the tester a bit.
Leveling is in - user has minlevel/maxlevel, current exp, and level. When Max is hit, the user info is updated. They now have skill points, which can be spent on Sta/Defuse/Making
Regen is working - as the user makes calls, if more than a minute has passed since a stamina/hp update, that info is updated. So if 5 minutes have gone by, the user regens 5 hp and 5 stamina (might be every 4 or something, but that's what I have for testing). The client can also do a timer to update that info on the client - but the server is always in charge of what's "real".
Both leveling and regen happen pretty much whenever a validated user does anything... so for example they could be just mucking around with listing bombs - a bomb they placed a day ago goes off - and they'll see exp/level info updated the next time they do any action.
The only big thing I have left is bonus items and purchases. I want the first version to have some kind of profit model (which has always been users purchasing virtual goods). Eventually this will be things like buying power ups and the like for bombs, and special defusing items - but for the first version I very well may just let them buy bombs. I will likely work that out once the iPhone client is done, as I don't understand the details of in-app purchases yet.
I'm still worried this isn't going to get past the Apple mods. I want to get the basic iPhone client running ASAP so I can submit this sucker and see if I'm going to have something or not. VERY frustrating not knowing that.
If it's no go, then I'll likely be dropping my iPhone and moving my daily use and development to Android.
Monday, April 26, 2010
Saturday, April 10, 2010
Live!
Well, ok, not really - but I was able to deploy to the cloud and run my tester app against it - worked GREAT! Very fast, and no trouble (after I remembered to seed the test users and some bombs :)
One area I was somewhat worried about was the cron job, and the resources it will take. I am running it as quick as AppEngine lets me (once a minute). I am going to assume that if no records are returned it will have very little quote-impact. If not, I'll have to take a look at that.
I'm very interested over all what performance and usage will be once I get a bunch of users on this - and what it will do to the quota...
I have the cron job running now - I placed some bombs and they've all gone off (wiping out my tester users!), so I'll be able to see what that looks like in DB/CPU usage over night.
REALLY Glad to have gotten this far with the back end. I feel like I'm working well with AppEngine now, and OK with Python. I may be off on the GQL part of this (I think I may be doing too many refs), but am at least kinda getting the hang of it.
Wish I knew more Objective-C and had done more with the iPhone - only have a few hours of both at this point, so it's going to be a while before that part is done.
One area I was somewhat worried about was the cron job, and the resources it will take. I am running it as quick as AppEngine lets me (once a minute). I am going to assume that if no records are returned it will have very little quote-impact. If not, I'll have to take a look at that.
I'm very interested over all what performance and usage will be once I get a bunch of users on this - and what it will do to the quota...
I have the cron job running now - I placed some bombs and they've all gone off (wiping out my tester users!), so I'll be able to see what that looks like in DB/CPU usage over night.
REALLY Glad to have gotten this far with the back end. I feel like I'm working well with AppEngine now, and OK with Python. I may be off on the GQL part of this (I think I may be doing too many refs), but am at least kinda getting the hang of it.
Wish I knew more Objective-C and had done more with the iPhone - only have a few hours of both at this point, so it's going to be a while before that part is done.
Progress
Have a LOT done on the back end right now. My tester app is letting my two test users log in, place bombs, disarm bombs, and the cron job is blowing bombs up. I've decided to NOT do the daily job thing - if Apple lets this thing through, I'll do it then.
I think the only big back-end pieces I have left are auto-updating HP/Stamina (e.g., user regains that to a point so I need to deal with it), correctly showing level based on exp, and dealing with leveling (how users can spend points)
I think they can spend points on Bomb Defuse Skill, Bomb Making Skill (or maybe get that from doing those), and then Stamina and HP.
I'll then start working on the iPhone part of this... which is a whole big project in and of itself (plus I'll have to learn a bunch).
I think the only big back-end pieces I have left are auto-updating HP/Stamina (e.g., user regains that to a point so I need to deal with it), correctly showing level based on exp, and dealing with leveling (how users can spend points)
I think they can spend points on Bomb Defuse Skill, Bomb Making Skill (or maybe get that from doing those), and then Stamina and HP.
I'll then start working on the iPhone part of this... which is a whole big project in and of itself (plus I'll have to learn a bunch).
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:
I think I've gotten it down to:
- Users can try to make bombs.
- This is based on their level - the higher the level, the more variations they can make.
- They will consume energy to build bombs. They will get X energy per Y hours. As they level, they will get more energy
- 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
- If they are able to make the bomb, they will get experience.
- [?] 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.
- Users can place bombs
- When placing a bomb, they will use stamina. They will get X stamina per Y hours. As they level, they will get more stamina
- 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.
- If they are able to place the bomb, they will get a small amount of experience.
- If the bomb goes off, they will get more experience and possible rewards.
- Users can disarm bombs
- When disarming, they will use stamina.
- Disarming will result it total success, partial sucess, failure, or catastrophic failure.
- Success will give the disarmer experience and rewards.
- 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.
- Failure means they didn't affect the bomb
- 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.
- Bombs can go off
- Whenever a bomb goes off, the user who placed the bomb will get exp and items.
- When the bomb goes off, anyone that had a last know location around the bomb will loose HP.
- If the bomb goes off on a disarm, the user trying to disarm will get extra damage
- 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.
- 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.
- Users can gain items.
- 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).
- 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
- 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
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.
Subscribe to:
Posts (Atom)