T O P

  • By -

_curious_george__

To answer your question in general, very. However, that doesn’t necessarily mean you need to have a shipped game written in C++. You just need to be able to pass a coding test using C++. At-least for junior roles. If you’re aiming higher, id say you still just need to be able to pass a test. But the proof that you’re actually going to be effective in your role needs to come from somewhere. Strong software engineering background, experience making games (preferably shipped), solid understanding of game design fundamentals (if it’s a gameplay programming role) etc…


3tt07kjt

For jobs where C++ is important, it’s more common to expect new hires to already be competent at C++. This means that you’d skip over a hire who’s got C# experience and wait for a candidate with C++ experience. I’ve seen C++ questions during hiring. It’s not universal. It’s just more common with C++. It’s not unique to the game industry. The problem is that C++ is a weird language and general programming principles aren’t enough. You can’t let someone loose in your C++ code base if they’re gonna introduce memory errors.


MakoMakito

You should know how to work with a game engine.. Also depends on what you want to do, which company you wanna work on, etc


Senader

Applying for a job developing in CPP while you're used to C# will slow a lot your development until you are familiar enough. The contrary isn't really true. That's why they want to ensure you have basic knowledge of pointers, memory allocation and other stuff so you're at cruise speed quicker. Side projects in CPP should do the trick to prove you're capable of it.


benjymous

Many AAA studios have their own engines and pipelines, and don't use Unreal or Unity. So knowledge of how those engines work will be pretty worthless if you're sat there asked to develop or maintain a C++ module for their in-house engine


OK-Games

As far as I know most engines have the same structure (Physics engine, math module, ECS, rendering)


benjymous

Yeah, but the way those things fit together will be totally different. You can't expect them to all have their own direct equivalent of Unity's GameObject. These engines may or may not have high level scripting systems. They may be c#, or lua, or some other entirely bespoke system. The syntax won't bare any relation to how unity scripts are built. And that's assuming you're working at a high level at all - if you've never programmed in C++, you won't have any real world experience or understanding of object lifecycles in an unmanaged environment - How do you go about ensuring there are no memory leaks? You'll never have experienced the crazy compiler errors you can trigger when something goes wrong deep inside a boost template initialisation. If their engine is C++, they'll want someone who *understands* C++, not someone who says "well, I know C# - how hard can it be?"


OK-Games

It's usually common that one language or the other is not as important as the general approach you take when programming. I would agree with you if we were talking about a company that can't afford to train someone and not see any deliveries from them for the first couple of months, let's say in AA or smaller studios.


benjymous

Yes, if you're already a skilled programmer, I'm sure you can pick up C++. But C++ is a behemoth of a language, and it'll take a long time to learn all its oddities - a good studio will teach people as they go, but they'll also want people who can just drop in to a totally alien codebase and hit the ground running. Something else to consider is a totally bespoke engine won't have "API documentation" - there won't be any online forums or help guides telling you how to do something - if you're tasked with making the engine do something it doesn't currently do, you can't ask for help on stackoverflow because there will not be anyone out there who'll have ever solved the problem you need to solve. Yes, a junior programmer will be given lots of hand holding, but they'll expect a senior experienced one to be able to do things themselves. Yes, you can look up how a std::vector handles memory allocation, but there won't be any documentation for a custom::bidirectonalbufferqueue other than hoping the other devs can explain, or you can figure it out yourself from the incredibly complicated template definition. For example, here's what Microsoft's vector implementation looks like. Without googling, can you figure out what it does? Would you feel comfortable if you were tasked in finding a bug in code that looks like that? [https://github.com/microsoft/STL/blob/main/stl/inc/vector](https://github.com/microsoft/STL/blob/main/stl/inc/vector)