Here is your first (very short) look at Night in the Woods for iOS
— Finji (@FinjiCo) October 27, 2020
More to come.
Thanks, have a good day.
Love you, hope you're well. pic.twitter.com/zdtBvzny1D
Category: secret lab
Yarn Spinner 2.0 Beta 1
We’re incredibly excited to announce the first beta release for Yarn Spinner 2.0! There’s a lot of things happening in this release, so we encourage you to take a look through the release notes.

We’ve also launched a fabulous new Discord for the Yarn Spinner community. Join us?

EveryWorld 2020 (25-27 November)
The CFP for EveryWorld 2020 is now open! We’re seeking talks across three tracks: Development, Creativity, and Device Management! Submit a talk today!
Tickets (super cheap!) are now available! Register now!
EveryWorld 2020 will bring together our three “normal” events (CreateWorld, /dev/world, X World) into a COVID-19-compatible online event.
SA Conference 2020 NYC
We’ve just finished speaking at the O’Reilly Software Architecture Conference 2020 in New York City. It was, as always, a fabulous event, and we had a great time! In a few weeks we’ll be speaking at O’Reilly’s Strata conference in San Jose, as well!
At Software Architecture in NYC we spoke about entity component systems, in a talk entitled “Entity component systems and you: they’re not just for game developers“.
Below are some of our favourite links relating to ECS. We hope you find them useful!
- Catherine West’s RustConf closing keynote on Rust for Game development
- Entity Systems are the future of MMOG development by Adam Martin
- ECS and DoD slides by Aras PranckeviÄŤius (Unity)
- Data Oriented Design and C++ CPPCon talk by Mike Acton
- Machine Architecture: Things Your Programming Language Never Told You talk by Herb Sutter
- What Every Programmer Should Know About Memory paper by Urlich Drepper
- The amazing talk on Blizzard’s implementation of ECS in their popular game, Overwatch, from GDC 2017
- ECS Back and Forth Part 1, Part 2 (plus Part 2 insights), Part 3, Part 4 (plus Part 4 insights), Part 5, Part 6, Part 7, and the slides from an ECS talk at the Italian C++ conference 2019
You can also find a slightly earlier version of the talk (from last year’s conference) on YouTube:
Software Architecture NYC was fabulous, and we can’t wait for the next one! We really enjoyed seeing our friend r0ml give an amazing talk (as usual), and signing copies of our Unity Game Development Cookbook!
Catch us next at the O’Reilly Strata Conference in San Jose!
đź§¶ Yarn Spinner 1.0

The popular open source narrative game development framework, Yarn Spinner, which is maintained by Secret Lab and a fabulous community, has reached version 1.0. As part of our 1.0 release, we’ve debuted 5 exciting new features:
- Compiled Scripts — Yarn Spinner now compiles to a binary format.
- Automatic Compiling — In Unity, your Yarn scripts will automatically be compiled when they change.
- Line Tagging — You can automatically add unique tags to lines of dialogue, and generate a .csv file to send to translators with the click of a button.
- Code Extension — There’s a syntax highlighting extension, available from the marketplace, for Visual Studio Code.
- No more .yarn.txt — The file extension is now .yarn! It was time.
We want Yarn Spinner to be the best tool that it can be. As part of that, we’ve launched a Patreon page, and we’d love for you to help support its development!
We’ve got big plans, so please check out the website, follow us on Twitter, support the Patreon if you can, and join our Narrative Game Development Slack. And we’d really appreciate it if you shared the news!
Finally employed after all these years
The year 2020 will mark the 12th year of the “Secret Lab” name existing.
It initially started as a vehicle for three University friends to do cool things and make stuff, but in 2010 we turned it into a company. So it’s the 12th year of the name, and it’s the 10th anniversary for the “real thing”: the company.
In that time, like most of Australia’s small businesses, we’ve paid other people more than we’ve paid ourselves, and we’ve paid ourselves (Jon and myself) as “Directors Fees”. This made sense, and was the easiest way to do things, but times change.
Starting this year (in fact starting in a few short weeks at the beginning of February, just before we start a whole lot of travel for conferences and events, representing the company) Jon and I will both finally be employees of the company that we founded.
This doesn’t actually change much: the company still has to pay us superannuation, but now we’ll be paying ourselves every month, instead of at the end of a financial year, and now our income will be a wage, instead of directors fees.
We made this change to make it structurally easier to pay ourselves, and to make things a little clearer as we plan to travel to represent the company so much this year. If anyone has any tips on running a small business, 10 years in, I’m all ears!
Either way: from February 2020, I have a new job! It’s very similar to the old one, but I’ll be doing more than just managing the company, as now I’ll be working!
Adventures with a client who won’t pay
Over at Secret Lab, we’ve been dealing with a client who won’t pay. Since October last year, we’ve been working on a gorgeous iPad application for a big name client who has been nothing but full of praise for our (quite frankly, amazingly good) work. They have literally sent emails thanking us and telling us how great the work has been.
Per our standard terms, we don’t turn over source code and ownership of source code until the final payment. They accepted this, in writing, up front. It’s pretty standard stuff.
The client has been hard to pin down, and has declared how busy they are are travelling the world (join the club, we travel all the time and respond instantly) and generally being very important, by way of explanation to their lack of responsiveness (not our problem, but whatever). They have also disappeared or been unreachable for large periods after the app shipped to the App Store and went live.
There was some squabbling by the client over this (I imagine they probably didn’t read what they agree to, pretty standard stuff — we suspected they hadn’t read the terms when we started getting emails complaining that we were over budget. We were not over budget by a single cent), and when they refused to pay until they received the source code we renegotiated (after offering escrow, and a few other options), and arrived upon: they’d pay 50% of the remaining owing, we’d send the code, they’d immediately send the other 50% payment.
They paid the first 50% (late, I might add) and we immediately (literally, immediately) sent the code along. They have yet to pay the other 50%.
Now, months after the app shipped (literally months after the client shipped the app to the App Store and is collecting the IAP revenue), and weeks after they were meant to pay the second 50%, they have declared that it is ‘terrible’ and ‘horribly broken’, and are refusing to pay until they fix it. (I say they fix it, because while we’ve offered — even though we’re definitely not obligated to — they haven’t given us a bug report.)
It’s at this point I should add: after shipping the first release to the App Store, the client activated an optional final milestone in our agreement for us to perform some additional work on any bugs discovered since launch. All were minor, and largely cosmetic (the client supplied the list), and we shipped that build off to them. They have yet to set it live, and if there was a ‘terrible’, ‘horribly broken’ issue with the first version that shipped we’d have expected them to include that on the list of things to fix for that milestone (and if they were so unhappy with us why did they activate that milestone?)
Despite the client disappearing for a number of weeks in between the app shipping and them turning up and declaring it broken we, of course, offered to take a look into the issue they were seeing.
No bug report was forthcoming and the client went back to ignoring us. So we got our lawyer involved, and the client responded with a video showing the app not working to our lawyer. They didn’t supply a bug report, or credentials that result in the broken experience the video showed. Nothing useful, just a video. (We can’t reproduce the issue, but aren’t accusing them of lying; software is software. Software has bugs. While they had ample opportunity to report such a bug, and while we’re no longer really obligated to look into it, we would, because we like our clients. We just need an actual bug report, not a video, and not emails ranting about how everything is broken without providing context or requested information).
We’re owed nearly $50,000 AUD, and are very very out of pocket. The client throws around such comments as “it’s not that much money”, and “money is not the problem” but doesn’t take us up on our very generous offer to take a look into their issues regardless (and, indeed, only sent a video when our lawyer got involved. The video isn’t helpful to actually investigate the problem.)
We’re now in the position of having to take what seemed like a dream client to court for an amount of money that, while not very much in the scheme of things, makes a big difference to a small business that’s very selective with who it takes as a client.
Suffice to say, it hurts us, big time, and makes the difference between being able to go to a conference where we might find more work, and having to stay home. Or, you know, fund the popular open source project we work on.
I guess that we’re lucky that we’ve never had to really deal with this before in our nearly 12 years of existence.
Recommendations welcome. My email is paris@paris.id.au ❤️
Unity Game Development Cookbook
Software Architecture NYC 2019
The O’Reilly Software Architecture Conference 2019 (SACon) just wrapped up in New York City, and I was privileged enough to attend as a speaker with my friend and colleague, Tim, and partner and colleague, Mars. Together, we presented a session called Entity-Component-Systems and you: they’re not just for games anymore, and Tim and I did a book signing for our recent title Learning Swift (3rd edition), as well as a Meet the Experts session.I was initially quite sceptical of the SACon, because the idea of an event based on ‘software architecture’ conjured up images of very dry sessions on traditional, serious enterprise architecture, presented by uninspired, uninspiring people. As it turns out software architects, and those who attend software architecture conferences, are incredibly passionate, interesting people, who are the very opposite of the straight-laced faceless people I imagined.
SACon was a melting-pot of interesting ideas, framed around the discussion of software architecture as a profession. O’Reilly’s conferences are always polished, well, run and all that good stuff (disclaimer: as might be obvious, O’Reilly is my publisher), but the attendees and speakers are what makes any conference shine. This conference definitely shone.
All the sessions that I attended were excellent, but the highlights of the conference for me were definitely the following talks:
- Katerina Iliakopoulou’s talk on architecture of the New York Times recommender systems
- Vasanth Asokan’s talk on the architecture used to test in production at Netflix
- My friend r0ml’s talk, Technical Debt: a masterclass
- Seth Dobbs’ talk on leadership principles for architects
- The keynotes from Trisha Gee, Mark Richards (interviewed by Neal Ford), Stuart Halloway, and Glenn Vanderburg (go and check out the list of recommended wide-reading he posted after his. keynote, too!)
The ‘hallway track’ was also exceptional, and we had some fantastic conversations with attendees on topics ranging from the rise of the Rust programming language to the use of ECS in non-video games to the merits of the Swift programming language to designing video game engines, and beyond.
Tim and I really enjoyed our book signing, and found ourselves face-to-face with one of the biggest queues we’ve ever had for a book signing, and had some excellent conversations with developers, architects, and team leads who were excited to learn Swift from our book, or share it with their teams back home.
Our ECS talk went well! We had a packed room (which was also one of the most palatial conference halls we’ve ever spoken in!) and got 5-star reviews with great feedback.

If you’re interested, you’ll find the slides from our talk on ECS are available via the conference website. You can also find a video embedded below, or on YouTube, or O’Reilly’s Learning Platform. (if you have an O’Reilly Learning Platform subscription, we strongly recommend watching it there!)
There’s some follow-up resource we want to share with attendees of our talk. We hope you find them useful!
- Catherine West’s RustConf closing keynote on Rust for Game development
- Entity Systems are the future of MMOG development by Adam Martin
- ECS and DoD slides by Aras PranckevicĚŚius (Unity)
- Data Oriented Design and C++ CPPCon talk by Mike Acton
- Machine Architecture: Things Your Programming Language Never Told You talk by Herb Sutter
- What Every Programmer Should Know About Memory paper by Urlich Drepper
- The amazing talk on Blizzard’s implementation of ECS in their popular game, Overwatch, from GDC 2017
I’m excited to return to a future SACon! The good news is there’s lots of them to choose from! San Jose is coming, as is Berlin!
iOS Game Dev Cookbook

Also available via O’Reilly’s Safari, if you have a subscription (a free trial is available!)