Jonathan Blow’s Game Programming Language Talk

Little bit blown away by Jonathan Blow’s perspective on in-lining sequential actions/ using locally scoped functions. I think small, (hopefully) methods have become deeply ingrained in my “programmer personality”, but doing it that way kind of presupposes that I can remember to call the right functions at the right time, with the right program state. Definitely agree that most bugs are the result of the program not existing in the exact state you think it is when code is run, which calling methods can contribute to.

Something to mull over, anyway.

(You can find the talk here:

Elegant Spy Game?

I have a friend (@AncetoDX, the other half of Brain Good Games), who is into the idea of making a Spy Game. However, Spy fiction is inherrently complex and subtle to a certain extent, and relies on more social mechanics like deception and inferrence than more traditionally gameified mechanics like positioning and resource management. Trying to design an elegant Spy Game seems pretty difficult for this reason, but here’s a wild shot:

Player controls a spy on a grid that enemys stalk. You move then enemies move. Enemies move and detect you if you’re within 2 spaces on their turn. Try to not be detected and deduce information from INTEL.

Walk: Move 2 spaces.
Run: Move 3 spaces, increase detection range by 1.
Sneak: (Move 1 but only adjacent enemies can see you)

Percieve: Look at a space within range and gather INTEL if there
Deduce: Wait a turn per intelligence to gain VP
Take Down: Neutralize an enemy if behind it

Blargh, seems like this sort of train of thought would lead to somthing similar to Invisible Inc. Maybe the wrong tack, need to look closer at SpyFall or The: Resistance or Werewolf or something. NOTE TO SELF: Play that game already.

Vungle vs AdMob

I decided to try two different ad providers for the android version of Stock Shock and compare their results. ( I chose these two because they seem to be two of them more popular interstitial ad providers out there for android, and interstitials seemed like they would have less of an effect on the design on the game, in theory, something like a commercial on TV. (An interstitial ad is one that takes up the full screen periodically, as opposed to a banner ad that takes up a smaller portion of the screen, often during gameplay).

Vungle exclusively provides interstitial video ads, and was extremely easy to set up in Unity (just had to register a vungle account, import their package into Unity, paste in my account identifier and call Vungle.playAd(). One downside here is that I couldn’t find a way to determine whether an ad had actually played. However there is a callback when the ad ends, (or the ad fails to play). So as a hack, I call a function one second after the ad starts and see if the Ad ended function has been called. If the ad started one second ago, and hasn’t ended yet, it probably is actually playing an ad. The reason for doing this is that if the ad HASN’T played…

I play an AdMob interstitial instead. AdMob ads were harder to set up, requiring me to manage the nuts and bolts of pre-loading an ad when the game started up, then showing the ad, and destroying it when it had been seen. However, AdMob provides a good deal more callbacks, so it is much easier to tell when an ad has failed. In hindsight, it may have been a better idea technologically to have AdMob be the default ad, and Vungle be the fallback, but I knew someone who had previously had success with Vungle so I decided to go with anecdotal evidence (:P lizard brain).

Revenue from both providers has so far been similar, but the sample size is still relatively small. For the next project (which I’m already starting to sketch out a bit!) I’ll probably have admob be the default, fall back to Vungle, and integrate AdColony as well (I’ll know more about how when I dig into it).

One Button Design

Been playing a few ketchapp apps today to check out what kind of techniques they use to make their games well suited to both the mobile platform and the app supported model.

Ad-supported model: The game lengths are usually very short, with the vast majority of “lives” taking less than a minute. It seems like having an avatar on screen is helpful for intuitively communicating the game loop mechanic. Restart button is featured prominently.

The ways that this design is influenced by monetization reminds me of coin-op arcade games. Simple to pickup and play punishingly unfair. Crucially though the player is given some small taste of success so they can see how they could have done better. (Only negative feedback is the one moment of game over)

In terms of the mobile platform, many of these games hinge on one button control schemes (either tapping or holding or both). It’s an extreme way to circumvent the imprecise input on a touchscreen device, and is pretty restrictive design-wise. On the other hand, one thing these games also have in spades is elegance, which I value highly. 🙂

Thoughts on Ads

I decided to put ads in stock shock!
On the one hand, the traditional paid games model is attractive because the deal with the customer is extremely clear. Once they have purchased the app, the developer has no other considerations other than designing a compelling experience (hard enough by itself).

On the other hand, on a platform that tends towards bite-sized experiences like mobile, it can be hard for a potential player to justify spending money on something that they may only play once or twice, especially when there are a ton of free alternatives available. On a platform with intense device diversity like Android, it can also be hard for them to know for sure whether the game will even RUN before handing over their cash.

Cons for ads
-Can be distracting/invasive
-Can cheapen the feel of the experience

Pros for ads
-Allows players to try with no risk
-Can extend with ad disabling in-app-purchase to get best of both worlds
-Less impact on game design than free-to-play model

Later posts will probably go into my experience with the app providers I’m using, further details about F2P vs Ads, and the different types of ads that can be used.