Just puked out my first iPad app and flushed down the iTunes.
This project started a few months ago when I had an English student (ESL that is) and wound up with an iPad. I decided to rummage through the shop to see if there were any good spelling apps and found a yawning gap between "ABCs" and "GRE monsterwords".
I had just thrown together a few game projects as studies and figured why not kick it up a notch and fill in that gap myself? So I got to work.
A tiny bit of background before I go on. My immediate previous (study) project was a Bigfoot game that was a failure. My artist friend and I brainstormed about a sidescroller with Bigfoot and put all our mental energies into what he was doing with the CIA. Then, eager to learn this C++ thing (I just got Scott Meyer's "Effective C++") I started typing up a storm of code without thinking too clearly. Obviously this is a recipe for disaster and by the time I realized how poorly conceived the game was, it was a pain in the rear to do much with it and the level editor was terrible. By then we didn't care anymore and decided to toss it, learn, and move on.
So on this round I started with a paper draft of the game and decided I'd do that "play it over and over again with people" thing those Portal people did. Here it is:
This drew heavily on the battles in Civilization 3 which I was playing a lot at the time several months ago. There are infantry (dude with machine gun), cavalry (tanks) and cannon (I drew it kind of like a Howitzer). Battles would decided partly on chance and partly on spelling. Infantry would have double defense chance, cavalry had double movement and half chance of retreat, and cannons had no-risk attack. The filled in areas were woods.
Pretty off-the-shelf, in short.
But when I set about playing it against my student, little details immediately came to the forefront. These matter little to the final version, but I'll write about them here because they exemplify the little things you learn play testing.
Firstoff, I'd pitch English words at her and she'd pitch Polish words at me. The scoring had "partial credit". For example, if a word is "repeat" and she spells it "repet", she loses 1 point out of a possible 6. This made enough sense until we started pitching words at each other. Polish spelling is dramatically more intuitive and phonetic than English is; with my vastly inferior Polish skills, I was still able to spell elaborate words decently well. This was unfair and I added a fudge factor by squaring my scores (e.g. 0.5 became 0.25).
Secondly, the defender pitched the word. This goes back to those punishment and reward issues; in short, having to spell discouraged her from attacking and simply moved units to woods. Reversing this rule encouraged her to aggress.
Third, I'd let her replace units if she'd write a word of my choosing twice. I'd tell her the spelling. This is just a tad duh; English spelling is more phonetic in spirit than anything and may as well be treated like learning Kanji. "Write it like this", I'd say, sometimes even making traceable pages as if the word were just a jumble of lines. It worked well enough.
After several sessions it was time to move on and create a new prototype using a RAD tool - Java in my case, because I was familiar enough with it to throw something together in a week.
This dumb gizmo, and the idea of dropping it into a "normal" game instead of making a word game, was actually the result of a surprising amount of discussion and brainstorming between myself and my business partner who is a teacher of the Deaf.
I won't go into it. The important thing is that it's a tweaked JTextField which can show a customizable preview of a word, such as its length and any choice of letters. Furthermore, it doesn't let you type wrong letters over revealed text and will give a visual "jolt" if you try. It wants you to practice typing the word correctly in one go.
So here it is dropped into prototype 2:
It uses a voice synthesizer to announce words and - for some reason - I felt like making it a hex grid now. There's also a signing version (American Sign Language) I let my cohort try on people.
It all seemed promising, but I had other business to tend to, so I let it stew in my mind for a few months before I came back to it. I put the trace-word gizmo into our Deaf educational kit program thing. The Alabama School for the Deaf seemed to like it.
All that in mind, I decided it was time to move on for round three; the iPad.
I had just learned a fair bit of C++ on my Bigfoot project, and I worked with OpenGL as a teen, so I hit the books for a refresher, drafted a program architecture with the hindsight gained from the Java prototype (and more ambitious specs!) and got to work. It was also necessary to voice all the words - I had a list of about 1300 - so I borrowed my friend's microphone and it occurs to me I still need to give it back.
I worked on production from March to May (task switching between that and school work) and this part was, by a mile, the most fun thing ever. I decided it was my "pilot project" after reading an article here on Gamasutra recommending folks do such a thing. It's my first "published" game project after several experimental games, and don't see it as my magnum opus or anything, so I let myself go a little nuts with it.
I pulled a story seed of mine off the shelf about Frank Hank, and old war hero, who's taken to the future by a hippy city ("Portville") who needs help fending off an invading neighbor. The backstory is that aliens are arriving, and the different people's reactions have led to war; Portville wants to preemptively surrender while the enemy was to mine the landing site with nukes.
Frank Hank's pleas for everyone to just calm down and try to make a good impression fall on deaf ears. While they're fighting, the alien decides to land elsewhere and goes off on a road trip to see America while everyone wets themselves.
I wanted a very small scale feel to everything, close in, with a very unprofessional military.
So this 22nd century world is one where people live in city-states, our heros being from Portville and nearby Umatilla.
The tie guys in the above shot are inspired by the Lexington Militiaman statue, and the serious army dude is then a "pro" militia who "trains every weekend". The tanks are also said to be made of "car parts and paper mache". That's Portville's ad-hoc army.
The enemy, on the other hand, has waves and waves of death robots! Here's a little more character art:
I'll never do another project this way again. My drawing was very rusty and it took a long time to draw each of these, requiring multiple attempts. That's the third completed Bigfoot drawing and the second of the mayor. For whatever reason I decided to do the music myself as well (example) and look forward to using this project to show I'm serious about developing so I can find people who know what they're doing in these departments.
As a last point, I decided to go for the 20 meg limit.
3G iPads (and iPhones which I shall support later) will not download files bigger than 20 megs. Another spell program boasted that since it had "over 500 words" it had to be downloaded over wifi. This smelled like a challenge to me and decided I had to slip under the cap with my 1300 words, handful of songs and line art.
The words were easy; some compression fit them into 13 megs. The music was a little trickier but 32 kbps mono MP3 worked dandy and you can't sound too well on that iPad speaker anyway.
The line art, however, was trickier. Compression using JPEG is a big no and I ought not need to explain why here. PNG and GIF, when compressed with off-the-shelf tools like GIMP introduce aliasing.
So I made an ad-hoc format where the color channels were indexed to 8 bit and the alpha was stored in a second (not interlaced) layer packed 4 bits per pixel, so that I can have both indexing and aliasing and so that the zip compressor is fed large blocks of contiguous data.
This worked super effectively as long as I was using solid color line art as above and beat PNG, so I was very happy with that. The final result was a 16 meg app, allowing the app into the 3G store.
There's so much more to this. Writing the turn taking machine was an adventure. It's able to play quite a lively game. I could go on all day, but I think I'm done.
Looking to the future, I'll probably do a different project after class this summer, possibly rejoin with my artist friend and a proper musician. But Spell Tanks is decently expandable. I'd like to release an update to add more stories, make a number of revisements and possibly add more words as an in-app purchase.
In the meantime, I'm reviewing how to "market" apps. It's all a learning experience and, worst case scenario, it's something in my portfolio - anyone in Poland need a hand?
I'll update this with a link when it goes online.