The thoughts, rants, tips, tricks, stories, truths, and lies of Jordan Irwin

February 24, 2020

Learning Runner

I made and shipped a game :)

It’s not a fancy, big game. It’s a kids game. A game my kids enjoyed playing, so I decided to publish it to the Apple App Store.

Learning Runner App Icon

The pitch:

Run, and jump, and collect your ABCs, 123s, and colors!

Learning Runner is a kid-friendly platformer aimed to educate and entertain. Don’t worry about Ads, in-game purchases, or even a “Game Over” screen. This game is built so kids can play without interruption or frustration.

With procedural levels, multiple backgrounds and music, and some fun tricks- the gameplay is always different and the fun is always the same!

It’s playable on iPhone and iPad. Technically it also works on Apple TV, but I’m not ready to release it there (yet!).

You can get it here for $0.99.

Why not free?

Originally, I planned to make it free. But after much reflection, I decided “free” isn’t a fair price for anything that took time to create; and I don’t have a monetization strategy after aquisition. There’s no advertising or in-app purchases. If you buy it, you have it all without disruption.

I hope your family enjoys it. Please leave a review, comments, or tweet your thoughts to me.

Oh, there’s also a Support Page and a Privacy Policy.

Shipping a game took a lot more effort beyond “building it”. I may blog about that in the future.

October 3, 2019

Unity + Apple TV Remote

While working on tvOS support for my upcoming kids game, Learning Runner, I discovered mapping commands to the Apple TV Remote isn’t as easy as it could be. Ultimately, I purchased Rewired from the Unity Asset Store to help, but I still struggled with a few things that drove me crazy.

Once deployed to an Apple TV, using the Apple TV Remote for UI Navigation was rampant and unpredictable. It simply didn’t make any sense where the selections would go based on my touches, or nothing would happen at all.

The following actions corrected the eradic navigation behaviors:

  • I took time to learn how the Unity UI Navigation works and see what other’s have learned too. In many cases, I setup Explicit navigation routes. Understanding this is paramount for controller support.

  • Related to above, in some cases I simplified how my UI elements were organized in the scene. Less panels, less Layout Groups, less complexity.

  • I stopped trying to map the DPad values from the Apple TV Remote in favor of the Touchpad X and Touchpad Y elements (these are the Rewired names, but this applies even if you’re implementing your native mappings.)

Even after these changes, the Apple TV Remote still seemed to “click” UI elements unexpectantly. Toggles would check/uncheck and buttons were clicked just by navigating through them. It was always the same toggles and buttons though, so it wasn’t random, just very odd and unexplainable.

After trial and error and frustration, I finally corrected this behavior by naming my controller Actions and EventSystem triggers exactly as recommended in the documentation: UIVertical, UIHorizontal, UISubmit, and UICancel. I had been reusing the non-UI actions since the mappings would be the same- thinking it would be simplier and save time. NOPE! It caused hours of frustration and debugging instead. I don’t believe there’s anything magical about these names, but I do think there’s some overlap and mis-firing when sharing UI actions with non-UI actions.

So, after hours of debugging and trial and error and reading and frustration and thinking and WTFing… my iOS game officially also works on tvOS with controllers- including the Apple TV Remote. All that annoyance, mostly because I didn’t follow directions…

P.S. Rewired is a very valuable tool for managing controller support for Unity projects. Check it out.

September 26, 2017

Recipe: Vegan Carbonara Pasta

Full credit goes to my friend, Vlad. Thanks for introducing me to it!

[I’ve never taken a good picture when I’ve cooked this, but next time I will and add it here]

Overview

I know this seems like alot of steps, but really it’s very simple- the steps are just broken out to help guide you through it. Once you read through it, you’ll see that there’s really only three steps: Boil pasta, roast vegetables, blend sauce.

There’s three components to this dish: pasta, sauce, and roasted vegetables. Since the roasted vegetables take the longest, we’ll start them first. Second, we’ll get the pasta cooking since we’ll want to use some of the water for the sauce. While the pasta is cooking, we’ll sauté the mushrooms since it will be part of the sauce. We’ll then combine mushrooms and sauce, mix it into the pasta, and top with the roasted vegetables.

Servings

6-8 servings

Ingredients

  • 1.5 cups of cashews (raw are best, but they don’t have to be)
  • 2 tbsp black pepper (soaked peppercorns are best, but any black pepper works)
  • 1 whole bulb of garlic
  • 2 lbs of pasta (any pasta works, but I enjoy tagliatelle or fettuccine)
  • 5-6 tbsp salt (maybe more… you’re going to make the pasta water REALLY salty)
  • 2 bell peppers (your preferred colors)
  • 1 whole onion (your preferred color)
  • 2 lbs of mushrooms (portobello, shitake, anything really…)
  • 2-3 tbsp decent oil (I use coconut oil, but use what you prefer)

Steps

Prior preperation…

  1. Soak cashews in drinking water for a few hours before starting the dish (drinking water because you’re going to reuse some of the water in the sauce).
  2. If using black peppercorns, soak them in water for the same amount of time.

Roasted vegetables…

  1. Cut the bell peppers and onions into large julienned slices.
  2. Peel 4-5 cloves of garlic.
  3. Mix vegetables with enough oil for a light coating and add a little salt and pepper. Nothing crazy, just make sure there’s decent coverage.
  4. Spread vegetables on a baking pan. Try not to let them overlap.
  5. Roast the vegetables in oven (425 F) until they are cooked to your heart’s desire. Some folks like well cooked, some like al dente. I like mine in-between.

Pasta…

  1. In a medium/large pot, boil enough water so the pasta can freely move in pot.
  2. Add 5-6 tbsp of salt to the water, perhaps more. You want the water very salty. Almost like tasting the ocean. I know this seems crazy, but trust me.
  3. Once boiling, add pasta and boil until nearly done (varies by the pasta type you’re using). You’ll want it very slightly unfinished since we’ll be cooking it a bit with the sauce later (but not much…)
  4. DON’T THROW OUT THE WATER. We’re going to use some of it in the sauce.

Sauce…

  1. Sauté mushrooms with some oil along with 3-4 cloves of garlic until they are nicely browned and soft (sometimes I add onions to this as well).
  2. Blend cashews with the water you saoked them with (and extra if needed) until lightly creamy. You should be able to pour it out of the blender with only minimal assistance from a spoon. Favor more runny over thick, since we’ll cook it down later. (If you soaked peppercorns, the water used for soaking is incredible to add to the sauce at this point)
  3. Add the black pepper to the sauce as it’s mixing. You want the sauce to be obviously “peppery”. Add to taste, but trust me- you want way more than you think is enough.
  4. Add about 1/3 of the sautéd mushrooms and garlic to the blender and blend well. The sauce should be smooth, not chunky.

Finishing…

  1. Transfer the pasta water from the pot.
  2. Add a bit of oil to the pot to prevent pasta from sticking when we mix sauce.
  3. Add the sauce and pasta into the pot over medium-low heat on stove.
  4. Add the remaining sautéed mushrooms/garlic to the pot.
  5. Add some of the salty pasta water at this point, start with 1/2 cup but feel free to add more if you need.
  6. Mix the pasta, sauce, and mushrooms well over the heat. You’ll want to cook it down a bit so that the sauce is creamy instead of runny. But not so much that it’s super thick and sticky. (It’ll also thicken up more once you take it off the heat).
  7. Transfer to serving bowl (if you’re fancy…) and top with the roasted vegetables (we keep ours on the side and top when plating).
  8. Enjoy!

Tips

  • This dish offers a lot of variety in texture and flavor, change it around each time you cook:
    • Try different types of pasta
    • Roast different vegetables
    • Sauté different types of mushrooms
  • The secrets to this dish are simple: lots of black pepper in the sauce and lots of salt in the pasta water.
September 7, 2014

Learning Swift and SpriteKit

For a side project, I’ve begun really digging into Swift, SpriteKit, and the latest XCode (Beta7 atm). Here’s a list of various resources I’ve found handy:

Notice the frequency of www.raywenderlich.com? It’s become practially a staple learning tool for me as of late. Thanks Ray and team!

September 1, 2014

Who is dis in my cave?

Part 6 of Lost Mine of Phandelver. The full series may be found here. Here lies actual accounts of fictional events. Spoilers exists if you haven’t yet played this adventure.


The companions head back to the main corridor where a previous flood nearly wiped them out. Met by charging goblins and the wolf seen atop the chimney, the party has little trouble elimating this threat and continues on.

Ahead they see a wooden bridge crossing over the corridor and a broken and crumbed path to their left. Gosef begins clearing the broken path, paying close attention to the rubble and potential rock slide he may cause. Another loud rush of water appears from ahead, and the players once again dart to the walls for protection. The flood splashes through without victim, but the predicted rock slide hasn’t been avoided. Gosef, waiting for such an event, dives out of the way as the path crumbles around him- several large rocks just missing his head.

Klarg the Bugbear

Thinking there’s only so much water available, the party continues down the main path- directly challenging another flood to come. The wooden bridge passes above them, and ahead they see a dam indicating the source of the floods. Correctly assessing the limited water supply, Gosef sneaks ahead to scout around the dam.

Gosef looks into a large chamber with two ponds being fed by a thundering waterfall from the mountain. Several goblins stand guard at the far end. Welby sneaks up the dam and into the shallow ponds, taking a hidden position just north of the goblins. Gosef emerges from his hiding place west of them and unleashes his arrows, Erdrick prays for his Sacred Flame to ignite his enemies, and Welby fires volleys of arrows from hiding. Together they quickly dispatch these foes.

“Who is dis in my cave?”, loudly snarls the large humanoid creature previously seen by Welby. Walking from the southern chamber, a confident and angry Bugbear wielding a massive morningstar approaches…


There is more to this story! The full series may be found here.