Watching videos — WWDC, Swift, POP, and grid-based games

This week has been all about learning, and specifically about watching videos to learn. Mostly because this week is Apple’s big WWDC conference. The list of developer-specific stuff they’ve announced this week is perhaps slightly larger than usual (including a new programming language called Swift — more on that later), and I have been watching a ton of talks pouring out of San Francisco in video form. (Special thanks to Apple for releasing them so expediently!)

Normally I am fairly un-enthusiastic about watching videos to learn. I’m much more of a do-er than a view-er. I’ve got to be working with the code in order to absorb a new programming language, so the Swift videos in particular have been somewhat frustrating. I did spend most of Tuesday with the OSX 10.10 and Xcode 6 betas, and Swift specifically, but after spending a lot of unnecessary time tripping over syntax, grammar, (and copious crashes) decided to go back to videos (and getting some actual work done).

My impressions of Swift are pretty mixed. On one hand, I love that they’re trying to make a language that is simultaneously more accessible and also less prone to bugs. That is as fantastic and commendable as it is self-serving. On the other hand, I’m not yet convinced it’s going to be an instant switch for me. I had lots of little niggling problems with the syntax. For example, I’m not sure the benefit of declaring strongly typed variables using generic keywords (var and let). In the c-based syntax languages I know and love, you declare the variable with the type. So in swift:

var view = UIView()

vs Objective-C:

UIView *view = [UIView new];

Now, the first example isn’t ambiguous or anything, but how about this one:

var views = UIView[]()

This is how you declare an array of UIView objects. I do like that it will always (and can ONLY) be an array filled with UIView objects, but I do think it’d be incredibly easy to miss the brackets. Overall though, most of the problems I had weren’t with the language itself, but with the tools, which I think are just not ready yet. I mostly agree with Austin Zheng when he says (from the comments of his 2048 port to Swift): “Xcode is as unstable as always. The background compiler/code analyzer kept on crashing and restarting itself. Xcode was functional enough to allow the project to be brought to some state of completion. The debugger is horribly broken though.”

All my video learning this week actually started on Monday (while waiting for the WWDC keynote to start) with watching Facebook’s video on building the paper app. This is also the one in which they announced their open-source animation framework pop. (And was recommended to me to learn about why it might be useful.) At an hour and a half, it’s a long video, but worth watching not just for the pop stuff (which is absolutely interesting, particularly if you already use Core Animation in your code), but for a multitude of other insights into how Facebook writes it’s apps. (There is some seriously interesting iOS engineering going on over there, something I did not expect given their history and track record, particularly in the quality department.)

Finally, yesterday (after fully maxing out on more WWDC videos), I randomly stumbled onto a talk about SpriteKit and grid-based games. The first half of the talk, by Scott Kim goes into great detail about several different kinds of grid-based puzzle games (on iOS specifically). He more or less breaks the talk into categories organized by gesture, which I think is an arbitrary distinction. (I’ve talked before about how I think the best games provide both tap and drag control schemes that are not incompatible.) Otherwise I think he does a really great job with the topic, and while it’s nowhere near comprehensive, it’s a very nice introduction / survey of the topic. This is very close to a talk that I’ve been thinking seriously about writing. (I first mentioned this idea in a previous blog post.) But since I haven’t (yet) written my taxonomy of grid-based games, Kim’s talk is, at the moment, much better than mine.

Quality vs Quantity

Advisable or not, I clicked through this morning from twitter to an article titled Apple Is “Nearly Invisible” On GitHub, But Does It Matter?. As I mentioned in reply, I think there’s some hyperbole there. Specifically, the numbers are being interpreted in a way that spins the article, but I did find the numbers interesting!

I really just wanted to comment longer-form on this one quote from the article:

41% of Android developers said they finish apps in one month or less, while only 36% of iOS and 34% of Windows Phone devs said they could achieve as quickly a turnaround

Now, if it took more effort to make exactly the same application for iOS than I would see that as a problem. But in my experience (and I do have knowledge of several parallel projects for both platforms) the effort is pretty similar. (Some things on either platform take longer on one or the other, but I think it generally averages out.) Now, as any software developer knows, you can either make something good, or you can make something fast… So given that data point, one interpretation of the quote above, at the risk of maybe pissing off some folks, would be that this generally speaks to the quality of the average Android application. Essentially (and again, this is just one possible interpretation), iOS applications might take longer as a trend because more effort is put into making them. Or alternatively, possibly they are just worth more to whoever is funding their development.

Apple Made For iPhone (MFI) Game Controllers

The first two MFi game controllers have been released.

The Moga Ace Power, as well as the Logitech Powershell. The two controllers are similar but the Logitech offering does not include analog sticks. From the pictures that are available, the Logitech product may actually be higher quality, but I ordered the Moga one anyway, simply because I like the look of it a bit better, and because I want the analog sticks.

It’s worth noting that I do a lot more gaming on my iPad than on my phone, so I’m not sure how much I’ll use this other than for testing. I’m definitely very excited for a bluetooth connected version when that appears.

I mentioned on twitter that I think this is a big deal. If I’m right, we’ll all know it in a year or two, but I think Apple will continue to eat the big guys’ lunch in the gaming industry, and the relatively quiet announcement that apple was introducing a controller API in iOS 7 was essential for them to more directly compete with Microsoft, Sony and Nintendo. Obviously, these controllers, priced at $99 each are not (yet) cheap enough to be mass market, but of course that’s also pretty typical of Apple products in general, so that may not matter. My prediction is that we’ll just see more and more of these hit the market, and the only indication that Apple products are continuing their domination of the gaming industry will be their slow proliferation into the market. A lot is talked about the competition between Apple’s app store and the Google Play store, but hardly anyone talks (except maybe abstractly, or in passing) about how the app store is competing with the console market. (OK, yes, some people are definitely talking about it, but it doesn’t seem like it’s in the public consciousness yet.)

Pro Tip: Do not order directly from Moga, as you’ll pay a minimum of $5 shipping, and you can order directly from Apple for the same price with free shipping. Also, at least the Moga is already showing up in some physical Apple stores, so you could just head out to one of those, or check availability online and then head out to one of those.

(Original news via GameIndustry International, but I also saw this on TA.)

Unicorn app icons

This is totally random, but like a week ago I was (as I often am) just looking at random games in the app store. This particular day, I was struck by how many games (several in a row, completely by coincidence) featured Unicorns in their app icon. Here’s a random sampling:

Wondercorn: A Unicorn's Magical Journey to Pleasure Mountain by Dana Bissett

Magical Unicorn Expo Pro by Blair Wheadon

An Iron Unicorn vs Attack Robots Game

Fairy Unicorn Race : The quest for the mountain of the sun



Amazing Princess Unicorn Kingdom Adventures

A Unicorn Fantasy - A Fairy Kingdom Castle Adventure Game

You’ll note the stylistic differences. (I far prefer the hand-drawn ones to the photorealistic ones.) Just a reminder that I was not actually looking or searching for unicorn games when I discovered these. Seriously. (Yes it’s possible I spend too much time browsing the latest game releases on app shopper.) No, that came later, after I realized this was such a rampant trend.

unicorn_rush It was then that I discovered my friend / developer acquaintance Ken (of Mind Juice Media) had released his game Unicorn Rush. (I’ve met him now a couple of times at 360 iDev and played this one a little over two years ago. Looks like it’s been out for over half that time!)

Also that the “unicorn genre” is so saturated as to include not just one, but several zombie/unicorn crossover titles!


A Zombie Unicorn Story

Unicorn Zombie Apocalypse PRO

I also discovered that to try and be “inclusive” and show a representative sampling of unicorn app icons would not only be foolish, but probably take me days to compile. There are literally dozens if not hundreds of apps with unicorn icons. Of course, it’s possible, maybe even likely that most or all of these titles are just trying desperately to capitalize on the success of Robot Unicorn Attack, a game so successful that it not only has a freemium sequel, but also spawned “Heavy Metal” and “Christmas” editions:

Robot Unicorn Attack

Robot Unicorn Attack 2

Robot Unicorn Attack Heavy Metal Edition

Robot Unicorn Attack Christmas Edition

The earliest unicorn app store experience I can remember was discovering that Minnesota’s own Mono had created an app that allowed you to make yourself into a unicorn, called Younicorn. That was back at the end of ’09, and I remember the link getting passed around the office, and some brief (but lively!) discussion about how easy it would have been to make, and yet, none of us thought of it!


Game Design: For Science

zooniverseSo, I’ve been following the Zooniverse projects for a while now, ever since the retired “Galaxy Zoo” project. For those not familiar, the Zooniverse projects (you can see a list of current projects on that link to their homepage) are basically crowdsourcing science. Each one takes a relatively focused (and menial) task that would take a researcher or research team years to complete, and makes a pretty simple web interface that allows “citizen scientists” to participate. The tasks all appear to be (at least from my limited experience — I’ve only done two or three of them) mostly image recognition of one kind or another. Interestingly, in the Zooniverse Reddit AMA (ask me anything) this afternoon, I learned that one of their retired projects was used to successfully train a computer to perform the tasks that the humans were completing, and thus, the project is no longer needed. That is some pretty cool computer SCIENCE.

Until today, I hadn’t given much thought into the people behind Zooniverse. But when I did think about it, I sort of assumed it was like rocket science — in other words, impossibly hard tech-wizardry. Reading the AMA where the team answered questions about quite a lot of their projects and process was for me a humanizing experience, striking home for me that, much as scientists are real people, (not superhumans), so too are the people who make really amazing software that advances science (also not superhumans).

As an aside, I think I have sort of an inferiority complex when it comes to “real” scientists. Not that I don’t know a few here and there, I do have a healthy smattering of PHDs in my facebook friend feed, (who for some reason don’t count). I think of “real science” as this thing that you have to be WAY smarter than me to do. When, in reality — or anyway my newly rationalized version of reality — I am now trying to internalize the idea that much of scientific discovery is not “breakthroughs” and genius-level eureka moments, but rather made up of tiny incremental observations and discoveries. Maybe this putting scientists on a pedestal comes from reading too much science fiction where there is a lot of hand-waving around what happens when the big breakthroughs are made. (This is actually something I do occasionally fault science fiction for, one of my pet peeves is when some near-future science fiction novel’s plot hinges on one or more breakthroughs that completely disrupt modern society, yet we’ve never heard of them before.)

Anyway, the Zooniverse projects aren’t quite gamefied, at least not in a competitive sort of way. I’ve “helped” a bit with a couple of the latest ones, and some of them give you some nice stats about how many images you’ve helped classify, and that sort of thing, which could be used to create a leaderboard or achievements, but the messaging around all the projects is much more about how you are helping further science than about how you can score more points or get the next gold star.

Screen Shot 2013-11-04 at 11.57.37 PMWhich brings me to my next example of crowdsourced science, the far more gamefied “puzzle” game, Phylo. Phylo is played by moving squares around the gameboard, matching their colors vertically, and trying to optimize (or eliminate) empty space between them horizontally. The link between science and what you are doing in Phylo is a bit harder to grasp than in the Zooniverse projects, but as near as I can tell, the colored squares represent genetic sequences of DNA or RNA. From the project’s about page: “By taking data which has already been aligned by a heuristic algorithm, we allow the user to optimize where the algorithm may have failed.” The game is interesting at least, to the puzzle gamer in me, if not actually fun (it would probably be considered fun to some people, I can’t quite decide why I don’t think it’s fun, even though it’s got that “just one more game” draw for me), and they have packaged up the game with a leaderboard and “levels” (that all represent sequences that need matching). There is even an end-game condition, whereby you have to meet the “par” set by the computer algorithms before you can complete each game.

So back to my observation that scientists, or at least the computer programmers who help scientists are not superhuman, and my final link-observation that much of the Zooniverse code is up on github. This means that, if I had the time to spare and inclination (and an image cataloging project I wanted to crowd-source) I could probably get a pretty decent head start by checking out what they’ve already put together. That observation led to my thinking about whether the power of lots of humans playing could be harnessed to create the ultimate video game. A kind of crowd-sourced game design. I imagine a sort of branching-path puzzle game where at the root node, the game is in its simplest form, (and probably least creative). Then, you give the player a choice of whether they want x feature, or y feature. You measure how many people chose x vs y, and you make games x and y also, so you can measure how long players “stick with” both. (One assumption here is that a “sticky” game is good game design.) You could build this incrementally, so maybe in the beginning only a few branches are “built out”, just to have some content, and then you keep building branches, ideally in direct response to additional user feedback or surveying. Wouldn’t that be fun? The problem is that of course you need to generate the “branch ideas” from somewhere. Maybe you also let the players contribute ideas that also get voted on. (A sort of “other” survey answer.) Dunno, it was just a thought. Might be fun tho.

Emotiv Kickstarter Ends This Weekend

20130914-083342.jpgI just got my reminder email that the Kickstarter for the Emotiv Insight is ending in 3 days (38 hours now). Just like the Ouya, Oculus, and Google Glass, I’m deciding to pass. Not because I don’t believe in the products, but because I think it is too soon. These first-run products are too limited. They are all, in my opinion, important evolutionary steps in their particular niche of the human tech tree, but none meet or exceed what I imagine to be the potential inherent in their design.

Kickstarter has been amazing for getting these revolutionary products (sans Google Glass) into the hands of consumers without needing the infinite pocketbooks of, say, google. I do think human trials are an important fist step in the process, but only google really has the capability to do an 8,000 person beta test. So the other products, even though nobody knows really what they’re for, or how they will be used, have to be dressed up as a finished product. (I guess the Ouya is the outlier here, it’s a perfectly viable product already, just needs more games, IMO. It’s also not doing anything particularly revolutionary.)

Puzzle Up, async tetromino action

I spent some time this morning writing up some feedback for a relatively new game in the app store that seemed at first like it would definitely be right up my alley. It’s called Puzzle Up, and is essentially an async version of a game where you fit a given set of tetrominos into an empty bunch of squares on the gameboard. I’ve played a few different versions of this type of game over the years, I think Zentomino was the first one I played (it hit the app store in August 2010, and was by the makers of a very popular Tangrams app at the time, TanZen), followed shortly thereafter by Doodle Fit. (Which must have done well, because they eventually made a Doodle Fit 2.)

Anyway, here’s what I wrote in a TouchArcade forum post about Puzzle Up:

I don’t feel like I have a good enough sense of what is transpiring on the other end of the game. I would like some kind of replay of their fumbling through the puzzle I sent them. (Ideally sped up, so I don’t have to sit through a seven minute animation if they took the whole time.) I know this would be difficult, but it would really help, IMO. At the very least, I think there should be an intersticial view before I start the puzzle they sent me that tells me how they did in the puzzle I sent them. There may be this screen already, but it doesn’t include the puzzle I sent, (I don’t think), and only includes their time.

Another thing is that, after a game ends, it seems like we just start another game right away, which is super confusing, and leaves me with the impression that this thing just goes on forever, and why would I continue to play it? At the very least, the app should definitely ask you if you want a rematch with the other player, maybe giving you some stats on that screen about your plays against that player. (Check out the game over screen in Lost Cities for an incredibly well done example of this.)

I’m always a big fan of stats in games, so I’d love to see more of them in general. The gamecenter leaderboard for number of victories is a good start.

In general, I think this could be a really fun game with a bit more polish. It’s like an async version of Zentomino or Doodle Fit.

I hope that wasn’t too harsh. The developer was looking for feedback. I do think showing your opponent’s turn is an important part of any asynchronous game experience, and you even see it ignored in some pass and play game modes (if there’s no hidden information, this may be excusable, because everyone could be looking on while you take your turns, but I’ve seen this problem in games with hidden information too).

As I said, Puzzle Up does have potential, but it feels like slapping asynchronous single player onto a game that pretty much already exists. Incidentally, this is pretty much what Zinga did with their recent release Gems With Friends. (Essentially, it’s an async version of TripleTown.) Puzzle Up even has some similarities to Gems With Friends in that the game is split into 3 “turns”, with each turn resulting in a score. You sum total of all three turns is your score for the game, and whoever has the highest score at the end wins.

There’s one other game that deserves a repeat mention here, and that’s Dawn of Play’s fabulous Dream of Pixels. Dream of Pixels also has a game mode similar to this style of gameplay, (it’s called puzzle mode), but the difference is that you’re still constrained by Dream of Pixel’s primary game mechanics, (which are out of scope for this rant, so I’ll let it suffice to say that you should check it out if you haven’t already). This is so much more satisfying to me, because it doesn’t feel like a game I’ve played before.

I’m neck-deep in Apple’s GameKit code to support turn-based asyncronous play in my next game, so all of this thinking is definitely relevant to what I’m doing these days.

Dream of Pixels

I have been remis on here not writing about a game I got to help beta test called Dream of Pixels. It’s been available on the app store for exactly a week today, and has received some amazing reviews and press, over at TouchArcade, as well as some other crazy prestigious places like Kotaku and IGN. The game’s designer, Žiga contacted me months ago to say he liked Go-Tetris, and would I like to test his latest Tetris-inspired game. Of course I said yes, and I was VERY pleasantly surprised at how great it is. We’ve exchanged more than a few game recommendations in the time since, and it’s clear we share very similar game tastes. I’ll admit to a bit of jealousy at how great it looks and feels to play. It’s a brilliant game that turns Tetris on its head and does something different with our friends the tetrominos.

Dream of Pixels is an absolutely fantastic game, and if you buy one tetris-inspired game this year, it should be Dream of Pixels. If you have room for two Tetris-inspired games, then I also recommend Oppo-Citrus.

360iDev 2012 & Game Jams in general

A couple of weeks ago, I went to 360iDev, an iPhone/iOS conference that has been going on for a few years now, devoted entirely to iPhone (and now iPad) development. I actually went last year too, and that year had been to WWDC only a few months before. It was my first time at either conference, and I got a lot out of both of them. But the fact that 360iDev can even hold a candle to the flame that is Apple’s flagship developer conference (WWDC) speaks volumes about how great it is. This year, I elected to go to GDC instead of WWDC, but I still wanted to go to a big tech-focused conference, so I went to 360iDev.

Both years at 360iDev, I took part in the 360iDev Game Jam. (I also wrote a blog post about the game I made last year, which I then called ColorWheel.) This year, I teamed up with a guy named Levi that I’d never met or worked with before, we managed to make a pretty cool (albiet very simple) little puzzle game in the allotted 12 hours. I’ve tentatively started calling it Cloud Growth. I just finished a write-up of Cloud Growth (UPDATE: I’ve recovered the text from the game jam site, which no longer exists, and posted it below this post.), including some more details about the game’s development over on the Game Jam website. The theme of the game jam this year was “growth”, and our game heavily features clouds, so the naming was not particularly creative. The mechanics aren’t particularly creative either, but I can’t remember playing a game with them before, so I do want to polish this little prototype up, and release it at some point.

Anyway, Game jams are awesome. If you are interested in making games I would highly recommend the experience. But don’t take my word for it! At 360iDev, I attended a talk by Phil Hassey, an indie game developer who made a name for himself with a fantastic RTS called Galcon. Phil’s talk was mostly a postmortem for Galcon and his latest game Dynamite Jack, but he must have plugged Ludum Dare about twenty times. (He helps run the thing.) Ludum Dare actually happens bi-monthly. I was going to participate in August, but spent Friday evening working on a project to make games easier for me to write instead. (I will probably talk more about that project here on this blog eventually.)

It feels these days like there’s a game jam every weekend. Last weekend, for example, there was a game jam devoted to making games in the universe of Adventure Time, the TV show. (If I hadn’t been exhausted from a full week of 360iDev, and my lack of sleep that Tuesday night, I’d have been seriously tempted to take part, because Adventure Time is awesome.) A few months back there was a game jam where the participants were supposed to create games inspired by a twitter parody (@petermolydeux) of the relatively famous game creator/producer, Peter Molyneux. I think Peter Molyneux even attended the event!

Previously, I’ve also participated in the Global Game Jam. I can’t wait to do more of them.

Cloud Growth is a simple action puzzle game collaboration between Martin Grider (@livingtech), and Levi Brown, (@levigroker, blog).

We did about ten or twenty minutes of brainstorming, and eventually decided on this concept where we are placing simple clouds on a grid of open sky. There is a cloud “queue” in the upper right hand corner of the screen, so you know what the next one to be placed will be. Clouds have different colors, and if two clouds of the same color are placed next to one another, they will grow into a square of one size larger than the largest sized cloud of the two. You get points for placing clouds, and more points for growing clouds.

Martin wrote all of the game logic and most of the view controller code. Part of Martin’s enthusiasm for this particular concept was that he wanted to continue work on a generic GameModel object he’d been writing that abstracts away the “game grid”, as well as touch interactions on that grid. This was a resounding success, and much code was added to that library.

Levi did all the artwork and animations. These screenshots do not adequately capture the awesomeness of those animations. When a cloud is placed, for example, there is a really great bouncing effect, that is just fun to see. A good portion of Levi’s time in the wee hours of the morning was spent ensuring that the lightening bolts (currently shown when clouds reach the 3rd largest size), begin at the cloud of their origin, and end at the lightening tower at the bottom of the screen.

Future ideas:
* Part of the original concept was that the clouds would get removed from the gameboard after a certain threshold, but as the clouds cannot currently grow more than three times, that made the game far too easy. When code is written for larger growth, this idea will be revisited.
* Some kind of lightening counter would be fun, maybe with progressively harder levels as the counter is filled.