• Advertisement
Sign in to follow this  

First 3D engine. Already made or minimalistic?

This topic is 2351 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello all! I've been meaning to transition from 2D games to 3D games for some time now. I've most experience in RTS games so I will be doing that.

On one hand there's a lightweight renderer; Irrlicht. However considering it's a renderer and not a game engine(only basic collision, etc..) , I would have to write most of the things myself.

On the other hand there's a full blown engine like Cryengine3 for example. Although it is mostly complete, I would need to first understand the various part of the engine and it's implementation enough to be able to try and transform it into an RTS engine.

My question is, which would be easier for me to transition to?

Share this post


Link to post
Share on other sites
Advertisement
In my opinion, it really depends on your personal goals.
A full-blown game engine may be the fastest way to get a game off the ground, but you will have a massive learning curve to overcome, and you may find it doesn't do what you want, forcing you to implement workarounds that can feel hackerish. There is also the problem of property rights.

Share this post


Link to post
Share on other sites
It would be easier to transition into using a full-sized engine such as Unreal Engine 3, Unity 3D, or CryEngine 3.
You also have the option of taking various parts of existing engines and combining them to make a new one. Ogre + Bullet Physics + <insert sound library> + <insert AI engine> etc.

Combining engine parts might be very rewarding. Or it could be an annoying pain in the ass keeping you from getting to what you want to be doing. It is up to your personality.
If you want to hurry up and see your product come to life, you should use an existing engine.


L. Spiro

Share this post


Link to post
Share on other sites
What is your goal?
If it is to make a game then use an engine that suits the job.
If it is to make an engine, make a game and refactor into an engine.
If you know what you want isn't available in any commercial engine available today or is more feasible in your own engine (chances < 0.1%) then go make an engine based on those requirements.

Share this post


Link to post
Share on other sites
Thank you all for your replies! Didn't expect them so quickly! :D


In my opinion, it really depends on your personal goals.
A full-blown game engine may be the fastest way to get a game off the ground, but you will have a massive learning curve to overcome, and you may find it doesn't do what you want, forcing you to implement workarounds that can feel hackerish. There is also the problem of property rights.

This is what I'm worried about. I've already tried Cryengine3, and although I got results (3d person cam) from tutorials, I still feel that the whole engine is a big black box to me; especially since I do not have any prior experience in 3D engines. (meshes, 3D collision, etc..) , and so any further alteration would be exponential in complexity.


It would be easier to transition into using a full-sized engine such as Unreal Engine 3, Unity 3D, or CryEngine 3.
You also have the option of taking various parts of existing engines and combining them to make a new one. Ogre + Bullet Physics + <insert sound library> + <insert AI engine> etc.

Combining engine parts might be very rewarding. Or it could be an annoying pain in the ass keeping you from getting to what you want to be doing. It is up to your personality.
If you want to hurry up and see your product come to life, you should use an existing engine.


L. Spiro


This is what I'm thinking about as well. However I'm not quite familiar with integrating various libraries into one. The couple of 2D engines I built were made from scratch (well LWJGL :P )
So I have no idea how much work it would cut down..


What is your goal?
If it is to make a game then use an engine that suits the job.
If it is to make an engine, make a game and refactor into an engine.
If you know what you want isn't available in any commercial engine available today or is more feasible in your own engine (chances < 0.1%) then go make an engine based on those requirements.


I'm trying to balance between the two. What I mean is, I want to make a game, but on the other hand I also want to understand the engine behind it. Especially since I will have to turn the engine from an FPS one into an RTS engine.

Sorry if I'm not making a lot of sense >.<

Share this post


Link to post
Share on other sites

[quote name='__Homer__' timestamp='1315990644' post='4861446']
In my opinion, it really depends on your personal goals.
A full-blown game engine may be the fastest way to get a game off the ground, but you will have a massive learning curve to overcome, and you may find it doesn't do what you want, forcing you to implement workarounds that can feel hackerish. There is also the problem of property rights.

This is what I'm worried about. I've already tried Cryengine3, and although I got results (3d person cam) from tutorials, I still feel that the whole engine is a big black box to me; especially since I do not have any prior experience in 3D engines. (meshes, 3D collision, etc..) , and so any further alteration would be exponential in complexity.
[/quote]
This is true, if you want to learn about how a game engine works under the hood. For making a game, though, this is irrelevant - everything is black boxed to an extent in programming; a game engine is after all just another layer of (useful) abstraction. Also, the render part of any game engine is quite small compared to the rest of it - maybe that's why you are feeling so lost? If so, maybe a few 3D excursions might get your feet wet? :)


[quote name='YogurtEmperor' timestamp='1315990658' post='4861447']
It would be easier to transition into using a full-sized engine such as Unreal Engine 3, Unity 3D, or CryEngine 3.
You also have the option of taking various parts of existing engines and combining them to make a new one. Ogre + Bullet Physics + <insert sound library> + <insert AI engine> etc.

Combining engine parts might be very rewarding. Or it could be an annoying pain in the ass keeping you from getting to what you want to be doing. It is up to your personality.
If you want to hurry up and see your product come to life, you should use an existing engine.


L. Spiro


This is what I'm thinking about as well. However I'm not quite familiar with integrating various libraries into one. The couple of 2D engines I built were made from scratch (well LWJGL :P )
So I have no idea how much work it would cut down..
[/quote]
For some things, a lot. Others, not so much. Physics is one you can usually integrate and save a lot of time on. Of course, integrating different libraries is not going to be as easy as putting the right #include and headers in place - it requires quite a bit of work.

[quote name='DarklyDreaming' timestamp='1315991920' post='4861452']
What is your goal?
If it is to make a game then use an engine that suits the job.
If it is to make an engine, make a game and refactor into an engine.
If you know what you want isn't available in any commercial engine available today or is more feasible in your own engine (chances < 0.1%) then go make an engine based on those requirements.


I'm trying to balance between the two. What I mean is, I want to make a game, but on the other hand I also want to understand the engine behind it. Especially since I will have to turn the engine from an FPS one into an RTS engine.

Sorry if I'm not making a lot of sense >.<
[/quote]
So, which takes precedence? The game or the engine? To put it this way: envision the end-product, which is more important to you - the 'engine learning experience' or the final game?
If engine - then make a game and refactor it into an engine.
If game - use an existing engine which fulfills your game's requirements.

It is to be noted that building an engine and learning someone else's engine takes just about the equal amount of time - however, the end results differ vastly. One reason why I'd prefer to work with an prebuilt engine, even if I had no prior experience, is that it is harder to fuck up majorly since the design is already in place - rolling your own it all depends on your skill and while yes you are more 'empowered' you also take full responsibility for maintaining an engine and making a game; if the engine part is irrelevant why do both?

That, and it's unlikely any single programmer will beat CryEngine or UDK for general purposes ^^'

Share this post


Link to post
Share on other sites
There is no way in hell that I am going to pay blood money for a commercial game license (yes I want to sell games), and then pay a 20 percent cut of my sales on top of that, no way in hell, I would rather write my own, thank you very much! Talk about an incentive for competition!

Share this post


Link to post
Share on other sites
That, and it's unlikely any single programmer will beat CryEngine or UDK for general purposes ^^'

I am afraid I can’t agree here, because that is exactly what I am doing.

But the original poster should definitely not be lead to believe he or she can do it.

[font="arial, verdana, tahoma, sans-serif"]

There is no way in hell that I am going to pay blood money for a commercial game license (yes I want to sell games), and then pay a 20 percent cut of my sales on top of that, no way in hell, I would rather write my own, thank you very much! Talk about an incentive for competition!

[/font][font="arial, verdana, tahoma, sans-serif"]Then I am sure you will love my licenses! With the downside being that you will have to wait a while.[/font]



L. Spiro


[EDIT]
Curious to know why I got a -1 for this. Although I acknowledge it sounds like an advertisement, which is not typical of any other post I have made.
[/EDIT]

Share this post


Link to post
Share on other sites

[quote name='DarklyDreaming' timestamp='1316007144' post='4861538']That, and it's unlikely any single programmer will beat CryEngine or UDK for general purposes ^^'

I am afraid I can’t agree here, because that is exactly what I am doing.

But the original poster should definitely not be lead to believe he or she can do it.


[EDIT]
Curious to know why I got a -1 for this. Although I acknowledge it sounds like an advertisement, which is not typical of any other post I have made.
[/EDIT]
[/quote]

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...

No idea who gave you a minus one, but my guess comes to that your arrogant comment gave you that. smile.gif

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement