As a few of you already know, fabs is leaving 22cans and off to work in the mystifying world of VR.
fabs has been involved with 22cans for well over two years and has helped Curiosity & Godus progress from the first beginnings into two successful titles across different platforms.
We managed to corner fabs to talk about his time at 22cans and working on Godus before he disappeared.
What's the best thing you've got out of your time at 22cans?
"It’s been educational for me."
"Coming to 22cans right at the beginning, back when Curiosity was an idea and not even announced. I was thrown in at the deep end with all sorts of new things."
"I had to pick up C# for Unity, and I had to learn PHP, and how to run web servers for getting the cube data to and from iPhones and iPads. That was another thing I’d never worked on: mobiles, I’d always been a PC or console developer before. For a lot of the server work, I got to use C++11 in Linux for the first time professionally, which was really pleasant, as I’m a big fan of C++. 11 and 14 were like an old band suddenly releasing a new album, which is funny, because Godspeed You! Black Emperor just reunited to do some more music together too."
"Things like that have been constant at 22cans. Learning, and using that new knowledge, has kept me constantly interested. When we had a lull of cool new things, I would feel the nag to do something, and that’s probably why I started dabbling in Haskell."
What made you join 22cans?
"I came to the cannery off the back of a console game release after hearing that Peter Molyneux was setting up a new company. I wanted to be in that team, and be part of a new and potentially historic moment in gaming. I am not driven by simple financial gain, so when I saw that he was going to try to do something different, I felt I couldn’t say no to the offer of a position on the team."
"The code team has almost no overlap, with juniors and seniors, with console developers and those that had come from mobile, and those from outside games entirely. The mix has been both challenging and inspiring; I’d never change it."
"The varied skills create an atmosphere of shared knowledge and respect, with curators for different areas and technologies."
fabs is sad on his last day.
What was the best moment from working at 22cans?
"In previous employments, the times that have shone have always been the times where I’ve been learning and implementing new things. Inventing just in time, and producing to a deadline is a fantastic feeling."
"The best moment for me was just before the kickstarter campaign when I was given a weekend to implement a prototype for the landscape rendering for Godus."
"The early days of Godus were really fast, get stuff done, working as a team with a really well communicated common goal. Those times we iterated so fast that everyone was excited to see what had changed by the end of the day."
"Godus was a lot of fun to develop for me, as I got to spend quite a bit of time optimising the game, and working with landscape rendering and shaders. Shaders are a place where you can invent quickly, see your mistakes and successes really fast, and iterate on problems without fear of breaking things."
"They’re a thing of beauty to a person like me, who loves maths and wants to make something that other people will enjoy. Optimisation is fun, but in a different way. Sometimes, you have to rewrite quite a lot of code to make a difference, and sometimes you can just spot a mistake, or something is in the wrong order, and a single line of code difference can make a huge impact."
"Take for example the beautify code, there was a bug in there that meant that beautify was being slowed down by houses, a very simple mistake made by someone when they first implemented the update, all fixed by adding a spatial lookup, and now the frame rate has stabilised completely."
"Optimising the landscape was an exercise in constant refinement. There were never any big gains to be made, but there was always a slightly better way to access and use the data. Memory bandwidth was always the bottleneck in that code as voxels and vertices and how much influence they have on each other causes a lot of reads and writes from memory."
"That time is over now."
Are you leaving Godus in a good shape?
"Godus is as pretty as it needs to be (coding wise), and there’s not much more performance we can get out of it without a major rewrite."
"Due to this, last year I took over the savegame systems, making sure that saves were as robust as they could be, as backward compatible as possible, and as recoverable as possible when all that fails. The amount of data in godus, the followers, their houses, where they are going, the land on which they are walking, that all adds up to quite a bit, and to make that seamlessly migrate between different devices is no simple task. So many moving parts leads to so many corner cases, and it’s the corner cases where the bugs hide."
"There’s a hundred war stories about savegame bugs, but the scariest one was the case where the houses just would all vanish at once. We finally traced it down to an issue with the network layer not handling really large lumps of data, and the houses were the biggest thing. The quick fix, and the one that was put in just before release on iOS, was to just zip the data before storing it, hoping that we could find the real cause and fix it properly quick enough to put out a new built. Finding the root cause, proving it, and then fixing it was much harder. We got hold of the source code so we could trace it down, and I was able to find the single line where a message header was being misread under very specific circumstances, because it was overlapping a boundary between two larger container packets that were just the right size and timing."
"The bug was found in code that had been working for years, in other people’s released games, and yet it was there and only found because we had really big lumps of save data for our houses while doing other smaller messages. When you find these bugs, you start to think that there are probably millions of bugs out there going unnoticed, waiting to break something in a horrible way, because they are in code that has been thoroughly tested and been working for years."
fabs is taking it hard
You were always pretty involved with the community, any messages for them?
"I’ve enjoyed being more involved with the community, both on the Proboards and on Steam forums. I’ve never held my punches, and I think the community warmed to my openness."
"I’ve got plans in the years to come of going full Indie, not for some time, but when I do, I know that an open forum is a healthy forum, and humour goes hand in hand with misunderstanding."
Oh... How about that secret feature you were working on?
"I had a last Hurrah! before I headed off in the shape of a semi secret feature, and a super secret feature. Not things I specialise in, either of them. The semi secret feature was just some new editor tools, which will be useful in case we do move to a more level based Godus, one that has real progression in a the tradition of Peter’s other games."
"I always felt that the desktop version of Godus was always Black and White 3 in spirit, and in that respect, multiple worlds of your homeworld seemed like an inevitability."
"Regarding the super secret feature, I think I’ve made it pretty public that I’m not a fan of F2P, and so it wasn’t so much a task that only I could do, but one that I found to be quite therapeutic."
"I hope you all like it."