Sunday, September 30, 2012

The Last Thumb Fighter - Delivered!

           

Click the above links to see the apps in Apple's App Store!

I've finally completed my first mobile game, The Last Thumb Fighter!  It has been seven months in the making.  I should really spend more time writing apps...

Anyway, it's done, and instead of talking about what it is, I'm going to let you go check it out above.  For those that are interested, I'm going to talk a bit about development.


It all began with a simple thought.  That thought was, "Y'know, I love playing games with my friends, and there's no game that you could just pop out when you're hanging out at a bar and play with each other."  Of course, there probably are some out there, but who has the time to search the app store for them?

So, that got me thinking about how you might play a game with your friends, and I stumbled upon this idea of holding the device between the two of you, each with one thumb on it.  Everyone I described this two had the same feedback, "That would be awkward, and there's not enough room for it."  And every time I got this feedback, I pulled out my iPod and made them hold it between us, and it just works.

That's gave birth to the idea, and shortly thereafter I began the prototype.  The first iteration was just two circles shooting circles at each other.  There was no game there, but the interaction just felt so right.  You can judge for yourself whether or not the game's a success, but I think that regardless of how you feel about the overall product, you'll agree that interaction is successful.


From there, development went remarkably smoothly.  I took the lessons of my last project into this and made a list of all the things I need to do, and one by one, I implemented each item and checked it off the list.

I hit a few stumbling blocks, from which I learned a few things, which I will share with you now.

1. Corona handles drawn images better than circles.  With just a few newCircle calls, you can bring your app to its knees.  Fortunately, there's an easy solution: draw your circles in your favorite paint program and use them instead.  I recommend doing this early on because there are some subtle differences in how you handle the two, and it's no fun searching and replacing all the circles in your code.

2.  Corona's button widgets are odd.  They seem to be built for single interactions.  You'll notice that before the co-op and multiplayer, you and your friend can select your ships at the same time.  This created some funky bugs where the input bounced back and forth between simultaneously clicked buttons, resulting in the ship selections changing randomly.  I ended up scrapping Corona's buttons in favor of my own.  It turns out, my custom class was pretty easy to write.  It's not as fully featured, but it gets the job done.


3.  Sound is hard.  There are definitely some little gotchas in implementing sound.  Take a very careful look at how the samples work when you write your own.  I actually learned much more about this when I created the update for Wizard's Magic Ball, but more on that later.  However, what I'm really talking about is writing music.  I haven't ever done that before, and I learned as much or more about sound than I did about everything else in this project.  At some point, I'll have to do a post about how I write and record music.

4.  Corona is remarkably easy to upgrade and well documented.  No, this wasn't a stumbling block, but it helped me through several.  I upgraded Corona once during this project when the New iPad came out, and there was a tiny change (for the better) to the button widget.  That was the only thing I had to change.  And throughout the project, I relied heavily on Corona documentation, which is fantastic.  Great documentation can make up for many faults in an SDK.

And there you have it.  There's so much more I could say about this project, but I'm not sure what would be useful or interesting to someone stumbling across this blog.  I'm sure I'll be mentioning it often in the future (assuming I do more than a single blog post per release).  If you've read this far and you have questions, fire away.  I'd love to start a dialogue about indie game development.

P.S.  I'm not one for taking away dev time to write blogs, but I have the upgrade to Wizard's Magic Ball and my adventures with other SDKs like Moai to talk about in the future, so barring any unforeseen laziness (or more likely, busyness making apps), look forward to posts about those in the future.

Saturday, September 29, 2012

Wizard's Magic Ball 2.0 - Delivered!

If you've got my Wizard's Magic Ball app, then you may have noticed an update today.

That update is a neat, new customization feature.  It allows you to write and record your own answers for the Wizard's Magic Ball.  If you're unhappy with what you've recorded, you can always restore the default voices (though, you have to save again if you want the default to stay on).

Also, if you look at the screenshot to the left, you'll probably notice the difference in color between the "yes" and "no" answers. This is to indicate which group the answers are in for rigging.  If you rig for "no," you'll get an answer for the orange group, and if you rig for "yes," you'll get an answer from the green group.

Go try it!

Also, look for a couple of very special updates tomorrow....

*Sneak*

(Oh, side note: this is not yet released on Android.  That will happen sometime soon...)

Sunday, March 4, 2012

Wizard's Magic Ball - Delivered!

UPDATE:  My app is in the App Store as well.

It has taken long enough, but I finally got an app delivered.

(click the image to go to Android market)

It turns out that even the smallest of apps is a ton of work.  Even this one, which was made with the use of the wonderful Corona SDK.

If you're interested in developing for iOS or Android and don't have the time, energy, or money to get up to speed with both Objective-C and Java, I highly recommend Corona.  Best of all, it's free to try out, so what are you waiting for?

That being said, I learned quite a bit in getting this little app to market:

1) Windows may not care about file name capitalization, but every other OS does, so if you're developing on Windows, do yourself a favor and pick a simple strategy for naming files (like keeping them all lowercase) and stick to it.  I spent several hours trying to figure out why my app wouldn't work on my tablet, only to trace it down to a reference to "LevelEditor" when the file name was "levelEditor."

2) Multiple X-Code installs will likely cause a headache when attempting to deploy to your iOS device.  This site was instrumental in getting my system setup to deploy Corona apps:
http://pushkararora.com/how-to/how-to-uninstall-xcode-completely/

3) For current Corona users, you need the following: X-Code 4.2 (4.3 is currently not working with Corona because of some of Apple's changes), and the current Application Loader.  Application Loader can be found on iTunesConnect, a site you will probably never have heard of, if you haven't done any iOS development before.  Also, it's almost impossible to find (go to Manage Applications, then look at the bottom under Application Loader).  The easiest way to get up to speed is to uninstall all X-Code installs, restart your system, install X-Code 4.2, restart your system, install the latest Application Loader, restart your system, and proceed from there.

4) Apple must use stagecoaches to deliver your app to the reviewers.  Also, their process for signing apps must have been borrowed from the Dead Sea scrolls.  For reference, it took me about an hour to get my app on the Android and Amazon market places.  It also cost me $25 (that was for the Android market, Amazon costs $99 a year, but they're waving the first year).  To get it on the Apple Store took me an entire day and $99.  Also, it's still not out yet.  I have to wait at least a week for them to accept my contract so that I can sell apps and at least a week for them to review my app (as of right now, the app has still not been picked up for review).  Be forewarned.  If you have any sort of deadline, get your Apple accounts squared away before starting on your app.

5) Corona is awesome, but there are some things to be aware of, most notably: test on as many devices as you can because the resolution will be an issue.  Corona comes with some neat scaling features, but while that works well for scaling big images to the right size, it doesn't help out so much with positioning of game elements.  I wrote a utility class for take the device's resolution and using that to scale all my elements and positions to the right places.  NOTE: Corona auto-scales assets if they won't fit in texture memory.  That means that, with my code, I had to make a special case to deal with assets that might run afoul of the texture memory limits on some devices (basically, anything over 1024x1024).

6) Make sure that you make a vector version of some of your screens and your app icon because you'll need a set of screens and icons in a myriad of sizes for each market place.

7) Asus Transformers often have a power button issue that comes from the outer button not lining up with the physical one inside.  I'm still trying to get mine fixed, but be forewarned if you're thinking about picking one up for running your apps.

8) Getting an app onto the market places where people can buy it and play it is an awesome feeling.  I recommend everyone try it out.

Saturday, February 11, 2012

Back to work!

Alright, it's been a long time, but I'm going to get back to working on my goals and blogging about it.


But First!

I'm actually busy working on an app, so I'm just going to drop some knowledge before I forget.  I got a new Asus, and it's pretty rad, but it has this dumb problem of auto-hiding my task bar in Windows 7 every time it goes to sleep, it restarts, or I plug/unplug the power.

To fix this, do the following:
-navigate to Control Panel\Hardware and Sound\Power Options
-there you'll see your selected power option
-click "change plan settings" next to it
-click "change advanced power settings" towards the bottom
-here you'll find all kinds of useful features you can turn on and off dependent on the current mode
-find "ASUS P4G Power Setting"
-find "Battery Saving Desktop"
-disable it when you're plugged in or on battery

Unfortunately, there are a bunch of clever things this does to squeeze a little more life out of your battery (like turning off many of the Windows 7 effects), but I HATE auto-hiding the task bar.  Although, if you want to save power AND show your task bar, you could always manually turn off all the Windows 7 effects that this power settings changes.

And there you have it.  I'll be posting about my current projects soon.  Now, back to work.