In August, I started my year-long placement at Sumo Leamington, and in that time, I’ve learned and done so much at work!
Published on March 06, 2022 by Amy Elliott
Sumo Digital Internship/Placement
8 min READ
In August, I started my year-long placement at Sumo Digital Leamington, and in that time, I’ve learned and done so much at work! In this blog, I will be talking about everything I’ve learned (within reason) in the first 6 months as a Placement Programmer on an Unannounced game!
I’m always learning new things every day, and the stuff I’m learning isn’t always programming-related! I’m learning new things about games development in general, and things about other roles, like the process an artist would go through to submit a model and some of the work a marketer would do! And this is because the team I’m working on is small, so I’m able to chat with all sorts of people!
One of the first things I’ve learned is about what profiling is and how it works in Unity. I spent some time looking at the manual on how the Unity profiler works, and then began to document it all! As well as testing any improvements, and seeing if they would help with the performance. Learning this helped me understand how someone may measure performance in their games, so they can optimize it!
After this, I had to present my findings at a meeting that I organized! I hadn’t done something like this before. It went well! It was more of an open discussion, and I learned additional stuff about profiling in this meeting too! Setting up meetings and show-and-tells to present things, and new proposals is something which I’ve done more and more of throughout the first six months! And it’s definitely helpful to do!
I had some tasks to do with user experience, and that helped me learn a bit about how the game flow is structured. These tasks were the first tasks that I had to submit PRs for, and through this, I was able to learn about how this project works with source control and code reviews! For everything, we use Azure DevOps, and the code review process is very similar to what I learned when I worked at Jagex! I really enjoy code reviews, as it allows me to learn from other people’s code as I’m reviewing it! And it also allows me to learn where I can improve in my own code, with discussions about variable naming, code structure, and so much more! - If you’ve never done code reviews before, I really recommend looking into it! You can do it for University code projects, or even your own personal projects!
Similar to code reviews, I’ve had a few tasks to make some of the prototype mechanics into production quality, so this would involve making sure it’s written the cleanest as possible, and it works over the network how it’s supposed to!
Bug tickets were something new to me as well. I’ve fixed bugs before, but as I’ve only worked on small games before my internship and placement, the bugs I came by were never anything big. So, through getting some bug tickets for this project, I was able to learn some good practices! And for some of the bugs, they were unable to be reproduced, so that’s where I learned what speculative fixes are as well! Bugs aren’t that bad after all! On the topic of bugs, some of the bugs which I had were network-related! Fixing these bugs helped me understand more about network programming as well!
I also have been tasked to look more into the AI for the game, as I was assigned to be one of the main AI programmers on the project! This was very exciting! Some of the work involved making the bots more like real players! Working on this has taught me loads about how AI works, and all the different types of things to take into consideration when planning! Before this, I didn’t know too much about AI except some algorithms and basic theory, but now, after working on it for a while, I’ve found something that I really enjoy!
For the backend of the game, the GO programming language is used, and although I’ve not worked on the backend yet, I took some time to learn about the language and made a few little things to help me learn it! I can’t wait to use it in the project!
There have been a few things that I’ve done outside of my normal work tasks!
In September, with the help of Sumo, I attended a Women In Games Livestream at the WIG: Expo!
In the live stream, we chatted about our journey into the games industry, how much fun programming is and how education should cater to code more!
I went to Develop Brighton and met up with a few people from the studio. We had lunch together in an Italian restaurant, and it was lovely! I spent some time after that going around the conference and speaking to some people there. It was really interesting to listen to some of the talks, and chat to some of the companies there!
At the studio, we have learning days, and the topics are alternated. We choose a topic for one learning day, and then a code topic gets chosen for us for the next learning day!
For the first learning day, we had the topic of Unreal Engine Blueprints. I’m kind-of new to blueprints, and so I decided it would be fun to try and remake one of my games called ‘Blocky Road’ in Unreal!
Even though there isn’t too much of a game here, I learned a lot about how blueprints work in comparison to the C++ in Unreal Engine!
This was one of the learning days where we could pick our own topic to study! So, I decided to study pathfinding algorithms, specifically breadth-first search, depth-first search, and Dijkstra’s algorithm. I also began to set up a ‘Pathfinding Library’ in Unity to do with each of those algorithms but didn’t get too far with it and only managed to implement navmesh.
I feel like I’ve solidified my knowledge on how breadth/depth-first search works!
For this learning day, I took one of my old games (Captain Says) - And almost made it multiplayer! I used the Mirror Networking plugin with Unity to do this, and it took a bit of trial and error. It’s nowhere near there yet, but I learnt lots!
This taught me lots more about how the networking code works!
For this, I wasn’t too sure what to do, so I began by making some storyboard artwork of what I wanted my shader to look like and began to put it together. I spent the day playing around with different shader graph nodes.
For one of my other learning days, I decided to spend more time studying Dijkstra’s algorithm. I found a few videos to study with, and I also wrote a program following an explanation of the algorithm on YouTube.
Through following this explanation and reading the code line by line, I was able to understand the algorithm a lot more than I did before.
In one of my more recent learning days, we were tasked to learn about ShaderToy, which is a “cross-browser online community and tool for creating and sharing shaders through WebGL, used for both learning and teaching 3D computer graphics in a web browser.” - This was really interesting, I spent some time browsing through the different projects on there, and then I found a really nice holographic project, and I used that as a starting point to make something like a playing card!
In conclusion, I’ve learned so much about programming in the games industry, and many other things outside of my discipline in my first 6 months on my Sumo Digital placement! I’ve been given so many opportunities to grow!
Although covid has stopped big in-person events, I was still able to meet with a few of my colleagues for social events like lunches and Friday night pubs!
I really recommend placements to students (or anyone at any position) who want to work in the Games Industry! There are many placements from programming to design and marketing, and you really don’t have to wait until your placement year at University to do them either. You can apply to placements whenever!