Melbourne Games Week

Oh yeah I have a blog, don’t I.

I’m going to be in Australia for the week of the 31st October 2016. I’ll be appearing in the Unite Melbourne (https://unite.unity.com/2016/melbourne) keynote and doing an Alphabear post mortem at 5.30pm in Room 1, both on the 31st. I think the former might be streamed live? But I haven’t got a link yet.

I’m also doing a Fireside Chat at GCAP at 2.10pm on November 2nd with Laura Voss: http://gcap.com.au/sessions/laura-voss-talks-to-andrew-fray/. I’m excited about this because I don’t really know what to expect, but hopefully I can entertaining and informative. Enterformative.

I’m leaving late on the Friday, but have no other firm plans. If you’d like to meet up, let me know here or on twitter!

Advertisements

Remote Working at Spry Fox slides

Here are my annotated slides to last week’s GDC talk. The attendance was good and the vibe I got was that people enjoyed it! Last year I (eventually) screencasted my unit testing talk and put it on youtube; I’ll update the blog if I get around to the same with this. It’ll also be on the GDC value soon, and I’ll ask if they’ll make it a free talk.

GDC 2015 – Remote working and automated testing

I’m speaking again at GDC in March. This will be my third GDC in a row, yet I’m no less nervous!

On Wednesday at 11am, I’m speaking for half an hour on remote working at Spry Fox (room 2020 west). I’ll be covering tools and processes, but the things I’m most interested in talking about are the qualities of a good remote developer, and the hacks we use to build a tight supportive team out of people of different continents.

On Thursday I’m building on the success of last year’s unit testing talk to chair a roundtable on automated testing. Anyone interested in any strata – from CI servers to smoke tests to unit tests – should come along. Bring war stories, gotchas and hacks.

If you’ve got ideas you’d like raised during the roundtable, but can’t make it to San Francisco, why not leave a comment below? Here’s some questions to get you thinking:

  • What’s the coolest piece of automated testing tech you’ve seen used?
  • What’s the most dramatic improvement you’ve seen after introducing some automated testing into a process?
  • Are there any kinds of automated testing you find don’t work so well with games?
  • Do you think automated testing is mainstream yet? What more can we do to sell various types of testing to the management?

How to symbolicate iOS crash dumps from Unity Cloud Build games

Disclaimer: this advice is provided without warranty, works on my machine, etc. Use it at your own risk.

We’ve been using Unity Cloud Build at Spry Fox for a soon-to-be-announced project. Since we’re a remote company, it’s great to be able to push and know that both Android and iOS builds will be soon available to everyone in the team with your new feature. It’s saving a lot of time every day.

This morning I pushed our new IAP back-end, which of course involved some low-level stuff on both platforms. Everything worked on local builds, but when I tried the iOS build from Unity Cloud, it crashed on start-up. Getting the callstack of the crash turned into a bit of an odyssey. I thought I’d document it here.

By default, Unity will not generate Xcode projects that produce useful debug info. We can fix this by adjusting the Xcode project after generation, but that’s no good for Unity Cloud Build where we have no control.

So, one time only, you should add this file https://gist.github.com/tenpn/f8da1b7df7352a1d50ff to your project (EDIT: in an editor subfolder; thanks Terry Paton). That will do the post-processing for you and for Unity Cloud Build. (There are conflicting reports as to if this increases build size, but you definitely want it while developing. It might still be worthwhile leaving it in for release, because it will be extremely helpful in chasing down crashes in the wild.)

Wait for Unity Cloud Build to produce a new build containing that change, install it, and repro the crash on your device. Then follow these steps:

  1. Go to the cloud build project for your game, and find the dSYM and ipa downloads for the build you installed. At the moment, you click Install on the build in the history list, then Share, then both Download to Desktop for the ipa and Download dSYM.
  2. Unzip the dSYM somewhere safe. I put it in a new folder named after the Cloud build number we are investigating. The location should be somewhere Spotlight can index.
  3. Rename the ipa extension to zip, and unzip the .app inside to the same folder as the dSYM.
  4. Attach your iOS device via USB to your OSX machine
  5. In Xcode (these steps are for Xcode 6.1.1), go to Windows->Devices
  6. Select your device in the left pane, and click View Device Logs
  7. There should be a crash dump for your game. Locate it by the process name and crash time columns and click on it.
  8. The right window should now have the crash dump with a named callstack. If not, right-click on the crash dump in the left pane and select Re-Symbolicate Log.

Hopefully this gets you enough info to start debugging your app.

Shameless plug: DecisionFlex is a new unity plugin to let your AI make human-like and emergent decisions.

DecisionFlex

DecisionFlex considerations

For a while I’ve been working on an AI plugin for Unity3D called DecisionFlex. It’s a decision-making tool for your games, based on Utility Theory. It’s great for when you have multiple actions to choose between, and lots of factors to take into consideration. For instance:

  • A soldier choosing its next target, based on target range, type and the soldier’s ammo count
  • A Sims-like human choosing to eat, drink, work or exercise based on hunger, thirst, wealth and fitness
  • A bot choosing to prioritise picking up a health pack, based on the bot’s HP and distance to the nearest pack
  • Any time you might find yourself writing highly nested or cascading if-then statements

DecisionFlex editor-based and data-driven, so you can construct new decisions and actions, and tweak considerations, without diving into code. The code to hook your game up to DecisionFlex is minimal and you don’t need to understand complex equations.

DecisionFlex isn’t quite ready to ship yet, but I’m ready to start talking about it. You can find more information and a web demo here:

http://www.tenpn.com/decisionflex.html

Innovating In Your Pants

The company I work for, Spry Fox, is known for its innovative games like Triple Town, Steambirds and Leap Day. In fact, it’s one of the reasons I was attracted to work there in the first place!

We do this by prototyping a lot of ideas, iterating quickly, and (ideally) killing readily. All as fully remote company. People in the company have talked about the details of this procedure publicly before, but I took a shot at it when asked to speak at Falmouth University the other week. The presentation (~30min) and Q&A (~20min) were filmed, and can be watched for free here:

http://onair.falmouth.ac.uk/Mediasite/Play/28dd23b44a3c43abbd60ecb6d49969bd1d?catalog=0a29d6d3-1b0b-405b-8976-0d080ce607e8

Here’s a direct link to the slides:
https://docs.google.com/presentation/d/1cCpuFpduP3NX2ZxJY_QaQ_eYxdwKug1tpkkiROI5Xyo/pub?start=false&loop=false&delayms=3000#slide=id.p

And here’s a similar (but longer) presentation by Daniel, David and Ryan at GDC 2013:
http://www.gdcvault.com/play/1018263/How-to-Make-an-Original ($)

Hope you find it interesting!