I’m happy to announce that in response to strong interest from teachers eager to implement Spanish School Bus into their curriculums, we have released an Education Edition of the app. The Education Edition is essentially the same as the free version, except all content is unlocked right away, without the need for any in-app purchase. By charging up-front for the fully-unlocked app, we enable teachers to take advantage of Apple’s Volume Purchase Program, which doesn’t extend to in-app purchases. Hopefully this new version will mean that more and more students get to learn with the help of Spanish School Bus. If you are a Spanish teacher looking for a fun and engaging way to boost your students’ vocabulary skills, please check out Spanish School Bus – Education Edition today!
Yikes, having a couple of kids has really sapped my (poor to begin with) ability to post news to the site in a timely manner, because Spanish School Bus, my second collaboration with the terrific children’s publisher Chungaboo, has been out for months! It has even enjoyed a decent level of success, with thousands of active players worldwide and sustained Top-200 “What’s Hot” status in the U.S. iOS App Store (in the Card Games category) for over three months now.
But better late than never…to wit: go download “Spanish School Bus!” It’s free (there is an in-app purchase to unlock the entire game), it’s fun, and it’s available on the iOS App Store, Google Play, and Amazon Appstore.
Last weekend, Glitch Games (creators of the popular Forever Lost adventure game series) hosted a 48-hour Game Jam just for Corona SDK developers called “GIGJam48.” I’m happy to say that I was a participant in the jam, and wanted to write a sort of “post-mortem” for my experience with the event.
Game Jams are “hackathon”-style events where developers are given a topic or set of specific limitations, and tasked with creating an original game that adheres to those limitations in a short period of time – in this case, 48 hours. On any given week or month, it’s easy to find somebody somewhere hosting one of these events — (Ludlum Dare is an industry stalwart, and the #1GAM (“One Game a Month”) project has really picked up steam this year — but game jams specifically for the Corona community are still pretty rare, and it was exciting to see one put together by a team like Glitch, who are big players in the Coronasphere. Their open-source libraries are very popular with a lot of Corona devs, and I think it’s safe to say that most of us are jealous of the success they’ve seen with “Forever Lost.”
Luckily, GIGJam was running on UK time, which meant that instead of receiving the jam’s theme (“the elements”) at midnight on Friday, the theme was announced at 7pm Friday night in NYC. I did very little actual coding on Friday night – I brainstormed and laid some groundwork that was applicable no matter what form my game took (i.e. making 118 audio files of a robot voice reading element names). From the start, I decided that I wanted to avoid interpreting “elements” to mean “earth, fire, wind, and water” but rather as chemical elements from the periodic table. This was partly to help make my game stand out from the pack, and partly because it gave me a broader set of raw material to work with (hey, if you can create everything in the whole world out of these elements, making a simple video game should be easy, right?!). Part of my Friday night preparation was to create a lua table that organized all the data for all 118 elements – something that was invaluable as I experimented with different game ideas on Saturday. (You can view that table here if you’re so inclined.) And I went to bed at a semi-reasonable time Friday night, with a head full of ideas, a hard drive full of mp3s and Lua tables, and a title that I knew I liked: “Elementropy,” which is a mixture of the words “element” and “entropy.” One definition of entropy is “lack of order or predictability; gradual decline into disorder,” which is a pretty good description of the last time I played “Pac-Man.” I was clearly inspired.
I have to admit, my commitment to seeing this thing through was not as steady as I’d have liked — my wife and I are expecting twins later this month, and the weekends are often busy preparing for their imminent arrival, so I didn’t have the luxury of retreating to some isolated corner for a full 48 hours. My wife was beyond understanding, though, and graciously allowed me to zone out at the computer for hours when I probably should have been baby-proofing the apartment or something (thanks, Leslie!). But on more than one occasion I considered packing it in, thinking that there was no way I’d have something presentable by Sunday night. This was especially true on Saturday, when my ideas were running rampant without any clear winner taking hold. At one point, I was building a quiz-style game to see if you could match an element’s symbol with it’s name — but I scrapped that because it felt too simple…and an “edutainment” title didn’t seem very “game jam-y” to me. Then I was considering some sort of “Magic: The Gathering”-style card game where each element was represented by a card, with combat stats pulled from data like atomic weight. I still think that second one is a pretty cool idea, but since I never actually played any card trading games as a kid, I didn’t know where to begin implementing it! At times I felt lost, and very nearly threw in the towel so that I could launder more baby onesies. But inevitably, after a 60- or 90-minute break, I’d be back at the laptop.
By Saturday night I was hard at work building a game that resembles my final product aesthetically, but that worked in a vastly different way. Element “bubbles” would drop from the sky using Corona’s physics engine and stick to the first other element they touched, sort of like a chemical compound. The idea was that as your compound grows, you’d need to be careful to keep it balanced so that it doesn’t fall off the platform it sits on, at which point the game would be over. The bigger the compound you create, the higher your score. This idea is workable, and it was fun to watch the physics engine create a “World of Goo”-style compound that would jiggle and stretch every time a new element was added. But ultimately I didn’t have enough time to fine-tune certain aspects that would make it playable: I was able to make it waaaay too hard to build a compound bigger than 3 or 4 elements successfully, and I was able to make it so easy that it became a challenge to make the compound fall off the platform at all, but I was having trouble finding a middle-ground. And even though I had a working “camera” that could track any display object seamlessly as it moved through virtual space, there were maddening logistical concerns that presented themselves: as the compound grew, how would the user keep an eye on lower levels of their compound, that could fall off the platform without a visual warning? The solution was probably to zoom the camera out as the compound grows, but with less than 24 hours to go, I didn’t have sufficient time to make that work. Zooming is possible using Box2D physics, but it’s not easy to make it play nice, and I didn’t have tons of time to teach myself. I went to bed very late on Saturday night feeling discouraged and unsure if I’d be submitting anything.
On Sunday morning I woke up and started playing with my code. I mean that quite literally – I was modifying code piece by piece, a bit aimlessly, trying it out in the simulator, and seeing if anything grabbed my fancy. At some point I ended up adding a touch listener to the element bubbles that allowed me to fling them around the screen, and into one another. “Hey, that was fun!” It also reminded me of Puk, yet another Corona-made game that I’m quite fond of. With that bit of inspiration, I set about building a single-screen playing field (goodbye, camera management!) not unlike the kind seen in Puk. I also recycled some abandoned graphics from that “edutainment” version of the game I was working on the day before to create a target zone that resembles a Scrabble tile. An arcade-style game! Eureka! By the time this all really started to gel, I was only 3 or 4 hours away from the submission deadline, but it’s amazing what an impending deadline can do to focus your mind. In no time I’d created a rough level progression system that begins with just one element bubble on the screen, and grows that number by one each time you clear the screen. As the number of bubbles increases, gameplay becomes more difficult because your score diminishes if you hit the target with the wrong element. To keep things varied, each element’s density is determined by it’s actual real-life atomic density, resulting in some bubbles that zip across the screen with barely a touch, and others that require constant force to move up the screen (this was easy to implement because of my Friday night prep work, translating the periodic table into a Lua table). I implemented a game clock so that the game doesn’t run on endlessly — and rewarded players for hitting the target correctly by adding a few seconds to the clock in addition to increasing their score. I quickly implemented a rudimentary scoring system where the player’s score is increased by the target element’s atomic number. Holy crap, I think I’ve made a game here!With just over an hour left before the submission deadline, I had a game that felt like a game, and that had a clear beginning, middle, and end. But it needed a little window dressing. When the game ended, it just ended. No bells or whistles, no “post-game report.” It also had no introduction or menu screen. With the clock running, I only had time to implement one of these elements, and I opted to build a menu screen — my post-game report would have to make do with a simple native system alert. But in just a few minutes I was able to whip up a decent-looking menu page that fits nicely with the feel of the game, as element bubbles are tossed across the screen randomly. I even had time to make a quick “how to play” screen, so that the judges wouldn’t be left to their own devices. I’m bummed about the lack of a nice-looking post-game report, but I think under the circumstances I made the right call. I put in a quick 10-minute gameplay test on an actual device, zipped up my project folder and uploaded it to the Jam’s organizers. Success!
So now that I’ve had time to sleep on it, how do I feel about my GIGJam experience? Most of all, I’m just really glad that I stuck it through and kept working until I had something to submit. It would have been so easy to assume that it wasn’t going to happen and give up. But I think that’s the point of a Game Jam: it’s not about making something perfect, it’s just about making something. And hey — I think I’ve actually made something that is decently fun to play. I may even put a little extra polish on it and send it to the app stores. I think it deserves a place there. And I definitely learned (or re-learned) a thing or two about the value of placing constraints on yourself. I’ve got a couple of game projects I’ve been kicking around for months that probably have more potential than “Elementropy,” but because I don’t have any deadlines lurking for them, I continue to tinker, and tinker, and tinker…so that the damn things are never actually finished. But in just 48 hours, because I had to make fast and hard choices about what was possible, I managed to create something that is very nearly ready for the App Store. There’s a valuable lesson there. I think it’s time to start setting some limitations and real constraints on my other projects, lest they turn into endless exercises with no finish line.
But perhaps most importantly, I had a lot of fun this weekend! I’d like to extend my sincere thanks to Glitch Games for organizing the GIGJam, and I can’t wait for the next one.
Did you participate in GIGJam48? Please share your thoughts in the comments, and if your game is available for download, share a link!
I’m obviously a big fan of the Corona SDK. Thus far it’s the tool I’ve used to create all my apps. CoronaLabs’ easy-to-use software and API libraries, combined with the not-so-steep learning curve of the Lua programming language make it less daunting for new developers to jump into the game without sacrificing much flexibility (now for free!). Additionally, the SDK’s online user community has rightfully earned a reputation for being a helpful and involved bunch—even the trolls on the Corona Forums are sort of lovable in their own way. (Alex M., someday we’ll make you smile!)
In the last year, it’s been interesting to see the Corona community grow from a grassroots-style collection of independent developers communicating on forums into more of a cottage industry: there’s now a weekly podcast (CoronaGeek), occasional Corona-only Game Jams (like the upcoming 48-hour GIG Jam) and even a glossy monthly magazine, CoronaPaper.
On more than one occasion, CoronaPaper has ended interviews with developers by asking them to answer an old riddle with a Corona twist: How would they get an elephant into a refrigerator using Corona and Lua? Now I’m still a small fry in the app development game, and unlikely to get interviewed by a magazine—even though CoronaLabs recently declared me one of the three Most Interesting Developers in the Universe—but that didn’t stop me from coming up with my very own answer to this question.
And without any further ado, I’m pleased to present Operation Dumbo (temperature) Drop!
local function DumboTempDrop()
for i = #animalCrackersBox, 1, -1 do
local cracker = animalCrackersBox[i]
if cracker.shape=="bear" then
mouth:chomp(cracker) -- bears were always my favorite
elseif cracker.shape=="elephant" then
timer.performWithDelay(3600000, eatFridgeCrackers) -- we'll eat in an hour!
So, dear readers: how would YOU get an elephant into a refrigerator using Corona and Lua?
It’s shameful how long I go without putting any sort of updates here on the website. But believe it or not, it’s actually been a relatively busy few months since I launched Gordon & Li Li: Learn Animals in Mandarin back in February.
The biggest news is that I’ve been working since April with a great Austin, TX-based company called Chungaboo. Chungaboo has only been in business since this past winter, but they’ve wasted no time burning up the iBookstore charts – they’ve released more than 50 iBooks already, and have had several books reach the #1 spot in their respective categories. Even cooler, Apple used one of their iBooks in a featured graphic on the iBookstore! (Seriously, this is the next best thing to having John Malkovich ask your app where he can find Linguica.) They’re a great group of folks, and it’s been a pleasure working alongside them. I encourage you to visit their website and check out their great lineup of iBooks.
Chungaboo specifically brought me on-board to help build their first actual iPad app (as opposed to an iBook), Chungaboo Language Series. It’s shaping up to be something really special, with plenty of fun and loads of educational value. The gist of it is that the app teaches the user 60 words (with more coming soon) in six different languages, and the real highlight is a game to test your knowledge – and your reflexes! It’s sort of a cross between the classic game “Memory” and “Fruit Ninja.” I’m very proud of the work we’ve been doing, and I can’t wait to post the announcement that Chungaboo Language Series is available on the App Store. That should be happening in the next few weeks.
In addition to my work with Chungaboo, I’m about to release an update to Gordon & Li Li that features a vastly improved intro animation by Nam Doan, and I’m also working on a few other projects that I hope will soon reach a point in their development where they are worthy of a blog post. All in all, it’s shaping up to be an exciting summer – stay tuned, and thanks for visiting the site!