- Details
- Category: Blog
Following up on my previous article about how to get an interview for graduate or junior programming positions, this article will provide some insight on what you can expect at an interview.
This has to have a large caveat, that interview experiences can vary massively depending on the studio, and the interviewers, but I can give some general information based on my experiences having done this at several companies, but bear in mind, this is much more a personal take on my part. Your experience can and will vary.
By this stage, it's likely you will have completed a technical programming test, and I will have reviewed your submission before the interview and taken notes. I'll also have looked through your portfolio and jotted down a few things to quiz you on.
First up, try and relax (easy to say, I know). If you do get nervous and a bit flustered, it's totally fine to ask for a moment to compose yourself and reset. Have a bottle of water to take a pause with. As a hiring manager, I am very aware that the interview environment is NOT the same as a work environment. I have personally hired someone that had quite a meltdown in interview, but I could see it was nerves and they were otherwise a strong candidate. I will take the pressure into account.
You're not going to have much work experience, so we won't spend much time on your CV. I'm not hugely interested in any of your non-games experience or part time jobs, but anything that shows me you can work in a team environment is a positive.
I will start asking questions of your coding test/portfolio code. I'll treat it like any other code review and if I see things I don't agree with, I'll ask why you've done things the way you have to try and get an understanding of your thinking. I'll also pick out things in your code that I think are really good, and make sure that you know why it's good. I will figure out quite quickly if you've cheated and used AI to generate your submissions 😉
It's hard to put a comprehensive list together, but some fundamentals I'll want to establish you understand in C++
- Scope and lifetime of objects and members
- Constructors and destructors
- Stack vs heap allocation
- Common containers (vector, map, list etc.)
- Strings and issues related to use of them
- Alignment and padding
There are some relevant topics that you can get bonus points for demonstrating an understanding of, such as:
- For Unreal roles, understanding the problems of using lots of blueprints and/or object ticks, and strategies to mitigate them
- An understanding of object-oriented vs data-oriented programming
- Tools and methods for finding and fixing a framerate hitchÂ
For graduates, I'll ask about your group projects. I'm not going to focus on your individual contributions, but will ask some questions about your experience of working in a team environment. This is where you can quite easily get yourself in the 'No' pile. Game development is a difficult profession, and needs lots of people to work together in a highly pressured and dynamic environment, so the ability to play nice with other people is absolutely non-negotiable. Launching into a rant about how other people weren't pulling their weight or otherwise having a moan is not going to score you points. I will probe you on challenges you faced working in a group environment, but what I'm really interested in is how you responded and how you resolved the situation.
Depending on timings, I'll put a few general tech question to you, about game engines, recent games, cool tech etc. A warning here, arrogance is an extremely undesirable character trait in anyone, but especially in programmers, and even more so in very inexperienced programmers. Giving me your confident assertion that feature X in engine Y or game Z is garbage because you did something better in a uni module or tech demo, is not going to go down well.
Lastly, I'll always finish with giving you an opportunity to ask questions. Make sure you have a few, it looks very poor to not even have a couple written down, as though you've not bothered to prep.
- Details
- Category: Blog
Sharing here a post I made on LinkedIn recently. I wanted to provide some general advice for graduates/juniors seeking gameplay programming positions. These insights come from reviewing hundreds of applications and many years as a hiring manager across various studios. This ended up being rather long so will be split into two posts.
Step 1 - Securing an Interview
During this stage, hiring managers will be examining potentially hundreds of applications to create a shortlist for the next phase. Bear this in mind.
The primary thing I am looking for is actual code that you have written.Â
Ensure that it’s as straightforward as possible for me to access your best code from your CV with minimal clicks. I don’t have the time to search extensively for it, so please pin the repositories you want me to review on your GitHub profile, which you have hyperlinked right at the top of your CV.
The code must be C++. Obvious exception here being if you want to limit your options and hitch your career to the Unity wagon, which I wouldn't advise. Using C++ and Unreal is never going to work against you in the games industry.
I am not interested in what you have developed using Blueprint in Unreal. At all. If your portfolio only consists of projects made in Blueprint, you will not be invited to interview for an engineering role.Â
When it comes to your code, by all means go to town and build your own engine and make a whole game, you'll walk this first stage in that case! But don't get bogged down being too ambitious. For a Gameplay Programmer role, I would be totally happy if you simply took an Unreal FPS template and implemented a new feature, such as :
- Minimap/marker system
- Pickup/inventory system
- Quest system
- Any little feature from your favourite game!
Include some documentation on your approach to designing the system, starting with requirements.Â
Automated testing coverage would be a big plus.
Cleanly-formatted, self-documenting code is vastly more desirable than reams and reams of comments describing every single line.Â
Don't leave commented out code in, this is a pet hate of mine. Learn to use source control.
Again, this is not to limit your ambition, more to say that something fairly simple but thoughtfully and competently executed, will do you better than a big ambitious project that is a big sprawling mess you never finished or had time to tidy up.
Finally, don't worry about your code not being good enough! I'm not expecting you to be producing the same AAA production-quality code that experienced seniors do, in fact making a few rookie mistakes will give me something to quiz you on at interview! The most important thing is that you wrote some code and I can see it. (I can't emphasise this enough)Â
If you can manage this and have a code repository that demonstrates an ability to take a feature requirement, design and implement it in engine with some nice tidy code and documentation, then you're going to put yourself right at the top of the pile for getting through to an interview stage, which I'll cover in my next post.
- Details
- Category: Blog
Spending a bit more time on the big overhaul of my 3D navigation system for Unreal, UESVON.Â
On the V2 branch on Github you'll find the following happenings :Â
- A complete refactor of data structures, disentangling the core octree data from the actors/components and pathfinding
- Rework of naming to adhere to Unreal standards (I originally authored the plugin back when I was working in Snowdrop so used some weird naming like 'my' prefix for member variables)
- Adding a central subsystem for managing volumes and agents
- Generally organising code and folders
- Serialization versioning
This is all to enable future functionality :
- Multi-volume navigation
- Full automated testing coverage for all core features, nav generation, pathfinding, path following etc.
- StateTree task support
- Path optimizations, funnels, string-pulling etc.
- Enhanced, smooth path followers
- Dynamic regeneration
I'm also building a proper game prototype which will make heavy use of the plugin, so there'll be a lot of real-world enhancements coming as that progresses.
- Details
- Category: Blog
Well where did that year go? Busy times this year, and lots of changes happening. Anyone keeping an eye on my Github will see various things going on.
I've been doing my usual maintenance and keeping my popular plugins updated to the latest Unreal Engine version API changes, but also, if you look at the V2 branch of UESVONÂ , you'll see some big changes are incoming.
I've had a complete refactor of the system in the pipeline for a months, and I'm finally getting it all together. It is going to break both serialized octree data, and the code API (although I think I can keep the Blueprint API stable), so I'm just getting everything done at once in V2 branch before I stabilise and bring it back to main.
The 3D navigation functionality itself is pretty sound at a basic level, but it's not really been made into a useful production-ready plugin, which is what I'm aiming to do. Support for multiple volumes, a central subsystem for managing agents and volumes, dynamic updates, some decent path smoothing and optimisation options, and some nice fluid path follower options.....all incoming hopefully.
I am likely to have a fair bit more free time in the coming months, so here's to a productive 2025!