Warcraft Characters: v2.0 and beyond

Warcraft Characters: v2.0 and beyond

Warcraft Characters was my first iPhone project, which let users see their character stats on the iPhone. This post focuses on the “golden age” that was the second version, and plans for the third.

Here’s what happened in the previous episode…

A mild-mannered, unassuming web developer attempts to break into Obj-C/Cocoa dev territory by making an iPhone Warcraft Characters app. Also, JC Denton escapes, Babylon 5 is destroyed, and the princess ends up in another castle.

Version-that-does-things-right-this-time

Tabs on bottom and edit button were new additions.

Tabs on bottom and edit button were new additions.

After Characters v1.x was out for a few weeks and I enjoyed the high of having an application grow in popularity, I wanted to do another version to bring the product closer to what I felt it should be (you know, that original dream which made me make an app in the first place) as well as address features requested from users… And, *cough*, fix bugs.

The great thing about developing a second version is that you get to learn from previous experience: You see what could be done better, which patterns work, which should be rewritten, and what should be tossed out. Thanks to the first version, I was now a level 20 coder, instead of level 5.

I started the new version with a blank XCode project since I wanted to lay out structure differently. And when I say differently, I really mean better and more maintainable. The new version wasn’t just about a different look and internal tweaks – it was a brand new project that benefited from the mis-steps of my first try.

Let me illustrate that with this example: The first version had simple download classes. It would either successfully download a character, or it would fail. There were no options to notify the user how the download was progressing, more elegant handling of possible failure, or the ability to let the user browse around while different parts of their character info were being downloaded.

In the new version, Characters 2.x, these issues were addressed by adding a queue downloader class that handled prioritizing of approximately 40 downloadable items per character, notify views with progress so the user can still use the interface, and is much better equiped to handle and notify views of possible errors.

Hands down, my two favorite parts of making the second version were the improved code architecture, and tons of new additions to the user interface. More on this below.

Character view – now twice the awesomeness

The Character view was expanded with reputation and an items pane, and other panes were revamped.

This time, I used programmatically created progress bars, used for progressions, reputation, health, mana, and so on. This was officially the first time I dabbled into the CoreGraphics framework, and I got out of it alive. Every time I wanted to create a bar, I’d just call something like this:

[self drawBarInsideView:cell.contentView
at:CGPointMake(110.0, 10.0)
withStyle:[factionDetail objectForKey:@"barStyle"]
withLabel:[factionDetail objectForKey:@"barLabel"]
withValueAsPercentage:[factionDetail objectForKey:@"barValuePercentage"]];
Character sheet was cleaned up in this version, but no radical changes happened.

Character sheet was cleaned up in this version, but no radical changes happened.

Compare this to calling a photoshoped image each time I needed to draw a bar. Yay for reusable code!

The Items pane brought the number of items needed to be download from 2 (portrait, stats) to at least 40! Each item download required the image, data file for name, and description window which I’d save as a local web page. Using web code from the Armory for item descrpitions cut development time to a few hours for the Items pane, which is huge time-saver.

Also, I couldn’t let the user wait for all items to download, so I set the download queue object to notify the item list every few seconds, leading to nice gradual population of list items.

Outside character view – revamped as well

New search feature took away the need to type in the server name.

New search feature took away the need to type in server name.

A character search used armory search page feature, which was a huge step ahead of having to type in a server name. I didn’t want to take too much time working on a prettier search list (such as class and race icons), so I pushed it to version 3.

Of course, I was much happier with this release. Feedback was mostly great, since I managed to add most of the features that were requested (items, rep, better stats, search). I said “mostly great” since I had requests for anything from talent trees (didn’t want to delay release for weeks just to make talent tree, as gorgeous they are) to 3D character model viewer (if I could make 3D model viewer at that time, I would be making an iPhone game instead).

The iPhone App Store – The Smallest Middleman You Can Get

Item list pulled info dynamically, so you could see it update real-time.

Item list pulled info dynamically, so you could see it update real-time.

I love the iPhone App Store. When you’re a hobby developer, it’s great that all the work of distributing and deploying an app is taken off your shoulders. It’s also interesting to see how the App Store is growing and evolving over time, and I can’t wait to see what it will be like in a few years. All this, of course, with faith that it *will* get better – currently, many developers complain that it’s a mixed bag.

I did, however, have a review process snafu with it at one point: I made a minor update that added support for Death Knights and level 80 portraits when Wrath of the Lich King came out. While the actual update was minor, it had to get out fast so the users wouldn’t have issues with missing DK talent labels or new lvl 80 portraits. This update was rejected on the basis of ‘not adhere[ing] to the iPhone Human Interface Guidelines’ since the search view didn’t notify the user when a network connection was not available. Fair enough, but I wasn’t thrilled that this happened when a bug update needed to go out fast, especially when the previous 2 minor bug releases with exactly same search pane were approved.

Version 3 – where did it go?

Midway through developing version 3, I got the cease-and-desist letter from Blizzard, which signaled to me that their iPhone app was on the way. Oddly, this was a relief – it meant that a Warcraft app would come out with a *true* armory integration, and I was ready to work on something of my own.

Here are the few screenshots of the work-in-progress for the v3…

You can see placeholder icons for more rich search view.

You can see placeholder icons for more rich search view.

New favorites option allowed bookmarking of guilds and items, as well as visual update on download progress. Planned to add icons later as well.

New favorites option allowed bookmarking of guilds and items, as well as visual update on download progress. Planned to add icons later as well.

Point when C&D letter came in: experimenting with horizontal swipes to give more information without tab jumping (note right arrow on last block)

Point when C&D letter came in: experimenting with horizontal swipes to give more information without tab jumping (note right arrow on last block)

Leave a Reply