Advertisement

Do you think that 3d graphics programming isn't well paid and harder than others programming field ??

Started by March 12, 2019 07:12 AM
9 comments, last by Shaarigan 5 years, 8 months ago

1) Do you think that 3d graphics programming isn't well paid and harder than others programming field ??

2) Are you afraid of horror story in the game industry like EA spouse and Rockstar does it kill your passion for programming 3d engine / games etc compared let's say C# winform or webdev with JS ?

3) Why most game programmer don't use much or all of C++ and C++ new features like C++17 / 20 or the STL etc ?

10 minutes ago, Cloooouuuud said:

1) Do you think that 3d graphics programming isn't well paid and harder than others programming field ??

2) Are you afraid of horror story in the game industry like EA spouse and Rockstar does it kill your passion for programming 3d engine / games etc compared let's say C# winform or webdev with JS ?

3) Why most game programmer don't use much or all of C++ and C++ new features like C++17 / 20 or the STL etc ?

1) Not a fair question. Depends on the engine, what the studio defines as "3D Graphics Programming" (IE optimizing Graphics Pipeline vs programing a shader vs messing around with postFX's) and pay is relative to country.

2) Working for EA is a dumb idea IMHO. Look what they did with the creators of modern warfare 2. Rockstar .... i don't like year long cram sessions and 5-10 year projects, so no.

3) Uhh.... Unreal and Cryengine use C++, Unity uses C#. Usually your limited by the engine. As for new features and 17 and 20.... You'll understand why the moment you have to debug a 22 year old college kids super clever uncommented code. Though most of the engines allow you to use VSO or whatever you want to use.

Advertisement

1) It hard, very hard. But well paid. Graphics programming is drug and fetish.

2) EA and Rockstar are about business. Not about RnD.

3) STL is bad for debug, many unexpected allocations, heap abuse and other. In gamedev performance are "Data Stricture + AZDO". You can implement any(?) useful data structure on plain old data, as array. Indexing (hash) is a problem.

1 hour ago, Cloooouuuud said:

Do you think that 3d graphics programming isn't well paid

It depends. Some studios that have the budget offer or better salary while some studios like where I had an application placed dosen't even offer 1000$ per month for a junior position before taxes. This isn't all related to just graphics programming but to any kind of game programming.

The fact is, if you want to hire (senior) professionals in their area, you have to pay or otherwise won't get the quality/people you are hoping for.

Fearing for not getting enougth to life has broken down many projects and many studios and even the frequence and consistance of salary plays a huge role regardless in what kind of industry you work.

 

1 hour ago, Cloooouuuud said:

Do you think that 3d graphics programming is harder than others programming field

No! It is harder to debug than a tool or a gameplay feature is but not more than for example AI or network programming is. Anything is well documented these days from the big vendors AMD and NVIDIA but also the console vendors Sony and Nintendo.

 

1 hour ago, Cloooouuuud said:

Are you afraid of horror story in the game industry like EA spouse and Rockstar does it kill your passion for programming?

I worked for a lot of horrible managed studios that are either in insolvency or crippling arround too much to die, too less to live but it don't killed my passion for programming and even making games. Those experience come from the profit and the hard makret where publisher expect getting fully polished titles offered instead of giving the budget for a great new title, a market where trainees do the job of regular programmers and employers expect to work 48 hours a day to get the product finished in time.

 

1 hour ago, Cloooouuuud said:

does it kill your passion for programming 3d engine / games etc compared let's say C# winform or webdev with JS ?

The one dosen't mean you won't need the other. C# has established well as tooling language and some big studios like those related to Ubisoft use C# and even JS as their editor language. This dosen't mean no one will ever again use C++.

The fact is that C++ is used exclusively for inhouse solutions from like Ubisoft, EA or Bethesda because it is the language to go when you are writing multiplatform performance optimized code.

 

1 hour ago, Cloooouuuud said:

Why most game programmer don't use much or all of C++ and C++ new features like C++17 / 20?

This is also a question of performance. Even if Unreal, Cry, Frostbite or Snowdrop rely on C++ and also use compiler features of C++ 11, it dosen't mean that the 17, 20 or whatever standard is coming offers usefull features they won't already have in their code base. Lambdas for example are horrible to optimize because you are fully in your compiler's hands here.

Other reason is that those vendors that develop the hardware you want to target like Sony or Nintendo, might not support a higher standard than C++ 11. PS4 and Switch are fixed to the 11 feature set.

I personally even don't use C++ 11 features even if most target compilers GCC, LLVM/clang and MSVC 15/17 support them because nearly every feature you want to write is fully C++99 compilant and just 1% of the C++ 11 feature set is used.

You can take a look at GitHub for Cry and Unreal Engine source code to approve this.

 

1 hour ago, Cloooouuuud said:

Why most game programmer don't use much the STL etc ?

This is a question of performance too. Those STL structs that live there for past 20 years haven't changed much in the way how they work. Vector, Map etc. are ok for regular programs but as a game comes into account, thei lack of for example important features.

Vector allocates memory on the heap but where and how isn't controlable that easy. You need to write a custom allocator but if you do this, you could as well write a custom vector class with a richer set of features. I did this in my engine for example in a simple header file with less than 150 lines of code (excluding comments) and the full feature set of a C# List.

Allocators in game engines might use memory pools, provide some kind of garbadge collection and/or even align the memory to certain hardware boundaries. Things the STL dosen't provide by nature.

The new pointer types smatr_ptr, ref_ptr and shared_ptr are of the same reason not widely used. They allocate memory using the new operator so you don't have control where the object is stored in memory as in the same way as of a vector. They control lifetime of an object and might or might not provide control over the lifetime so as usually you have to do this your own way. Maybe you want to offer lazy loading in a multithreaded environment or cache objects you know are frequently used in your memory pool.

Last but not least convinience and APIs. Some functionality of the STL depends on system level APIs like thread or chrono. You don't know how it is implemented under the hood or want some OS level optimizations then you have minimal to no chance to get that from the STL. I wrote my own thread class and also a chrono timer that were built up from the system APIs also in less than 100 lines of code.

Especially critical are those features of your engine that won't work together well with the STL stuff like the task system I have in mine. Multithreading, locking and switching threads is a hard thing to control using STL containers or pointers and if you fiddle arround with some hardware hacks like fiber based cooperative multitasking it is getting even more worse than it is just right now.

 

Pleae note that this are experience based statements from my personal view working as senior in the games industrie and might stay in conflict with those opinions/experiences of other people

2 hours ago, Cloooouuuud said:

1) Do you think that 3d graphics programming isn't well paid and harder than others programming field ??

For one hand it is very simple becouse it is 100% pure math. By other hand it is very hard becouse it 100% pure math. Also 3D programming involved into any top-paid fields,like a CAD/CAM/Robotics/Science and so on, not into gamedev only.

2 hours ago, Cloooouuuud said:

Why most game programmer don't use much or all of C++ and C++ new features like C++17 / 20 or the STL etc ?

For example becouse STL is good for about anything for cost that it is best for about nothing. Also STL do not utilize all oportunities of C++17. Especially opportunities that C++ have for container navigation and automatic memory (or better say interdependences) managment. It just provide tools that simulate outdated Simula's GC technology and set of basic containers that simulates pascal-like languages datatypes with close to C efficiency. Becouse other schemes of automatic managment is task dependent (it also main reason why C++ turned to flexible smart pointers from unflexible GC). But nothing prevent to make a self-made containers, smartpointers and other elements that best fit needs of concrete task, or ever to make set of templates that allow to declaratively make a required container/smartointer and so on.

Also STL not intended for realtime purposes while most of video games is a soft-realtime software. For example resizeable containers like vector and so on is just nonsence for realtime, becouse absence of required space into preallocated buffer mean that system can not process data with required speed, so it allready crashed regardless is it able or not to enlarge buffer . Ciclyc buffers much better for its purposes, but STL do not have it.

#define if(a) if((a) && rand()%100)

3 hours ago, Cloooouuuud said:

1) Do you think that 3d graphics programming isn't well paid and harder than others programming field ??

2) Are you afraid of horror story in the game industry like EA spouse and Rockstar does it kill your passion for programming 3d engine / games etc compared let's say C# winform or webdev with JS ?

3) Why most game programmer don't use much or all of C++ and C++ new features like C++17 / 20 or the STL etc ?

1) Here is Australia it's very hard to hire graphics programmers. Jobs are advertised for a long time before being filled, and no on internally puts their hand up to say "I can do it". So to me it seems they're in massive demand and not enough people want to fill that demand.

I describe myself as a graphics programmer on LinkedIn and regularly get contacted by recruiters in the US advertising their $100k+ salaries, which is well above the average gamedev salary (but USA, lol no thanks).

2) yes, that's why you've just got to stand up for yourself and say no. If someone tells you that you have to work 80 hours, they're not just an idiot (you'll get more done in 40 due to your health still being infact) but they're an abusive idiot... So you've got no choice but to just say no, or quit. If you say yes, you're part of the problem. Go into the job with that mentality, and you can't be abused. Ask about overtime policies in interviews. Ask if it happens. Ask if it's mandatory.

This is true for non-gamedev jobs too btw.

3) old consoles notoriously had very bad C++ compilers. One in particular was stuck on C++98 with a few 03 extensios... So it's only this console generation that we've started using C++11/14/17 features.

Another compiler from a generation earlier didn't even do COMDAT folding, so even though std::vector<int*> and std::vector<float*> both produce the same binary code (manage an array of pointers) you'd get two copies of that code :o So within the engine I was working on at the time, we were banned from using templates to prevent binary bloat (and I$ performance issues that stem from that)...

Advertisement

Hodgman can you tell me more about Australia and how's life as a graphics programmer there ? Can you earn a good living there coding graphics like what's the average salary and why you aren't interested in moving to the USA what's so different in the style of life compared Australia ?

How your passion for graphics programming started compared Javascript webdev or doing more normal business programming with C# or Java etc theses fields don't interest you as much as Opengl, DirectX, Vulkan etc ? Do you consider yourself as good as some of the major graphics programmer like Carmack ? is it long to learn if I can study like 10hrs a day for 2-3 years ? I am really interested in 3d graphics programming and I own a 1070ti and live near Montreal where the video games business is big but I am always put off and afraid of the horror stories in the game industry, the condition and all that... also if the industry is going the unreal way or frostbite etc it could be very hard and take a very long time to be able to create a "better" 3d engine with a team of your own to develop and learn when they have big budget and huge team... I am more interested in 3d engine development than normal game programming like gameplay system etc

thanks a lot for your time and advices they are important to me, im a system engineer (windows ad, exchange, linux etc) who's thinking about going back to programming, haven't played with C++ in 20 years but I remember mostly everything

On 3/12/2019 at 6:30 PM, Cloooouuuud said:

3d engine with a team of your own to develop and learn when they have big budget and huge team... I am more interested in 3d engine development

This is another question but I wrote an answer some days ago to that topic. The fact is yeah, they have the team and the knowledge and the budget but they also drive the open information/source route. You can look at the Unreal or Cry Engine source code on GitHub and even those that haven't yet released their code like Ubisoft, EA or Bathesda are frequently releasing information in kind of Blog Posts, Articles or GDC Talks about how they archieved their goals. NVIDIA and AMD are releasing graphics related articles too, anything is out there in the net and you just need to grab it.

The problem isn't a huge budget, I'm working in my spare time for nothing on my game engine/engine sdk and have archieved a lot as a single person with just a few hours per week of time. The art of mastering the topic is to have some experience awarded through try/failure, a plan and the motivation to go forward. The most time consuming part of this kind of work is to get into modern technics in diverse topics like rendering using Vulkan or like improving your code using fiber based cooperative multitasking but thats why I say use the information you get from the big players because they already invested time and budget you don't have into research :)

As I already mentioned, a good starting point is to peek at the source code of those who released it on GitHub. To get a competitive engine you'll need to start from scratch but that is not as hard as it sounds from the point when you have a good environment installed with the tools you prefer to use and setup your initial project. Making a plan could be usefull but if you don't care about try/failure iterate your code, it is all fine

Shaarigan do you consider yourself good enough to work in the industry as a 3d graphics programmer or you need more time ? like at which point your good enough when you can create a small room like a 3d shooter with all your knowledge in it reflection, shader, water, light etc etc ?

22 hours ago, Cloooouuuud said:

like at which point your good enough when you can create a small room

No I'm not just a 3D graphics programmer, I would call myself game engine generalist because I had my hands in every aspect of a modern game engine from the core system, encryption, threading up to networking, AI and rendering. I could claim to be good enougth in rendering using GL and Vulkan after reading about how the GPU render pipeline works and writing some shaders in GLSL and CG (Unity) after completeting the OpenGL tutorials and toying arround with the results and also Unity 3D.

Knowing about the GPU render pipeline and some 3D Math is half the way to go because the way Hardware works and the Math behind won't change, it is just how to combine those to get the results of modern AAA graphics.

shaders-4.jpg

Without the chunky trees you would never mind that this "is just only" Minecraft

This topic is closed to new replies.

Advertisement