Monday, April 26, 2010

Backend V1 - Done?

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.

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.

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).