Spotlight: Ryan Buxton, Senior Programmer
28th Jun 2024
- How long have you been in the industry?
Six years - How long have you been with d3t?
Six years - What was the first game that you worked on?
Sega Mega Drive Classics (Nintendo Switch)
How did your career begin within the games industry?
I was recruited as a Junior Programmer directly out of university, where from 2014-2018 I was studying for a BSc in Computer Games Programming at Staffordshire University. Whilst in my final year of studies, a recruiter reached out to me informing me that d3t were on the lookout for Junior Programmers. After speaking about the role, he then put me forward, and I later received a coding test.
At the same time whilst this was happening, the leader of my course at the time, organised an engagement with industry veterans, where studios would come in to interview final year students for actual jobs. The aim of this was to give the industry early access to new juniors that were looking for their first roles.
d3t were in attendance of this event, and as a result I had a last-minute interview with our Studio Technical Director and a Technical Director – last minute because they had a docket full of planned interviews and I was already taking part in the application process.
This unorthodox interview, together with the code-test earned me the “normal” interview with the same Technical Director and a Lead Programmer at our old studio site. During the interview I gave a rather different response on the code test, which led to an extended interview to discuss my answers. However, I ultimately passed the application process as I formally received my offer on the way home.
What is it like working at d3t?
As cliché as it may sound, working at d3t amongst this team of like-minded and talented individuals, feels a lot like I’m collaborating with friends on a project.
We have a very relaxed and familiar vibe as we’re working, and every single person is there for one another in whatever way is required and with no judgement. This is not limited to work-related topics either, as only a few months ago, two of my colleagues and friends were more than happy to assist me with my moving home, which I very much appreciated!
This is further reinforced by our clubs and societies (and supporting endless number of mattermost channels we’ve created to talk about the more niche topics that our team are interested), and our top-tier summer and winter parties.
We also have a flexi-time policy which is very conducive to an easier work-life balance. Especially when we have overseas clients or external teams. The implementation of this makes life easier for me, as I get to work around different times of the day. For instance, if I’m required for client/external meetings at an earlier or later time of the day, I’m able to attend these without having to work over my eight hours. Equally it also means that I can spend a portion of the day doing whatever I need to do personally at times suitable to me whilst maintaining my workload.
As a Programmer, what do you typical day-to-day activities consist of?
As a programmer, I would naturally (as one might expect) spend most of my time writing code, investigating bugs and crashes with a view to resolving them, conducting code reviews and more. If I’m also building new features, this might require an element of technical authoring for feature proposals or implementation documentation.
As of late though, all the while trying to manage my work, I’ve started taking on some small leadership responsibilities, so I often keep in touch with my “strike team” and make sure that their days are unblocked and moving forward consistently. I also lead or encourage stakeholder reviews for the work the team is doing, report back issues to my team, and lead and participate in short-to-mid term sprint planning meetings.
What are the current programming challenges we face and how are we overcoming them?
I think one of the most challenging problems for a programmer is trying to work on new systems that have very limited documentation or in-house knowledge.
Two of the projects I’ve worked on had very little documentation (if any) and because of the nature of the projects, we were dealing with proprietary codebases, meaning nobody at d3t at the time would have had intimate knowledge of any of the systems on day one.
This meant that we could only really rely on our code navigation capabilities, which is a product of the navigation tools we would use, and our tactics learned on previous projects/experiences to learn as quickly as possible how all the systems and interact with each other. Which can be a time-consuming process and, in some cases, a project-risk if something needs to be done on a tight deadline.
Of course, as time goes on and the initial team has the knowledge building up (and hopefully documented as they’ve developed their understandings), onboarding future team members becomes easier, but these are often project-specific still. Fortunately (for work-for-hire studios at least), as clients might begin to rely more on different off-the-shelf engines, these are usually documented to different degrees of quality and if we acquire future clients using the same off-the-shelf engines, we build up a project-agnostic bank of knowledge which teams can share.
What are the things that excite you most about your role?
At this stage of my career now, depending on project status of course, I start picking up or being asked to manage more significant tasks or features. This can be kicking off designs for new tech and implementing to completion or a certain stage for somebody more junior to pick up.
This gives me a great buzz because it gives me the chance to flex some creative architectural and/or coding muscles to try to develop cool (and maybe clever) tech that could be easily extensible or integrateable with other systems. It is also a great feeling to know you’ve built the system either to a prototyped or production-ready state and you get great feedback from the stakeholders either for improvements because it’s not quite there yet or requirements have changed or praise because it is exactly what stakeholders are looking for.
What has been the biggest challenge you’ve faced whilst in the industry and how have you overcome it?
For me, one of the most difficult problems I’ve had to solve, was related to memory stomping while I was a Junior Programmer on Mafia II: The Definitive Edition. I’d heard of “memory stomping” as a problem before but had never written code that manifested in memory stomping before. Debugging this was completely alien because it was a case of the program crashing a couple frames after the problem started, and as such debugging was a nightmare. Thankfully, one of the Principal Programmers and Technical Directors was present to help guide me through the process of debugging such issues. With their guidance, which included my learning of the “Data Breakpoint” I was able to deduce that some array traversal arithmetic was going wrong, where the calculation of the array size was performed using one fixed size primitive type and a variable-sized type, depending on target platform architecture.
What has been your most memorable moment working within the industry/or at d3t?
My most memorable moment I think is likely one of the other most difficult problems I’ve had to solve before – we affectionately named this problem “Dumbass* Henry” (*Censored for public consumption) – myself and two other senior engineers spent more time than we would like to admit trying to identify why Henry wouldn’t run down the stairs from the apartment outside The Distillery. We had it pinned on the AI code we were using being potentially ported incorrectly but it turns out that there was a placement of a collider that was not correctly placed, and Henry had managed to run into it but not out of it. Ultimately, we didn’t even need the collider, so we removed it, and job was a good’un! The thing that made it most memorable was the sheer joy of having solved it, knowing how much time was put into its investigation.
Where do you see programming heading in the next 2-3 years?
Great question – although, I’m not sure I see much changing for the programmer in the next couple years, at least where games programming is concerned. It seems to me that we’ve established a solid reliance on Unreal Engine, with technologies like Nanite, Lumen as well as gameplay systems. It’s quite easy to just jump on these so people don’t have to write entirely new rendering systems, AI systems, net-code, etc, from scratch – even some AAA studios are migrating from in-house proprietary engines.
Things like IDEs and supporting tooling seem unlikely to change significantly. I’ve been using Visual Studio since I started at d3t and have had no reason to change and while these tools do receive updates, none have made significant changes to engineering workflows.
A point of contention at the moment, of course – Artificial Intelligence! Now, I’m not 100% clued up on the use of tools such as ChatGPT and the like for day-to-day operations for programmers. From what I’ve heard though, there is too much of a reliance on public domain information to train them and naturally, working on private IPs for clients presents risk for us and/or for clients and so is pretty much a non-starter. We have performed some R&D in this space for an internal project and anecdotally seems to have yielded some positive results. Rendering though has made a significant stride recently in the form of Machine Learning and Frame Generation with respect to DLSS 3 and FSR 3, utilising deep learning techniques to further upscaling capabilities and in some cases enhancing performance by four-times with DLSS 3.
What makes you proud to work at d3t?
The thing that makes me most proud working at d3t is the studio’s commitment to working with the education sector to improve the prospects of new graduates attempting to break into the industry. I remember the struggles of my cohort trying to compete against the rest of the graduate market and land our first roles and it was a struggle.
d3t and Coconut Lizard are represented at many different events working with universities directly, Recruiter Firms and other initiatives all throughout the year, where we provide talks, workshops and in some cases portfolio reviews to give grads the best chance they can to break in. We also have a team of Ambassadors which look to get involved in all these opportunities.
As one of these Ambassadors, I am frequently able to visit my alma mater to provide insight to students by way of Mock Interview Workshops, judging at Staffs Uni GradEx, contributing to their Industry Advisory Panel and this year I have started providing mentorship services to a group of students building small Cross Platform Engines as part of a module.
What advice would you give to anyone looking to get into the games industry as a programmer?
I’m sure this is a cliché response to this topic now but having a great portfolio is key, either as a graduate or associate level applicant. It doesn’t have to show everything you’ve ever written, and it doesn’t have to be a fully-fledged game, but I would suggest:
- Selecting some of your best works.
- Providing some video evidence of some systems/features.
- Creating a synopsis on the proudest one or two features, or difficult problems you faced and how you solved them (adding considerations and justifications.
- Adding links to specific functions/code-files that exhibit the solution for outlined features or problems. (Not a link to the root of the repository).
The idea behind these points is that you are putting your best foot forward as swiftly as possible understanding that most of the people screening CVs and Portfolios cannot really afford to spend significant time trying to understand the candidate initially so doing them the favour here is likely to do you a favour going forward.
We are hiring
Stay tuned for more spotlight features coming soon. In the meantime, if you’re feeling inspired and want to join our team, check out our vacancies page!