🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Need Advice Important (advanced questions)

Started by
10 comments, last by 1024 5 years, 4 months ago

STORY : I'm 40 years old, thinking about going back into programming after 20 years... I already did some C++ but I don't know the new stuffs C++14,17,20 etc.. I always wanted to learn 3d graphics and it's my passion compared other kind of programming who seem boring to me..but I'm a bit afraid to go study full time C++ and DirectX or OpenGL to become a 3d graphics programmer after I have read the horror story in the game industry, it doesn't seem like a solid career choice and the pay seem low for the difficulty ratio.

I was wondering if C# with Unity wouldn't be a better choice ? try to make a small game of my own and try to sell it and if it doesn't work, I still have my C# for normal programming job like WebDev etc. The things is I can study 10-15hrs a day for like 3 years, but it take a long time to learn C++ and DirectX when its native + the math etc... So what you guys recommend, because I'm starting to see some beautiful looking game made with Unity on Youtube, could be lot easier to create something managed etc and cross-platform too. I know how studio and AAA games are made I have no Illusion I know you can't make Call of Duty or the next Final Fantasy alone so you have to make a smaller game. Here is a few questions  that I have, if you can help me out, it would be greatly appreciated, sorry for my english I'm french from Quebec :

 

1) How hard and how long does it take to develop 1 of the best 3d engine like CryEngine, Unreal, Frostbite etc and how much % of it, 1 person alone can do on his own these days ? Would it be possible for Carmack to code one today and compete or these days it's impossible alone ? or a beginner to create a 3d room with a character moving around like a shooter to show as a portfolio (in native) ?

 

2) Do you consider 3d graphics programming in C++ with Opengl, Directx etc to be harder than more "normal" programming like Webdev with JS or C#, Java etc ? Do you think it require more programming skill because its native, or it's not true anymore since there is complexity in others programming fields ?

 

3) Do you feel that C++ today is becoming slowly bloated or trying to be too much compared others more modern language like C#, Javascript etc ? Would you go as far as saying C++ is obsolete today or more of a niche language for games and advanced system programming (Photoshop, Word, Windows etc) ?

 

4) Do you guys know how large is the gap between Crysis and Unreal engine compared to Unity with C# in term of performance for making good 3d indie games today ? Let's say we make a good 3d game with Unity and C# will it be slow on Smartphone ?

Advertisement

1) Game engines I've seen are million+ line beasts. I made one myself, parts of it go back 30 years, it is 325,000 lines + libraries + chrome and I've been working full time for almost 10 years. That said, there are lots of places to start. There are free game engines, or parts of engines you can adopt. Unity is pretty awesome.

2) 3D programming is no harder than other programming, the tools however are generally worse and you have to be able to figure out the math.

3) Still using C++ because for games generally you need your code as fast as possible. I've seen a lot of languages come and go over my career - they all do the same thing so pick one you like.

4) Smartphone is a tough platform for 3D, but you can do it with Unity if you like.

14 hours ago, Cloooouuuud said:

How hard and how long does it take to develop 1 of the best 3d engine like CryEngine, Unreal, Frostbite etc and how much % of it, 1 person alone can do on his own these days

Using a game engine like Unreal or Unity you can get to an acceptable result as fast as a day of tutorials get you. Making a game engine by yourself is a long term but interesting job I do for last 6 years in C++ now. I worked part time at it in my spare time (that is nearly 1 1/2 years of work in fulltime I think) and had an iteration process where I throw code away and started completely from scratch but at least it was/is worth it if you don't want to release a game in a couple of months with that.

There are a lot of topics you need to get about and even more management needed as I posted some answeres here related to engine architecture.

I'm on the track of doing anything on my own so using no third-party libs and even prevent using the STL is my goal and I got very far with that. I've seen a lot of engine projects out there in the wild and most of them just threw some libaries from all arround the net together and called that a game engine while others like Urho3D (free and open source) made a good first look and even Cry Engine and Unrealare open source these days. Feel free to take a look at them.

14 hours ago, Cloooouuuud said:

Do you consider 3d graphics programming in C++ with Opengl, Directx etc to be harder than more "normal" programming

It is but because of the debugging capabilities. You won't see a mesh laying on the GPU as you see a buffer you allocated in your 'normal' program and even Shader programming is a world of itself.

14 hours ago, Cloooouuuud said:

Do you feel that C++ today is becoming slowly bloated or trying to be too much compared others more modern language like C#, Javascript et

It depends; if you are using C++14 + with all that fancy shiny language features, it is bloated of stuff you won't need for a game/engine except for a very slow and memory wasting one. SmartPtr dosen't do memory caching and dosen't prevent memory from fragmentizing while Lambdas are a thing to avoid unless you really know what you are doing.

On the other hand C++ has more capabilities of low-level handling than other languages like Java or C# and this is what makes it such powerfull. I love playing with raw pointers and using templates while in our coding guidelines we highly recommend the C++ 99 standard and rarely use some C++ 11 features to keep anything compatible.

14 hours ago, Cloooouuuud said:

Do you guys know how large is the gap between Crysis and Unreal engine compared to Unity with C# in term of performance

Crysis is almost obsolete and you should avoid using Cry Engine. Unreal and Unity are both capable to run well on limited platforms if you know what you are doing. They don't keep ya away from wasting CPU and memory

15 hours ago, Cloooouuuud said:

I'm 40 years old, thinking about going back into programming after 20 years...

Hello youngster ;)

Quote

1) How hard and how long does it take to develop 1 of the best 3d engine like CryEngine, Unreal, Frostbite etc and how much % of it, 1 person alone can do on his own these days ? Would it be possible for Carmack to code one today and compete or these days it's impossible alone ? or a beginner to create a 3d room with a character moving around like a shooter to show as a portfolio (in native) ?

It is not possible for a single person to create something that matches the best game engines. Unity employs 2000 people, they've been developing for years. The idea that you can do that on your own is nonsense. The good news is that you don't have to; people confuse the difficulty of making a game engine with the difficulty of developing a game from scratch without using a game engine. This is possible; although not sensible (I'm doing it because I want to, not because I think it's a better approach).

Realistically the best way to make games is to just use an existing game engine.

Quote

2) Do you consider 3d graphics programming in C++ with Opengl, Directx etc to be harder than more "normal" programming like Webdev with JS or C#, Java etc ? Do you think it require more programming skill because its native, or it's not true anymore since there is complexity in others programming fields ?

Nope, this is mostly just Game Programmer snobbery; however, there is a filter effect. The minimum skill level for entry is higher, which creates a slightly false impression of overall difficulty, but there are top class programmers in basically every field taking on remarkable challenges.

Quote

3) Do you feel that C++ today is becoming slowly bloated or trying to be too much compared others more modern language like C#, Javascript etc ? Would you go as far as saying C++ is obsolete today or more of a niche language for games and advanced system programming (Photoshop, Word, Windows etc) ?

JavaScript is a god awful excuse for a language; please don't confuse it with modern languages such as C#, Rust, or Python. C++ continues to be the best widespread language at what it does and will be around as a major legacy language until long after you and I are retired. However, the need for maximal performance is ever diminishing and, realistically, there's no good reason to favour the C++ of Unreal over the C# of Unity or vice-versa beyond personal preference or considerations such as existing code, or favoured libraries to use with it. Both are easily capable of powering AAA quality games. Outside of games, C++'s diabolically poor Windows development libraries are an issue; C# is simply better for any kind of Windows UI stuff.

Quote

4) Do you guys know how large is the gap between Crysis and Unreal engine compared to Unity with C# in term of performance for making good 3d indie games today ? Let's say we make a good 3d game with Unity and C# will it be slow on Smartphone ?

No. The difference in performance is marginal and far smaller than other concerns.

16 hours ago, Irusan, son of Arusan said:

It is not possible for a single person to create something that matches the best game engines. Unity employs 2000 people, they've been developing for years. The idea that you can do that on your own is nonsense.

The Fledge Engine developed by Deck13, created arround 2013-2014, was made with just a total of 70 employees and maybe a third of them was involved in engine development so your statement isn't true at all. In the end it depends on the team (or person) and the time and tools used to achieve the goal

25 minutes ago, Shaarigan said:

The Fledge Engine developed by Deck13, created arround 2013-2014, was made with just a total of 70 employees and maybe a third of them was involved in engine development so your statement isn't true at all. In the end it depends on the team (or person) and the time and tools used to achieve the goal

How does an engine which doesn't match Unity or Unreal being created by 20-30 people remotely demonstrate that a single person can make an engine that matches Unity or Unreal?

The linked paper article is written about Deck13's work on Fledge and it does well match Unity from their perspective as far as they worked with Unity inhouse and took it as template for their work. It illustrates that it is never impossible even for a single person to make an acceptable game engine with enougth time and motivation. Except that I think most people at Unity are support and sales so anyways ...

So be patient with your "this will never ever happen" statements in the future :)

You seem to be using match to mean "can make a acceptable game with"; I'm using match to mean actually equivalent to. The Deck13 engine is not remotely as full featured as the big engines you can get hold of. Which is not a criticism of their engine; just a statement of fact. 

Can you make a game engine with a team of one? Sure you can. Can you make an engine like Unreal? No, you can't. Of course you can't, if you could it would mean that Unity and Unreal are staffed by incompetents and they're not.

But, in any case,  trying to develop a game engine as a solo devoloper is a mistake; instead you're better to just develop the technology for your game. You don't need to make an engine to make a game.

53 minutes ago, Shaarigan said:

So be patient with your "this will never ever happen" statements in the future :)

If a beginner* starts asking about individuals making game engines, and you give them any answer other than "this will never ever happen", you are doing them a disservice. Everything else is just nitpicking.

* Someone who is 20 years out of touch may be called a beginner for all intents and purposes

Sorry dudes but all of you that tell someone that especially asked for making an engine, even as beginner, to just drop that and instead make a game is not even mistaking but even worse is leading people to the wrong track! Without going too offtopic here, I despise those people that tell anyone that he/she can't do anything 'just because' and this is exactly the fact here.

I don't say anything against telling those people what work is behind the topic, providing resources and so on but there is a huge difference between 'It is not possible' and 'it is possible but hard to achieve'.

Sure Unreal and Unity have some more devs that are driving development but even those are cooking just with hot water and no magic happens here anyways. Unreal for example links the SDL2 library and a lot of other third party libs.The most time consuming part of developing a game engine along with design decisions is learning/developing technologies that weren't available before but they also write blog-posts, articles and make talks so taking their solutions saves a lot of research one would need to do otherwise. You could even take a look at their source code and see what happens behind.

This topic is closed to new replies.

Advertisement