What is the current way - Technology

Started by
5 comments, last by Hodgman 6 years ago

Back around 2006 I spent a good year or two reading books, articles on this site, and gobbling up everything game dev related I could. I started an engine in DX10 and got through basics. I eventually gave up, because I couldn't do the harder things.

Now, my C++ is 12 years stronger, my mind is trained better, and I am thinking of giving it another go.

Alot has changed. There is no more SDK, there is evidently a DX Toolkit, XNA died, all the sweet sites I used to go to are 404, and google searches all point to Unity and Unreal.

I plainly don't like Unity or Unreal, but might learn them for reference.

So, what is the current path? Does everyone pretty much use the DX Toolkit? Should I start there? I also read that DX12 is just expert level DX11, so I guess I am going DX 11.

Is there a current and up to date list of learning resources anywhere?  I am about tired of 404s..

 

 

Advertisement

The path depends on what you want to achieve.  What are your goals, what do you want to accomplish?  Are you just interested in doing some hobby stuff, or do you want to become a professional developer?  What areas of game development interest you?

I already am a professional developer, have been for more than a decade. I am not a professional game developer and have no desire to be.

I do have a desire to make a working title, while maintaining the flexibility to create my own non-graphic related systems in native C++.

Just to add my few cents after logging here after years of absence. 

I'm 20+ years game developer. At work I am strongly pressed against the wall to use Unity. After a while with Unity you will forget what good programming is and you will stick with static members/classes, public variables and singletons (not to mention the hard time you will get with enums). I really wanted to get in touch with UE4 but unless you are small cog in AAA title machine or have really dedicated team who want to make game (even just in blueprints), there is a little chance to use it.

Modern C++ is a mess, when it comes to developing games. Few years ago it was even advised to use any alternative for all containers (the best at the moment would be EASTL), though luckily it got to some stable point with C++11. There is so many things put into C++ nowadays that from time to time I'm finding myself changing a really beautiful, clean C code into some C++ monster (not to mention doubtful speed improvement). Doom3 had it nice - they use C inside of C++ and somehow got away with that. Few years ago it was really cool as you could use C++ to make mobile games (Objective-C++/Android NDK), now there is Swift/Kotlin used as a main road.

The gfx API world was never that fragmented as today. OpenGL is being replaced by Vulcan. DirectX goes really strong and now with their raytracing techniques it is even more attractive, but for the price of being stuck in M$ bubble. Apple has their own Metal and even if they still support OpenGL, their main focus is to get people stuck in their own fruit garden (luckily recently it got unofficial Vulcan support). Consoles nowadays use OpenGL or their own gfx pipelines (except XBox of course) - I have no clue how it is with Vulcan there, though. 

I have my small game engine written in C++/OpenGL. It is portable up to some point (So far it is Windows/OSX/iOS) . Every time I spend my extra time to add some feature or just refactor some parts, I start thinking is it even worth it. There are some noble examples of games using their own engines (like Darkest Dungeon) and they also had their fair share of problems due to OpenGL 3.1 not working on older hardware.

There are so many techniques nowadays that it is scary. I'm not talking only about gfx technologies, but also coding techniques to squeeze more out of several cores and GPU.

Resources to learn from: sites are dying like flies in the heat. Sometimes if you are lucky you can find something just by googling, otherwise you have to know what to search for and try github. Surprisingly sometimes there are nice YT tutorials where people code. Unfortunately usually you will have to filter somehow dumb questions about Unity/UE4 blueprints and some really basic stuff.

9 hours ago, Kundelstein said:

Modern C++ is a mess, when it comes to developing games. Few years ago it was even advised to use any alternative for all containers (the best at the moment would be EASTL), though luckily it got to some stable point with C++11. There is so many things put into C++ nowadays that from time to time I'm finding myself changing a really beautiful, clean C code into some C++ monster (not to mention doubtful speed improvement). Doom3 had it nice - they use C inside of C++ and somehow got away with that. Few years ago it was really cool as you could use C++ to make mobile games (Objective-C++/Android NDK), now there is Swift/Kotlin used as a main road.

It's honestly not that bad.  Until a profiler tells you to, just use the STL containers.  It's not that difficult to replace later if you implement the same standard interfaces either.  There are also quite a few useful additions to C++ (and others you don't have to use either), lambda's being one nice thing along with std::function (when not used excessively) and constexpr.  You can still quite easily develop for iOS/Android using C++, it's actually slightly easier now too with Visual Studio's supporting both platforms, along with GCC or clang compilers.

 

9 hours ago, Kundelstein said:

The gfx API world was never that fragmented as today. OpenGL is being replaced by Vulcan. DirectX goes really strong and now with their raytracing techniques it is even more attractive, but for the price of being stuck in M$ bubble. Apple has their own Metal and even if they still support OpenGL, their main focus is to get people stuck in their own fruit garden (luckily recently it got unofficial Vulcan support). Consoles nowadays use OpenGL or their own gfx pipelines (except XBox of course) - I have no clue how it is with Vulcan there, though.

We used to have 3Dfx, OpenGL and DirectX.  Now we have Metal, OpenGL (being phased out eventually), Vulkan and D3D.  One more contender, not horrible.  And as you mentioned, Vulkan is now wrapped on MacOS/iOS over Metal so you don't even have to learn that.  Based on this NDA free PS4 guide it looks like the PS4 supports GNM but Sony has said it is committed to offering Vulkan support (maybe for their next console).  As you mentioned XBox One uses D3D.  So honestly it's kinda down to Vulkan, OpenGL ES for Android (but they're moving to Vulkan too) and D3D.

Also, why are you changing "clean C code" into "C++ monster" code?  If it works, it works.

 

As to answer the OP'er @Fleshbits, the D3D SDK kinda still exists, just comes with Windows.  I would personally go Vulkan, that way you can work on most platforms.  That or D3D11.  There are plenty of resources for both though.  I'm with you on Unity/UE4 :)

"Those who would give up essential liberty to purchase a little temporary safety deserve neither liberty nor safety." --Benjamin Franklin

On 14/04/2018 at 6:12 PM, Kundelstein said:

Consoles nowadays use OpenGL or their own gfx pipelines (except XBox of course)

Nintendo Switch is the only console that uses mainstream graphics APIs (GL/Vulkan supported). Every other console uses/used a custom API. 

PS4 has GNM, which is lower level than Vulkan, plus a wrapper around that called GNMX which makes it look a little closer to a D3D11 style API, and then a semi-unofficial wrapper around that to make it look like a GLES style API. Those wrappers are only recommended to get started, with the recommendation to eventually port to raw GNM.

Xbone has D3D11.x and D3D12.x which are very similar to their PC counterparts, while also being very different in some key areas. 

PS3 had GCM, Xb360 had D3D9.x (again, very different to PC), Wii had GX. Everything earlier than that was even more fragmented as the concept of a GPU hadn't solidified yet... An indie dev who shall remain unnamed started a rumour that GL was the fastest API on PC and that it was used by the PS3 years ago, and for some reason many people still regurgitate this as fact... 

If you're making a cross platform game, you've always needed to have multiple graphics API back-ends. Even if "cross platform" just means Win/Linux/Mac to you and you believe in "OpenGL everywhere" - that's at least 7 different OpenGL implementations that you need to test your code against and almost certainly make code tweaks/fixes for (every manufacturer implements the entirety of GL from scratch, with differing core behaviour, extension support,  performance characteristics and shader-code parsing abilities). It's quite likely cheaper to use D3D and Metal rather than doing the extra GL QA work on your Windows/Mac ports! :D

On 19/02/2018 at 5:29 AM, Fleshbits said:

There is no more SDK, there is evidently a DX Toolkit,

The SDK was rolled into the Windows Platform SDK. The toolkit is the equivalent of the old D3DX library - very useful utilities that most apps will need, but aren't "core" enough to be part of the D3D API itself. 

"Practical rendering and computation with direct3d 11" is my go-to reference for D3D11 :)

This topic is closed to new replies.

Advertisement