During periods of reduced productivity, the blog is inevitably the first thing to be neglected. The past two months have found me struggling to keep up active game development, mainly due to an inconsistent work schedule. And by "work," I mean "sleeping baby." I realize that's no excuse, and simply need to shift my mindset to getting work done every day, regardless of the time.
While I haven't released any new games since color + shape, I have done significant updates to Nonogram Madness and Revolve Ball. In addition to completely reworking the graphics and music for both games, I've created "lite" versions of the apps. I'm curious to see if there will be any noticeable difference in download volumes. Each lite app has a prominent "upgrade" button on the title screen, and includes the first few levels from each game. After completing all the demo levels, an upgrade scene is shown, describing the extra features of the full version of the game. Each "upgrade" button actually uses a LinkShare affiliate URL, in an attempt to track conversions.
EDIT: I'm actually pretty disappointed in the conversion rate for the "lite" apps. For a few days, it seemed like sales of Nonogram Madness were up by a decent margin, but they have since returned to normal levels. Even more disappointing was the Revolve Ball demo. It's been out two days and had 1200 downloads, with 4 sales of the full version. I don't regret spending the time to program these updates, because I feel like the games are more indicative of where I currently am as a game programmer. However, from a financial standpoint it was pretty much not worth it. The goal was to increase awareness and presence in the App Store, but the games just must not be compelling enough.
Uh, so I'm not sure how cool it is to slag on your own games, but I'm not really excited about color + shape. A number of things were frustrating about developing it, and I definitely learned a few lessons that I'll carry on to future projects.
The game isn't interesting. I had the idea for this type of game back before I started doing serious iOS development. It was one of those "Oh, that might be fun." type of ideas. Unfortunately, this sort of game has really been done to death. It's not original, and doesn't hold my interest for any prolonged amount of time. Why did I start and continue development? At first I started so that I could tell myself that I tried the idea. Then, as I sank more time into the project, I didn't want to "give up," as I viewed it. Two lessons here. The first is to only start projects that I can really be proud about and have fun playing. Life is too short to waste on making projects that you don't care 100% about. color + shape might be something great to show a potential employer, but it means pretty much nothing as a marketable game. I'd love to submit it to some iOS gaming sites, but it's really so unoriginal that I can't imagine anyone taking an interest in it. The second is to kill projects that you're not excited to finish and are not marketable. Now, it's obviously important to finish some projects, but I spent four months on color + shape that would have been better spent elsewhere.
Localization didn't have any effect. In the first few days of downloads, I didn't get any sales from Japan. At first, I thought there was something wrong with my localized App Store listing. Nope, nothing wrong, I guess the game doesn't look appealing to Japanese people. Maybe the keywords I chose weren't very good? Who knows? Now, it wasn't a whole lot of extra work to localize the game, but it definitely wasn't worth it. I might try to add a Japanese localization to another project, just as another attempt, but I'm pretty discouraged by my first effort. Maybe it's just the fact that the game isn't very interesting and I haven't promoted it at all, but I would expect to see at least a few organic downloads.
There were a few positive things that came out of making the game, though.
I learned a heck of a lot more about manipulating arrays for grid-based games. I have a decent collection of code that I can reuse if I ever decide to make another one.
I was able to experiment more with cocos2d "actions," which helped me a lot in my Nonogram Madness update.
I finally updated to Xcode 4 and learned how to localize image resources.
In conclusion, I feel like the game is still a good thing to have in my portfolio, if only to remind me of the fact that execution is not enough; the idea and design of a game has to be solid in order for me to finish making it.
By watching television one should be able to guess that no
matter how old you get, the same bullshit is always waiting
to haunt you… but for whatever reason I reasoned that
problems, no matter how complex, are in someway bound and
finite. And in that reasoning, I came to the subconscious
conclusion that if I work all of the existing ones out, I
could actually live in peace… sadly, this assumption
was clearly wrong.
Check-a check it! My new game just got published today. If you have a dollar burning a hole in your pocket, you should download it from iTunes.
There were a few design changes made from when I first announced the game on this blog back in June. For example, instead of having a countdown timer to limit each play session, there's a "move" meter. Each time you move a row or column, the meter decreases. Making matches recharges it. I made this change after seeing my wife successfully play the game by swiping randomly over the iPad. Since the matches come so easily, there needed to be a way to limit the player's moves. Partially because of this change, there's no "Time Attack" mode in the game, since there's no longer a timer. Although it's something that could be added in an update.
In any case, it's a fun little diversion, and I'd like to hear any feedback you might have. I'll be writing a more detailed postmortem about the development process later, so stay tuned!
Something I wanted to do for the release of color+shape was try to have a Japanese localization. I know a smattering of Japanese, and I figured it was a relatively small effort to double my App Store keywords. Actually, I think you can have multilingual app listings without doing any localization, but I also wanted to learn about internationalization (hereafter, "i18n") in Xcode projects.
color+shape doesn't have a lot of text in it; in fact, most of the text in the game is embedded in .png files. This actually means that localization is a lot more work, because I have to actually create two different versions of each image with text: one with English, the other with Japanese. However, that might have been my only option... I have no idea if cocos2d-iphone's bitmap label classes support non-Latin characters. Perhaps I'll try that experiment sometime in the future.
However, even though it's lots of work to create multiple image files, it's pretty easy to get them into Xcode (version 4, by the way). I'll outline the steps here.
Save out the image you want to display in multiple languages, and add it to Xcode in the normal way (right-click on the Project Navigator file hierarchy, click "Add Files to [your project name]", then choose the image.
Highlight the newly-added image, then click the button in the upper right that shows the "Utilities" toolbar (it'll be the one that pops out from the right).
There'll be a "Localization" section in that toolbar for each resource file. By default, of course, there will be no localizations. Click the "+" button at the bottom of the blank list. It'll deselect the image you selected, so re-select the image file.
When you re-select the image, you'll see that an "English" localization has been created. What that means is that behind the scenes, a new directory called "en.lproj" has been created in your Resources directory, and the image has been moved there. Click the "+" button again to create as many different localizations as you want. Each time you do so, a new directory will be created with a copy of the original file.
To finish, simply create a translated version of the image, and save it into the appropriate localized directory, using the same filename (for example, if I wanted to have a localized title screen image, "title.png", I'd follow the steps outlined above, then save my Japanese version in "Resources/ja.lproj/title.png").
To make sure everything is working, open up your iOS simulator (or device) and change the language setting under "General > International" in the Settings app. Build and run your app, and you should see the translated resource get used automatically — you don't have to change anything in your code! It's worth noting, however, that you want to make sure your translated images are the same dimensions, otherwise their positions might be incorrect.
I'll also tell you how to localize the display name of your app. This actually took me a lot of trial and error to figure out, since most of the online documentation and tutorials I found left out a critical step (the necessity of semicolons at the end of each line).
Add "Application has localized display name" key to Info.plist
Add a new file to your project named "InfoPlist.strings" (under the "Resources" category in the New File dialog)
Add localizations to that file, using the same process detailed above
Add this line to each localization "CFBundleDisplayName" = "LocalizedName";
If you get this error: "validation failed: The data couldn’t be read because it has been corrupted." that means there needs to be a semicolon at the end of each line in your InfoPlist.strings file.
Hopefully this gives you a starting point for translating and building a localized version of your game or app. I'll be sure to write again about whether or not this has an effect on my downloads in Japan.