First 3D engine. Already made or minimalistic?

Started by
12 comments, last by ElieHaddad 12 years, 7 months ago
No one person can compete with a team of experienced programmers in engine production speed. Even if you have the most solid understanding of the underlying math, you cannot physically program and test faster than that team.

Does that mean you cannot produce an engine with many of the same bells and whistles? No. You can. Is it a waste of time? depends on if there is an engine with a license you can use to your advantage and it suitable to your game.



Yeah, because Mr. JoeAverageNobody is probably that much smarter than the engineers who designed the most complex game engine to date and who are all experts in their respective fields and have written numerous white papers on the subject. Oh, but maybe you were being ironic...?
[/quote]

There is practicality and then there is just plain small, defeatist thinking. I very much believe this statement is the latter.

If everyone thought like this, there would never be innovation, never be trial and error, never be expansion of the definition of what a game can be.

Not every engine made by the big boys is suited for a game an independent mind can dream of. Most of them are built using ideas taken from research papers. Carmack did it. It's always been like this. There are terrain LOD algs that are beyond 30 years old. Papers detailing faster culling, faster physics approximations, faster everything dating before I was born.

IMHO and it is MO, the fanciest of engines today is only implementing many of the better algs from papers from universities. The engineers at the big companies do not get to do much research and don't come up with ground breaking new ideas all the time. They are implementing ideas that have been available to all of us for a long time.
Advertisement
I see. My post came off as arrogant. My apologies.



Yeah, because Mr. JoeAverageNobody is probably that much smarter than the engineers who designed the most complex game engine to date and who are all experts in their respective fields and have written numerous white papers on the subject. Oh, but maybe you were being ironic...?

Your technology would have to be earth shatteringly groundbreaking to be considered an advancement from either of those two mentioned above - otherwise, it's simply unfeasible to even replicate their technology to the full extent within any reasonable amount of time without a highly experienced team of programmers. Frankly, your comment comes off no better than the Euclideon guys...

Most teams are actually composed of a few good guys and a bunch of pawns. It is true that teams can produce results on more subsystems at the same time, but one person working alone (and often) does not have the hassle of making daily progress reports, attending meetings, and synchronizing with others.
Additionally, that one person has the full grasp of every subsystem in the engine, and in detail. Bugs are less frequent and fixed faster, etc.
And in my particular case, this is the 3rd game engine I have made and the second commercial-sized one. So I have a lot of source code at my disposal for referencing (and sometimes copying), helping me be just that much faster.

No, it is still not as fast as a large team, but not as slow as you would think.



I'm a bit curious here. I believe that a single programmer with a lot of motivation and work ethic can make a usable 3D engine by himself, but for a single programmer to make an engine on par with Cry or UDK.... that person would have to be an MIT prodigy and the most gifted programmer in the world. Which brings to question why they would even make a 3D engine as they could have a multimillion dollar salary.

Unless that person has a goal of starting his or her own middleware company.



No one person can compete with a team of experienced programmers in engine production speed. Even if you have the most solid understanding of the underlying math, you cannot physically program and test faster than that team.

Does that mean you cannot produce an engine with many of the same bells and whistles? No. You can. Is it a waste of time? depends on if there is an engine with a license you can use to your advantage and it suitable to your game.

Agreed, but as for wasting time, I hinted at starting a middleware company later.
So for me this is the future. And I don’t even need to fully reach Unreal Engine 3, CryEngine 3, or Frostbite 2. Actually, realistically, I feel I probably cannot match Frostbite 2 alone.
I only need to make my product competitive, and then I plan to hire a team mainly to flesh out the tools.



In case I came off as arrogant before, actually I have asked and probably still will some of the stupidest questions on these boards. It is not really about how much you know. It is about how much you know how to learn.
I am realistic, so I won’t feel terribly disappointed if I do not meet or beat CryEngine 3, but I will have a blast during the journey and will walk away with much more experience.



As for the future of Frostbite 2…
Both DICE and Unity 3D are aware of this so I think it is not a secret.
I mentioned that Unity 3D has the right people for competing with Frostbite 2 once. It turns out that 4 of the best programmers of the Frostbite 2 engine left DICE and now work for Unity 3D. I also met one of the senior staff of Unity 3D who used to work for CryTech.
These big middleware companies are losing a lot of their top staff. You would be surprised to see just how few strong programmers they really have left.


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

To the OP - I suggest a hybrid approach. Build some small prototypes to learn the basics of how an engine organizes data, handles animation, integrates various services like graphics/physics/AI, and so on. Experiment in a sandbox and learn what you can in throw-away code. Don't stress about making it overly elegant or neatly engineered; the point in this phase is to make mistakes so it becomes more clear why large-scale engines do things the way they do. Nothing will teach you the reasons behind "best practices" like letting yourself get bit by the worst practices.

As you gain some insight into various aspects of 3D engines by virtue of building small, simple ones, you should find that the larger scale off-the-shelf engines become much more approachable. The terminology and mindset will stop being an obstacle to your productivity, because you'll have gained familiarity with those things in your own experiments. You also don't have to worry too much about reinventing any wheels; you'll know enough to appreciate the motivation behind making wheels round, but you don't have to go to all the trouble to build your own wheel assembly line. ... aaaand I think I just beat the hell out of that metaphor :-) Oh well.


To YogurtEmperor - this is thoroughly off-topic, but I don't see anything wrong with your posts. Maybe somebody just needs a hug. At the risk of going thoroughly into OT territory, it really irks me that voting on posts (both positive and negative) doesn't demand an explanation... but oh well.

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

Thank you all again for your replies.


To the OP - I suggest a hybrid approach. Build some small prototypes to learn the basics of how an engine organizes data, handles animation, integrates various services like graphics/physics/AI, and so on. Experiment in a sandbox and learn what you can in throw-away code. Don't stress about making it overly elegant or neatly engineered; the point in this phase is to make mistakes so it becomes more clear why large-scale engines do things the way they do. Nothing will teach you the reasons behind "best practices" like letting yourself get bit by the worst practices.

As you gain some insight into various aspects of 3D engines by virtue of building small, simple ones, you should find that the larger scale off-the-shelf engines become much more approachable. The terminology and mindset will stop being an obstacle to your productivity, because you'll have gained familiarity with those things in your own experiments. You also don't have to worry too much about reinventing any wheels; you'll know enough to appreciate the motivation behind making wheels round, but you don't have to go to all the trouble to build your own wheel assembly line. ... aaaand I think I just beat the hell out of that metaphor :-) Oh well.


To YogurtEmperor - this is thoroughly off-topic, but I don't see anything wrong with your posts. Maybe somebody just needs a hug. At the risk of going thoroughly into OT territory, it really irks me that voting on posts (both positive and negative) doesn't demand an explanation... but oh well.


After reading your posts I decided to go with Irrlicht and make a small 3D engine on my own. So far it's great. There are plenty of tutorials in how to use the engine's capabilities as well as showing the inner layouts of the engine! I'm starting to get an idea how it's all patched together, and I'm finding it really really intuitive as an engine (maybe because it's lightweight and just a renderer?). I'm going to stick with it for a while, make a small prototype game like you suggested and see how things go.
I might even decide to do my whole game in Irrlicht if things stay this smooth!

Thank you for the great reply :D

This topic is closed to new replies.

Advertisement