Understanding the Navigation Stack

This morning I wrote about a bug in Corgi Corral that I’d been dealing with for a few months. The act of writing about it was apparently just what my brain needed in order to sort it out, and as it happens, it was a real rookie mistake! I’m hoping that by explaining the problem (and solution), I might help other beginners like me.

I started my previous post by explaining Corgi Corral’s navigation stack:

Main Menu –> Scene Selection –> GameViewController –> Score Summary

Basically, the game’s view controllers should always be in that order. From the main menu, you progress to a level selection screen, then to the game itself, and finally to a summary of your score. From there, you should only move backwards through the stack. In other words, the “retry level” button should pop the score summary off the stack and move back down to the game controller. The “choose a different level” button should pop two view controllers off the stack and go all the way back to the Scene Selection screen.

Here’s where I went wrong: in my Storyboard, on the Score Summary screen, I accidentally hooked up the “choose a different level” button to a “Show” segue instead of an “unwind” segue. This caused the following to happen:

Main Menu -> Scene Selection -> GameViewController -> Score Summary -> Scene Selection

In other words, a brand new “Scene Selection” controller was pushed onto the stack. The problem was compounded each time I selected a new level:

Main Menu -> Scene Selection -> GameViewController -> Score Summary -> Scene Selection -> GameViewController -> Score Summary -> Scene Selection -> GameViewController

You can see how after playing a few games, this got way out of hand. There were multiple GameViewControllers in existence that still had references to game scenes. The memory growth, however, was somehow still negligible despite all of these duplicates.

So how did I diagnose the problem? By using simple print debugging. In the viewWillAppear method of each view controller I printed out the entire navigation stack like so: print(navigationController.viewControllers). Then I watched the output as I played a few games. As soon as I saw new controllers being added to the stack, I knew I was in trouble.

The solution was to make sure I was using an unwind segue to move backwards through the stack after the user selected an option from the Score Summary screen.

I know, I know…dumbest mistake ever. But now at least I know that there will only ever be four view controllers in existence at one time in my app. I hope someone can learn from this!

HELP! Squash a Bug, Save a Corgi [Updated]

UPDATED 3-12-16, 2:04PM CST:  I’ve actually been trying to figure out this bug for months, and, of course, as soon as I posted about it I figured it out. :D As it turns out, I made a real rookie mistake and messed up my Storyboard segues. I’m going to write a follow-up post explaining what happened…hopefully it will benefit other beginners like me!

Ok y’all, I’ve finally run into a bug that I can’t figure out, which means: the fate of Corgi Corral is in your hands. I’m posting here first, but if I don’t get a response, I’ll try Stack Overflow.

The Bug

Corgi Corral’s navigation stack is set up in a Storyboard and works like this:
Main Menu –> Scene Selection –> GameViewController –> Score Summary

From the Score Summary, the player can either retry the current scene, pick another scene, or return to the main menu.

The bug, which causes the app to slow to a stutter but not crash, occurs when I play four games in a row and then try to start a fifth. So, like this:

  1. Play Level 1 – all good, game plays at 60fps
  2. Play Level 4 – also good, game plays at 60fps
  3. Play Level 3 – things are still great, 60fps
  4. Play Level 2 – excellent performance here as well, 60fps
  5. Play Level 1 — when I return to Level 1, the segue between the Scene Selection screen and the GameViewController suddenly slows to a snail’s pace, the game’s framerate drops to 1fps, activity on all threads plummets, and the overall CPU usage drops to just about nothing. The Level1.sks file seems to load properly, everything is just slow.

The bug also occurs if I retry one of the scenes (so like: 2, 3, 1, 1, 2) instead of playing four different ones.

Since a crash never actually occurs, I paused execution right after the slowdown and took this screenshot of the debug navigator (click to enlarge):

debug navigator

However, I can’t make any sense of it. All I know is that I don’t seem to have a memory leak.

The Trace

I opened up the Time Profiler and recorded myself playing four games and then starting a fifth. I saved the trace, which you can download from Dropbox. (Note: it’s a 50MB file, since it took me about 6 minutes to reach the bug). The problem occurs right around the 5:15 timestamp.

Theories

I’m not experienced enough to be able to debug a problem like this. But I’m guess it has something to do with threading? Or texture loading? Or both? All of my scenes are loaded from .sks files. All of my sprite images are in the asset catalog (which, from what I understand, is necessary for app thinning and should behave like a texture atlas as of iOS 9). I’m not doing any on-demand resource loading. I don’t have any code related to Grand Central Dispatch. The game is accelerometer-controlled, so CPU-usage is naturally high during playtime. When I try to start that fifth game though, it’s like the accelerometer just gives up. Am I hitting some kind of system limit?

Comments are open, because I’m desperate. I’ll update this post with any additional information requested, and also if a solution is found. Thanks in advance!

Who uses SpriteKit/SceneKit?

Apple introduced SceneKit at WWDC 2012 and SpriteKit in 2013. Both frameworks have received updates over the past 3 years and have had multiple sessions dedicated to their new capabilities. Watching at home, however, I could never tell how many people actually attended those sessions. Is anyone even using SpriteKit? It seems like the majority of iOS games are built using cross-platform game engines like Unity.

If you’re an iOS game developer, I’m hoping you won’t mind answering this quick poll (not sure if it’ll show up in RSS readers):

[poll id=”2″]

Ever since Disco Bees was released, I haven’t heard a peep about any popular games made using SpriteKit or SceneKit. The reason I’m curious about this is because I want Apple to keep working on these frameworks, but I worry that they’ll be left to languish if no one is actually using them!

Comments are open on this one; please behave yourselves.

Resizable Button Backgrounds in Xcode

Every once in awhile I discover a little feature in Xcode that I never noticed before and wonder how in the world I could have missed it. Today’s lightbulb ? moment is brought to you by: “image slicing in the Xcode asset catalog.”

See, I made this button in the shape of a dog treat:

bone_button_slicing1

I’ve been using it as the background for my “Play” button on Corgi Corral’s main menu screen. My concern was that when I localized the word “Play,” there might be a translation that caused the word to be too long for the button at the size I designed it. It would be better if the button background itself could scale its width without looking weird and stretched. That’s when I noticed the “Show slicing” button in the bottom-right corner of the asset catalog.

When you click “Show slicing,” your image appears larger and is overlaid with a button that says “Start slicing.” This is where the fun begins! ?

Slicing a button

You have three options: slice horizontally, vertically, or both. Slicing horizontally automatically preserves the end caps of the button while simultaneously creating a 1-pixel vertical slice that can either be tiled or stretched, depending on your preference.

Sliced button

After slicing the image, you’re done—there’s no “save changes” or “done slicing” button to press. When I switched back over to my Storyboard, however, my bone button was looking a little squished:

Squished bone button

To fix that, I adjusted the content insets on the button like so:

Left and right content insets set to 80

Ah, much better.

And that, my friends, was a quick tutorial on something you probably already knew about. Have a great day! ?

Follow-up: The Nuances of Online Discussion

A few weeks ago I wrote a post about how some of my favorite people on Twitter seem to be…well, avoiding Twitter…and how that made me kinda sad. This morning I was delightfully surprised to find that Myke Hurley and Casey Liss decided to discuss my post on their podcast Analog(ue).

WarGames

Boy, was it a great discussion (yes, I’m a listener, and yes, you pronounced my name right!). I think Myke may have summed up the issue best when he broke out that oft-quoted line from WarGames: “The only winning move is not to play.” I totally agree, and also find a bit of dark humor in the comparison between Twitter and Global Thermonuclear War. ;) Here exists a problem at the very intersection of technology and humanity for which there exists no decent, workable solution. Like Casey said, it’s lose-lose. As a fellow loser in this situation, let me just say that I am absolutely on their side. If the choice is between my sense of community and someone else’s overall happiness, my vote is unequivocally for the latter.

Ironically, as I listened to their conversation, I got a strange taste of what Myke and Casey’s lives must be like. For instance, I’ve never heard my own name said out loud so many times. It instantly reminded me of how shy I am, and how while in theory I would love to be a part of the “cool kids club,” I’m not even sure I could handle it. Could I even be myself? Myke and Casey said a lot of really nice things about my post (which of course made me feel good), but what if instead they had torn it apart? I would have felt horrible…and yet, that’s the kind of thing they have to deal with all the time.

With all that said, I do believe there is hope for the future of online communities. This brings me to another good post about Online Relationships by Belle Beth Cooper. Belle’s post really resonated with me because it reminded me of something I think about a lot: when an ever-increasing number of blogs and media outlets are disabling comment sections, where do decent, thoughtful people bring their discussions? I only offer readers one way to contact me on this site, and it’s via Twitter. But what if, like Belle, you no longer use Twitter (or never did in the first place)?

Belle wrote about how she enjoys my blog (Thanks!! I just added yours to my RSS reader!) but didn’t have any way to really reply to what I was saying. I loved this bit from her post:

As I wondered about this today I realised I could use my own blog to post a reply in a sense. In the same way lots of developers weigh in on community issues when they blow up, I could link to Becky’s post and write my own short reply in the form of a post on my own blog.

This feels very old-school to me; something that happened more in the early days of blogging when trackbacks were also a big deal. I wasn’t heavily involved in blogging early on, so I don’t know if this is true, it’s simply a vague feeling I have about this approach. Direct, and yet indirect, communication via blogs. Almost like writing letters to someone whose address you don’t have, and being forced to publish them in the newspaper in the hope that they will see them.

The reason I saw Belle’s post was because I keep an eye on the “Referrals” section of my WordPress stats page. Otherwise, I may have never found it. And that’s…well, sad. I actually really like the idea of back-and-forth blog responses, but I also agree that there has to be a better way.

So this is where I find hope: I think that there are a lot of very smart people who are thinking about and working on this. One of them is Christa Mrgan, co-founder of Civil Comments, a crowd-sourced, moderated comment system designed to create safe, pleasant discussion spaces.

Another is Manton Reece, who has so many insightful things to say about the future of blogging. Manton is working on a microblogging service and app and also co-hosts one of my other favorite podcasts, Core Intuition. On episode 219, around the 30-minute mark, he brings up WebMention, which is a sort of modern replacement for pingbacks that looks interesting. There is also apparently a WordPress plugin for WebMention, so I may try that out and see how it works.

There may be no perfect solutions for the myriad problems that arise in online communities, but I’m confident that there exist better solutions than what we have now. Perhaps the more we talk about it, the closer we’ll get to discovering those solutions. Here’s hoping!

App Pricing Follow-up

I received some really helpful feedback on my previous post, where I wondered aloud about the best way to monetize Corgi Corral. As a result, I have a new idea of what I’d like to do.

Basically, I’d like to include some sort of tip jar with two or three price tiers. I would offer 3 levels of the game for free, and any tip given would automatically unlock the rest and also give the player the option to play as a tri-colored corgi:

Tri-color Corgi

Here’s the tricky part: Consumable in-app purchases cannot be restored. I was curious as to how (Underscore) David Smith got around this problem with his popular fitness app Pedometer++. Pedometer++ features a 3-tiered tip jar that will disable advertisements at any tier. The tips themselves are consumable, meaning you can tip David multiple times for his work on the app. To test his system, I tipped him $1, which removed the ads. I then deleted and re-downloaded Pedometer++ and, as I thought, the ads returned without an option to restore my purchase.

That’s not a big deal for a small inconvenience like banner advertisements (and honestly, I’ll probably just tip David again because he’s awesome). However, in my case, if players pay to unlock all the levels they should really be able to restore that functionality on a new or different device.

This brings me around to a system that more closely resembles what Humble Bundle does: “Pay what you like.” In other words, you choose a one-time purchase price from 3 options, based on…well, the goodness of your heart I guess? It’s an idea that I’ve never seen implemented before in an iOS game and one that I can afford to try.

Setting up in-app purchases sounds like an enormous headache, but I’m actually more concerned about localization and how to word everything. I’m stuck on two things:

  1. What should I name the 3 price tiers? Something goofy like Corgi Fan/Corgi Lover/Corgi Wizard or more straightforward like Bronze/Silver/Gold Supporter? (or maybe something involving the word “thanks”?)
  2. What should the user-facing explanation be? I was thinking something like, “If you’re enjoying Corgi Corral, your support would be greatly appreciated. Purchasing any tier will unlock the full game.” Does that make sense?

And once I figure those two things out…do I dare try to do the translation myself? ?

Anyway, I suppose I’m getting ahead of myself. I have so much more work to do on just finishing all of the art assets that I won’t need to make these decisions for several months, probably!

App Pricing: An Internal Monologue

In case you’re new to my blog: I’m currently in the process of making my first iOS game. It’s short, casual, and is clearly made by a beginner (is that a polite-enough way to say “amateurish?”). I’m hoping to release it sometime this summer and have been thinking a lot about pricing models for iOS games. What follows are some of my loosely-organized thoughts on that subject.

Customer Expectations

People who like to play short, casual games tend to expect them to be ad-supported, free-to-play, or just plain free. However, the developers that I follow, respect, and want to emulate, tend to express disdain toward those pricing models and prefer to promote games that are paid-up-front. Because of this, I feel torn between a niche group of thoughtful, intelligent iOS gamers whose respect I would love to earn, and the general public who couldn’t care less about the indie games market and just wants free games. And the thing is, I’m just a beginner, which brings me to…

Who am I?

Nobody knows who the heck I am. How could they? I’m not known for anything because I haven’t published anything. I have no fanbase, no credibility, and no experience. If I make my game free with ads and localize it as much as possible, there’s a good chance that it could get quite a few downloads. As someone currently wallowing in obscurity, one of my goals is for as many people to play my game as possible. And if people don’t like it, that’s fine—I can learn from it and move on.

However, if I price it at $0.99, even with the best marketing in the world, there’s a good chance that no one will download it. And if no one downloads it, I’ll never know whether or not they like it. I won’t know how to improve. Most of all—I’ll probably be discouraged from making a second game.

Determining Value

From what I understand, if you undervalue your work, no one is going to take you seriously and if you overvalue your work…well, no one is going to take you seriously then either. Online publications are severely criticized for paying very little (sometimes nothing) to their contributors in exchange for “exposure.” I mostly agree with the criticism; however, I also wonder: is there a point where gaining exposure is worth giving away your work for free? What if that work is your first effort? What’s the best or “proper” way to get noticed? Is there value in just “getting something out there” into the world, even if it’s not the most polished thing ever?

Ads are Icky

Advertisements make me feel gross. However, I’d like to make at least $50 off of this game, so I guess I can’t afford to be principled? Gosh that sounds horrible. I’m trying to keep it as least-scummy as possible: banner-ads only (no interstitials), never during gameplay, with an option to pay to remove ads. Honestly, it still makes my skin crawl. And I’m also concerned that it may push away one of my target markets: young children. Games with ads are bad for young kids because they touch the ads accidentally and get taken out of the game and don’t understand what happened. I guess I would just encourage parents to pay to remove the ads? That feels kind of scummy too. Or maybe it’s just business. ¯_(ツ)_/¯

Changing Models

It seems like it would be difficult to switch my app from being ad-supported to paid-up-front if I changed my mind down the road (after release). Will the people who paid to remove ads be angry that all of those who didn’t now suddenly have an ad-free experience? I guess the only example I have to go by is that of Overcast. I paid for Overcast’s extra features, which are now free for everyone, and I’m not mad about it. I mean, I suppose someone would be unhappy but maybe it wouldn’t be so bad?

Anyway, the article that got me thinking about all of this is “Indie Developers Have Always Needed to Treat Their Businesses Like Businesses” which is a very good, concise read.

tl;dr: I absolutely believe that indie studios should charge good money for their games and apps. I’m less sure of what solo, hobbyist devs like me should do, especially with our first games…the ones that we’ll look back on someday and think “wow, look how far I’ve come!”

Using SpriteKit’s Scene Editor for Simple Animations

When I began working on Corgi Corral, I knew I wanted to keep the game as simple code-wise as humanly possible. I wanted there to be one “LevelScene.swift” file that would handle the game logic for all of the levels in the game, and I didn’t want to clutter up that file with level-specific code for animating background/decorative sprites. In fact, I didn’t really want to write that code anywhere.

Enter the SpriteKit scene editor.

I know many developers prefer positioning things in code over using tools like Storyboards or the level/scene editor, but I personally love the ease of drag-and-drop positioning and the ability to preview what things will look like without building and running the app.

This morning, I decided to create and animate some twinkling lights on the fence that encloses the sheep pen. Here’s the end result (and yes, the sheep are wearing scarves):

Snow scene

I could have written something like this to animate the fence sprites:

let textures = [SKTexture(imageNamed:"twinkle1"), SKTexture(imageNamed:"twinkle2"), SKTexture(imageNamed:"twinkle3")]
let twinkleAction = SKAction.animateWithTextures(textures, timePerFrame: 1.0)
fence.runAction(SKAction.repeatActionForever(twinkleAction))

Instead, I decided to make the fence sprites SKReferenceNodes (in case I want to use them in another level) and animate them using the scene editor. To do that, I created an .sks file that matched the dimensions of the fence and placed the fence inside it. Next, I opened the animation timeline at the bottom of the editor and dragged in an “AnimateWithTextures” action from the object library on the lower right.

SpriteKit animation editor

After that, all I had to do was tweak the parameters in the attributes inspector on the right. I set the duration for 3 seconds and dragged my textures from the media library to the “textures” box in the attributes inspector. Finally, I set the animation to loop forever. When I added added the SKReferenceNodes to my scene, they animated automatically. Piece of cake!

Tutorial Request: SKFieldNode

Attn: Lovely SpriteKit experts who write tutorials

I’ve been looking for a decent tutorial covering SKFieldNodes—a neat, recent (I think?) addition to SpriteKit that includes things like magnetic fields and radial gravity fields. Unfortunately, my searches have come up completely dry, and Apple’s documentation hasn’t been particularly helpful.

What I want to do is this: create a field node with a region matching the size of an SKSpriteNode’s texture. When physics bodies make contact with the texture/region, they’ll spin briefly out of control, much like hitting a banana in Mario Kart. I think I can do this using a small vortex field, but I’m not quite sure how and wish I understood all the various properties better.

So anyway, I’m hoping some kind soul will either write up a tutorial or create a demo app that shows each type of field in a separate scene along with physics bodies to interact with. Please?

In the meantime, if I figure it out, I’ll let you know!

Finding My App’s Memory Leak

My plan was to write a quick post explaining how I figured out the source of my app’s memory leak; however, I’ve run into two problems: 1) I think my app actually has a few other minor leaks, so I didn’t fix it completely and 2) the “Allocations” instrument in the latest Xcode beta is absolutely refusing to work now, so I can’t recreate what I saw the other day and take screenshots. As soon as I’m done writing this, I’m going to file a radar because I was able to reproduce the crash using Apple’s own sample game, DemoBots.

Anyway, there are still a couple things I can show you. First, I ran Corgi Corral on my iPhone 6S and played the same level twice. In between levels, the app transitions to another view controller that gives a summary of your score. As you can see, the second time I played the level the app used more memory than before. Each time I hit “retry,” it increased ever so slightly.

Debug navigator

If I hit the “Profile in Instruments” button during gameplay, my app would immediately crash (which is why I’m filing a radar). However, for awhile I was able to get the “Allocations” tool to collect data on the score summary screen. Now, I can only get it to run on the main menu without crashing.

Transfer to Allocations

For what it’s worth, it doesn’t matter whether I select “transfer” or “restart” — the app still crashes, except on the main menu, where I can at least show you what the memory-analyzing tool looks like when it’s running:

Allocations and leaks

See those little green checkmarks next to “Leak Checks”? When I reached my score summary screen, those were showing up as red icons with an “x” in the middle. When I clicked the red icon, it showed me a list of objects that weren’t being deallocated. The list included many instances of “GKAgent2D,” “GKGoal,” “GKBehavior,” “GKComponentSystem”—enough instances to cover the number of sheep in the level. Evidently, even though the SKSpriteNodes were being removed from the scene (and their agents from the scene’s agent system) when the sheep entered the pen, their GameplayKit agents were refusing to die.

I’m hoping that the next beta of Xcode 7.3 will fix my profiling problem, because I’ve become really interested in learning how to analyze my game’s performance! I’m sure there are many more problems to be found and optimizations to be made. For now, I’m off to file a bug report!

Link

Twitter’s Struggles

Why do normal people struggle with Twitter?

Good summary at The Guardian of how confusing Twitter can be for many users.

I’ve noticed a few more of my real life friends coming back to Twitter and getting value out of it lately. Some of them participate in weekly Twitter chats in their professional communities (mostly education), and others are heavily involved in television fandoms. Many people don’t know that such groups/activities exist, however, so hopefully Twitter can find some ways to make that onboarding process easier so new users can find relevant content more quickly.

One quote that stuck out to me from the article was that after surveying “dozens” of Twitter users, the Guardian found that “[s]ome wanted more attention for their 140-character missives. Some dreaded it.”

I tend to feel an odd mixture of hopefulness and dread when I post on Twitter. I’m hopeful that I’ll make some connections with people, that I’ll come off as genuine and human, and that others will be encouraged by my game developing journey. I dread that something I say will be controversial enough to attract a mob.

Going back to what I said about Slack and Twitter in my previous post: I would guess that many of the people who have stepped away from Twitter dealt with the same dilemma, and decided that the risks outweighed the benefits. Why sacrifice happiness and experience increased anxiety and stress when Slack offers a perfectly fun and safe space to interact with your friends? I don’t blame them at all.

I utterly failed to make this point in my last post, but if all of the kind, thoughtful, reasonable people are spending less time on Twitter (for perfectly valid reasons), it makes Twitter a sad place for everyone, not just me. It also lessens the quality of public discussion. And that’s Twitter’s problem to solve, ultimately, not the people who left.

I suppose it is selfish to wish people would come back to Twitter. And I am perfectly willing to try to find community elsewhere…the question is, where? I have a Slack account, but I’m never going to be a part of the “in crowd” and that’s totally fine. I haven’t been able to find much of an iOS developer community on Facebook.

So I don’t know. I’ll keep poking around. Maybe Peach is where it’s at. ;)

Slack is Making My Twitter Sad

Yesterday I read about Stephen Fry quitting Twitter and ended up tweeting the following:

It bums me out that many of the people I follow on Twitter are now self-admittedly spending most of their time in private Slack channels.

I wanted to expound a little bit on that, because I want to make it clear that I’m not blaming anyone for anything. 

I follow a lot of iOS developers, tech journalists, and podcast hosts on Twitter. Lately, I’ve sensed a change in how many of them use the service (and several of them have mentioned it themselves). What used to be a steady stream of jokes, opinions, and silly banter between friends has slowed to a trickle of safe, carefully edited statements.

And I get it, I really do. Twitter is a toxic environment, especially for minorities and people with lots of followers. As your follower, I know I’m not entitled to your wit or opinions, or to know what’s going on in your private life. You’re a human being, and you have every right to step away from the raging dumpster fire of humanity that is Twitter.

It’s just…I miss you! I miss reading what you have to say. I miss feeling vaguely part of all your weird in-jokes. I live in the middle of nowhere where there is no developer community and even though I never actually tweet at any of you, “hearting” your tweets gives me a small sense of belonging. I realize that sounds sad, but it’s true.

So by all means, enjoy the private party bus that is Slack. But every once in awhile, consider getting off the bus and letting the rest of us party with you too! :)

February 15th – Progress Update

Corgi Corral iconYikes, I can’t believe it’s already been nearly two weeks since I’ve done this! I admit that I haven’t spent much time working on the game lately, mostly because I just haven’t felt very good. Besides the ever-increasing pregnancy discomforts, I’ve just been feeling sort of discouraged. However, I’m still determined to push through and release the game—no matter what!

Accomplishments

As you can see, I made an icon for the game along with a main menu screen:

Corgi Corral Menu Screen

The title falls from the top of the screen and does a little “bounce” when the app is first launched. As I was setting up the menu, I realized that if I used less text, it would be easier to localize the app into different languages. I switched “Options” to a little gear icon and “Leaderboards” to a simplified Game Center logo. I also changed the “Tap to Start” text to a tapping finger icon:

Screenshot 2-15-16

After that, I shifted my focus to finding the source of a small memory leak. According to Xcode’s debug panel, every time I restarted a level, the app would use about 1 megabyte more memory than it did the previous time. Eventually, I figured out that the app was holding on to a bunch of GameplayKit-related objects for no apparent reason. Like, all of the GKAgent instances should be owned by the sheep SKSpriteNodes, which should have been wiped out when the scene was set to nil. Instead, the game was holding on to their agents, their agents’ behaviors, and all of the GKGoal objects indefinitely.

Now, whenever the game enters its “Game Over” state, I explicitly remove all the GameplayKit-related objects. I think that fixed the problem…or at least, the Allocations instrument isn’t reporting leaks anymore.

What’s Next

Art, art, and more art! Probably going to work on Level 3 scenery, and maybe figure out how to draw a top-down view of a pig. :-)

That’s all for now…thanks for reading!

More Quirky Animal Games

A few days ago I wrote about my excitement for the upcoming games Night in the Woods and Home Free. Since then, I thought of a couple more animal-related games that are currently in development that I find appealing:

Petting Pets

Petting Pets screenshot

© 2015 Curiobot Corporation

I am a complete sucker for pet games, and this one couldn’t be more straightforward: it’s a game about petting adorable pets. The art style is colorful and fun, and awhile ago the dev team (@PettingPets) asked their Twitter followers to send in pics of their pets along with their names, so hopefully there’s a pet named “Daisy” somewhere in there! The game will eventually be released for Android and iOS.

Sausage Sports Club

I gotta say that this has been one of the most amusing games to watch as it’s taken shape. Sausage Sports Club is a collection of multiplayer sports games starring sausage-shaped animals (and I’m pretty sure those dogs are corgis). The mariachi music and the hilarious physics get me every time! You can track the development of Sausage Sports Club by following @cjacobwade on Twitter and it looks like a website is forthcoming.

Shepherd Dog

I was browsing devlogs yesterday hoping to be encouraged/inspired and came across someone working on a low poly herding game. Obviously it’s very early in development and that title is likely not final, but it was fun to find someone who’s working on something similar…and yet very different. I’ll definitely be checking in on this project from time to time to see how it’s coming along.

Bored With All The Games

I love listening to the gaming podcast Isometric (if you love video games, you should check it out!). One of the popular refrains on the show is that violence as a primary game mechanic is getting really, really old. I whole-heartedly agree, and have a rather long list of other things that I’m also tired of in games, such as wizards, spells, dudes with swords, dungeons, the mere mention of mana, and the bastardization of any verb to make it sound like “flappy” (i.e. crossy, jumpy, etc.).

I know I just described the entire fantasy RPG genre and pretty much every iOS game, but bear with me.

There’s been an interesting resurgence of point-and-click adventures games lately (which I realize aren’t for everyone). Games like Broken Age and Armikrog are funny, poignant, and visually unique. In a world where everyone and their dog is making 8-bit retro dungeon crawlers, achieving uniqueness shouldn’t be that hard. And yet.

I was scrolling through my RSS feed this morning for the first time in a few days and decided to start with the 140 unread articles from TouchArcade. As I scrolled through the new and upcoming iOS game releases, I was struck by how many of them just looked the same to me. I swear some of them even have the same hooks:

  • Battle epic bosses
  • Over [insert stupidly high number] challenging levels
  • Collect treasure
  • Unlock [number] unique [characters, levels, modes, etc.]
  • Customize your hero [this usually means “buy new outfits via IAP” and also the hero is probably a dude]

Obviously, there are plenty of games that don’t slavishly follow this formula and for those I am thankful. And I’m not saying that Corgi Corral is some sort of amazing innovation—it’s not. In fact, it’s already been done. But it seems like video games are stuck in an endless cycle of nostalgia, with every new creation paying homage to some beloved childhood experience. There has to be a way to break free of that.

With that said, here are 3 games I’m looking forward to that don’t remind me of anything from the past:

Night in the Woods

  1. Night in the Woods. Is NITW a point-and-click adventure or a platformer? The answer is yes, and also, who cares? It features animal people and seems to nail the feeling of living in a small, dying town (which is a pretty common experience, but who makes games about rural communities? nobody, that’s who).
  2. Home Free. There are games out there where you can play as a dog, but none that are nearly this ambitious. I just hope that the developer digs deep in his heart and decides to add corgis to the game, even though we didn’t meet the short-legged dog stretch goal. ;)
  3. Wandersong. I just backed this one today, because it looks really interesting and fun. Music-as-a-mechanic is way more appealing to me than just another run-of-the-mill hack-n-slash.

I was about to say “I’d love to see more games like these,” but that’s exactly the problem (everyone copying each other). So I guess I’ll say that I’d like to see even more games that take risks in terms of visuals, story, mechanics, and length. For all of you working on something you think is totally weird: keep up the good work!

Disclaimer: Every night, my husband and I play Call of Duty multiplayer for a couple hours. And you don’t even want to know how many hours I’ve sunk into Guild Wars 2. So it’s not like I’m totally anti-establishment or whatever.