Two Finger Play

iPhone game development, by a college student with a short attention span

Location: Atlanta, GA, United States

I don't wear shoes. If you see a barefoot kid walking around the Tech campus, say hi.



Global score stuff is coming along very well. Got the PHP/SQL backend up pretty quickly; all that's left there is to set up caching, have a PHP-wise friend of mine double-check it for obvious vulnerabilities (I've blocked SQL injection and various nasty things that could be done to the returned plist XML, but hey, there might be something...), and make sure it'll work from the aforementioned remote server.
Client-side I'm not expecting a lot of trouble either. The structure for setting up a list of name/score views is already in place, so I've basically just got to run through the dictionary and stuff its contents into the views, and submitting the actual score request is even simpler. The one thing I'm considering right now is having it stash new-high-score information somewhere if there's no network connection available at the time; that, of course, brings in the whole encryption issue again. Blah.

Labels: , , ,



Scratch that last; I wrote a little bit of code to NSString-ify the board's contents for saving, then decided that was boring and started on the global high-score stuff. I'm realizing that there's actually going to have to be some overlap between the two, mainly because of the security/cheating/whatever-ing issues inherent in global score tracking.

I'm committed to keeping Tris as open-source as possible, at least until it's into the SDK; with the full source, though, it'd be trivial for someone to send fake scores to the server. Most likely I'll have an authentication key or something in a private header—the game'll still build without it; it just won't be able to submit high scores. The save-game stuff will need to be encrypted, too, or said hypothetical bad person could just modify that file, restart the game, and inject stuff without even mucking with the code. Should be an interesting challenge.

Many thanks, by the way, to Fredrik Malmquist for his generous donation of hosting for the global-high-score stuff.

Labels: , , ,



Finally got some work done. The weird pausing issues are no longer; along with that, a minor interface weirdness—being able to hit "MENU" and get (apparently) the same result as "new game"—has been banished as well. Thanks to laurens.vets for reporting another bug, one I hadn't been aware of: rotating a piece off the bottom of the screen caused a crash. Shame on me for not checking array bounds, and so on. Both issues fixed now; if you'd like the shiny (or at least less be-bugged) new version, feel free to check it out from the SVN and compile it y'self. Now that I've got those out of the way, I'll be starting on the save-game system.

Labels: ,



So I realize things have been quiet around here for a while. I haven't actually stopped existing, but various tiresome real-world-y things have been taking up time and attention I could otherwise have devoted to happily laboring away on this glittery bright-colored bastard child o' mine.

Anyhow: news. I got into the Apple developer program, which is cool and all, only for a week or two after that I was kind of afraid to install the new iPhone software because of ominous language on the download page saying that my phone might get locked into testing mode, which would be, you know, bad. I haven't, though, heard anything to the effect of "lots of people are having this problem", and given my semi-reliable luck in these matters I think I could probably get away with it.

The trouble is, though, that once I've moved to the new software, nothing I write for it will work in current versions. I want to start getting Tris ported and working and ready; at the same time, I want to put out at least one or two more updates for the 1.1.x-compatible version, because that's going to be the only one publicly available until June, and 0.6, as I've written about before, has plenty of things that need work.

At this rate I might end up maintaining two codebases, nasty though that is - one for 1.1.x, one for 1.2/2.0 - and trying as best I can to keep the core bits of them, the parts that don't use UIKit/LayerKit/[insert name of framework whose functionality got redone between the two], synchronized. Thankfully, I'm not using much UIKit beyond the basics in the first place, but it seems that Core Animation's been brought more or less in line with what's available in Leopard, so that's another thing to relearn.

So, long story short, I've got a lot of work to do any way you look at it — particularly as I'm trying to balance the flush of end-of-semester assignments, some development contract work, and talks about a summer internship with these guys (excited!) — but I hope to get at least something done soon.

Labels: , ,