Game Dev Is Like a Box of Chocolates, You Never Know What You're Gonna Code...
Posted on
You don't always need games experience to move into the tech side of the games industry... Here's one of our senior engineers, Dave to share his journey from web developer to mobile games programmer (with the help of a LOT of Forrest Gump quotes #sorrynotsorry).
I had run for 15 years, 2 months, 14 days, and 16 hours. [he stops and turns around]
Almost three years ago to the day, I made the life changing decision to quit my job of 15 years as a web developer and jump head first into the mobile games industry to work for Hutch. It is definitely the best decision I have ever made, but one that as a developer, has been full of wonderful surprises.
To be honest I had never really given much thought to working in games, as I'd spent my entire career building websites, primarily in the public sector no less. After a nice midlife crisis on my 40th birthday, I walked away from my high paying job as Development Manager, with not a back-up plan in sight. After a few sleepless nights, a casual chat with Sean Turner, one of the founders at Hutch, set me on a path to one of the most enjoyable journeys of my career so far...
So Sean, how about I help you work on your wee car game?
I knew through Sean that his Hutch team programmed in C#, as did I, so how hard could it be to build a little mobile car game? Well wasn’t I in for a massive shock? My learning curve has been HUGE, and my eyes have truly been opened to how amazing and massive this industry is. I’ve used more tools, frameworks and languages in the past 3 years than I ever did building websites.
What’s my destiny, Mama?
When I first joined Hutch it was my intention to try and become a full-time game developer. A quick Google to find out what Unity was, and the obligatory Udemy course and off I went, in my mind I’d be building the next generation of Sonic the Hedgehog in no time. Little did I consider there were like another thousand things I needed, such as artwork or UI design, never mind a working understanding of Android and iOS. I was starting to understand pretty quickly that there was way more to this game (yes I mean that) than a bit of C#.
Stupid is as stupid does.
If you have ever worked in Unity, you will be well aware of the quirks it contains and how it tests your patience to the limit as it consumes every last % of your CPU. But for me, it was the actual mechanics of the game flow that got me bamboozled. Coming from the web where there is (usually) only one thing happening at a time, unlike in games, there are just so many things going on at once, so many dependencies. Then there is the timeline, the canvas and oh the ever so lovely coroutine (not pronounced coo-routine, I just blame that on my Scottish accent). Nope, it’s fair to say that game development did not come naturally to me. But that didn’t matter, it turned out there was an awful lot more code to work on than meets the eye.
There’s pineapple shrimp, lemon shrimp, coconut shrimp, pepper shrimp, shrimp soup, shrimp stew, shrimp salad…
I guess the biggest surprise to me was how many tools and 3rd party software is used outside of the actual game code. The game of course is the meat and potatoes, but there is so much more, and that’s where I have found my place, developing tools as part of the TNT (Tools and Technology) team to support the other departments at Hutch, like Marketing and User acquisition.
The majority of my projects involve developing or consuming APIs, but how we code that can come in various flavours.
Me and Java goes together like peas and carrots.
I first encountered Java over 20 years ago while attending The Robert Gordon University in Bonny Scotland up in Aberdeen. So many of my classmates hated it, but I just fell in love. Oh those curly brackets, that strictness keeping me in line, and of course the platform independence (whatever that meant back then). Years later I actually led a team of 10 developers, and during the hiring process I used to rule out anyone who said they hated Java. How can you love programming and hate Java???
My first project at Hutch was to develop a currency exchange rate server in Java that would pick up rates from a 3rd party API and deploy them to our own server. I had to create a REST API of my own, use MongoDB for the first time, and really ramp up again on what the latest version of Java had to offer, as it had been a while, and I loved it! I was back, now I was going to become the best Java Developer at Hutch.
Of course that didn’t last, how could it when there were so many other exciting technologies out there to try? But at the time I could see the benefit in getting stuck into Java. As a bit of an oldie (is 44 old?) I found that Java hadn’t really changed a lot since I first started back in my Uni days. Java is also renowned for not doing massive updates that often, so in my eyes it was a great way to stay in tech as I “matured”, and to leave the gaming side of things to the young guns out there with all of their hip new frameworks.
Run, Forrest! Run!
Before I knew it I was back on Unity, as my next project took me into the new world of DOTS and the Entity Component System. Nobody at Hutch had used this at the time, and being a web developer the guys thought I could give it a crack to see if I could come up with some cool new playable ads for the marketing department. Well, it turned out we were just a little too early in the game, as it didn’t quite work out, but I did get my first deep dive into TypeScript and that has been super helpful as I took the step into Angular. That was really it for me though with Unity and games, I told the team to get me back home to what I knew best, ASAP!
I’m pretty tired… I think I’ll go home now
After my latest skirmish with Unity I was back on Java, but this time I was back doing what I knew best, JavaScript. It’s a little outdated now, but I used KnockoutJS as my front-end framework for this project, to create a Campaigns service for generating Ads in our games. This has been a fantastic project to work on and shows no signs of slowing down as we integrate it into all of our games.
The really interesting (actually scary) thing was the deployment. In my past life a release was a little nerve wracking just because our government clients were watching on, but really there were not that many end users to worry about. This could not have been different: we were talking millions here, people. Millions of people playing our games!. I just sat and watched CloudWatch on AWS, waiting for errors to appear in the logs. Thankfully we have a great QA team so everything was well tested, so it was all good, whew!
By now I was really in the web groove, and as I mentioned, on our next project we introduced Angular and TypeScript with an S3 Serverless website and a PostGres Database. There are lots of decisions that go into choosing the right tech stack, but at Hutch we are never scared to pivot if there is a better solution out there. Angular gave us much more flexibility than Knockout as we no longer had to use FTL files as our templating engine. And not having a server to worry about was massive, we really do get more bang for our buck with this solution.
This is really where I see myself now, no longer focusing on a specific language like Java, but really becoming a full-stack developer willing to take anything on. The learning curve can be quite steep, and you have to skill-up quickly when you have a deadline in place, but the satisfaction of building something awesome is a great feeling, especially when you bring real value to the other teams.
I’ve even worked on other teams in the company, not just with my team here in Canada. I did a very brief secondment to the games server team to work on their Angular application. If you didn’t realise it, game code is not all on your phone, the majority of Hutch games are server authoritative. This means that the actual functionality and data behind the scenes is performed on servers housed away from your device. This was another eye opener for me, to dig through thousands of files and access hundreds of endpoints to get stuff working. Game code really is beastly, but super fun.
I never thanked you for saving my life.
Hutch really has been such a positive experience for me. Not just the autonomy that I get to code in so many different languages and tools, but also the culture and feeling of value you have working for a company where your achievements are recognised and you can bring genuine value to the organisation.
I honestly didn’t believe companies like Hutch existed, and from what people tell me this seems to be common in the games industry, companies that actually care about their people. It’s not an easy thing to achieve across multiple locations, but whether you visit us here in Nova Scotia, or the Marketing team in Dundee, or even our parent office in London, there is respect and appreciation wherever you are at Hutch. If you are a developer who has never considered working in games, you should have a think, you never know which flavour of technology you might just find yourself working on.
My tech list at Hutch:
AWS
Jenkins
Android Studio
XCode
C#
Java
JavaScript
Angular
Vue
Unity
DOTS
MongoDB
PostGres
WordPress
FTL
Knockout
iOS
HTML
CSS
TypeScript
JSON
BASH
NPM
Brew
Unity
Google Analytics
Look out for more tech blog posts coming soon! Or bookmark the tech blog here: hutch.io/blog/tech/
And for our latest tech job vacancies, head here: hutch.io/careers. We'd love to hear from you!
Image credits:
Running image - unsplash.com
Eat, sleep, code, repeat - unsplash.com