• Advertisement

should i use a engine or program everything from scratch?

Recommended Posts

Advertisement
29 minutes ago, 0r0d said:
  • takes a larger time commitment
  • limits the scope and quality of what you can accomplish on your own

can you elaborate on these two?

how much does it limits my scope and how long is the time difference?

 

Share this post


Link to post
Share on other sites
1 minute ago, ObjectivityGuy said:

can you elaborate on these two?

how much does it limits my scope and how long is the time difference?

 

time commitment: You have to build all the stuff that's built for you in a third-party engine.  Keep in mind those engines like Unity have hundreds of people working for years to develop those features and test them under many different conditions.   All that stuff translates into time and expertise.

scope and quality: As a single person, you probably will not have the knowledge to build many of the things in a third-party engine, or just wont have the time.  So if you want to make a game, you will have to limit the scope of that game.  That means simpler graphics, fewer assets, fewer levels, possibly worse performance, etc, etc.  Basically, you'll be a one-person studio as opposed to a hundred person studio... which is what you get from using a third-party engine.

But, while you give up certain things, you get many others.  It just depends on what you want to accomplish.  If, for example, you want to make a very nice looking photorealistic FPS within a year or two... then you pretty much need to use an existing engine like Unreal, and even then you'll probably need to pay artists and other people to generate assets for you.   However, if you wanted to make the same exact game while building your own engine, then even if you have the experience and knowledge to build it all, you're looking at at least 2 years of work on the engine before you can even start on the game itself.  If you DONT have the expertise, then you're talking many more years of learning to just get to the point where you know what you need to build (on the engine) before you start to even work on the game.

However, if you just want to make a small(ish) game, then building your own engine might be the best option, especially if you already have experience building engines and building games.  Remember that an engine like Unity has 10,000 features and you might only need 100 of them for your game.  And, your game might have special requirements that are not met by Unity.  So, in the time you make that game in Unity you could probably just make it yourself with your own engine, and at the end you learned more and had more fun.

Again, there's many, many factors that come to play in this decision.  Think of what your goals are, what game you want to make and what the features you need are, how much time you want to spend, and stuff like that.

Share this post


Link to post
Share on other sites
6 minutes ago, 0r0d said:

Again, there's many, many factors that come to play in this decision.  Think of what your goals are, what game you want to make and what the features you need are, how much time you want to spend, and stuff like that.

can you give me a example of things that require a custom engine to do or that are better done on a custom engine?

Share this post


Link to post
Share on other sites
32 minutes ago, ObjectivityGuy said:

can you give me a example of things that require a custom engine to do or that are better done on a custom engine?

Performance would be one such example.  Third-party engines like Unreal or Unity are general purpose engines.  They might be optimized for one type of game, lets say for FPSs, but otherwise they're going to make a lot of compromises and will have a lot of overhead that you might not need.   So, if your'e making an RTS game, for example, you might be ok if you're creating a few hundreds units, but if you get into the thousands then that engine might just be unable to handle it... at least without some serious code changes on your part.  Or, you might find yourself writing entire systems and bipassing their built-in object management.  So in essence you might still be writing what amounts to a custom engine that runs inside of the existing third-party engine, and only uses some of it's tools and maybe the rendering, etc.  But if you just build your custom engine with the purpose of handling thousands of units, then you would likely be able to achieve much better performance.  Again it's a tradeoff, you gain more flexibility and control with your own engine, but you lose other things like the tools, shaders, or ease of use that comes with something like Unity.

Another example would be if a new platform comes out and you want to support it right away.  Lets say something like Ouya comes out and you think your game would be perfect for it.  If the engine doesnt support it, you're basically out of luck.  But with your own engine you can support whatever you want whenever you want.

You also have to worry about the engine company changing up the licensing terms on you, or in some cases the engine might stop being supported altogether if the company goes under, or just decides to move in a different direction.  Once you've married yourself to a third-party engine it can be very difficult to change away from it if you need to.  Or, maybe you want to develop a product that you want to license to others.  Owning your own IP makes this easier.  If your product relies on licensing other code, it might become very problematic.

Also, for some people making your own engine is just more fun, and getting deep knowledge about how an engine and a game works is more important for them.  

Share this post


Link to post
Share on other sites
23 minutes ago, 0r0d said:

Also, for some people making your own engine is just more fun, and getting deep knowledge about how an engine and a game works is more important for them.  

thanks for the help i guess i will try to make a a simple 2d engine and see where it goes if i just cant get it to work no matter what i will try unity

Share this post


Link to post
Share on other sites
7 hours ago, 0r0d said:

That means simpler graphics, fewer assets, fewer levels, possibly worse performance, etc, etc

It isnt necessarily a fact that each custom engine is in general worse than a "normal" third-party one, this is wrong. You have as much tutorials out these days on how to make good looking graphics and setup your pipeline based on modern graphics APIs, indie games with all the assets they need (since the poster asked for a custom engine not for production ready assets) and of course as much levels as AAA games (what has a level count to do with the engine?) and at least performance? The tricks the big players use are not top secret anymore while you could access CryEngine, Lumberyard and of course Unreal's source code and/or read/watch GDC talks, you have these resources these days to get the same knowledge that the big players have.

Sure this is a beginners question and it might be adviseable to start with a game on an existing engine first but however you are mixing game engine development with game development topics and those are two different parts of knowledge.

Even if I like the list in the first post, the more important question is what do you want to achieve? Make a game; use an existing one first and later maybe when you got the knowledge you just could try to start an engine or do you want to know how everything behind the scenes work; start reading about game engines and then you could begin with development after gathering some basics

Share this post


Link to post
Share on other sites
12 hours ago, Shaarigan said:

It isnt necessarily a fact that each custom engine is in general worse than a "normal" third-party one, this is wrong.

I was speaking generally to give the OP a sense for the typical tradeoffs of writing your own engine vs using an off-the-shelf engine.  Of course in individual cases, someone can achieve equal to or better results in specific aspects of engine design or game quality.  But, generally speaking, one person spending X amount of time cant match 100 full-time developers also spending X time.

Edited by 0r0d

Share this post


Link to post
Share on other sites

I will give you simplest answer possible.  If you goal is develop a game, I would recommend using an existing engine that seems to suit your taste or has been used to develop similar games to your idea.  All engine generally have a showcase page where they show off the creations that have been made.  If your goal is to better understand the underlying mechanics of a game engine or you really have an interest in engine design pick a library and begin designing an engine.  

 

Share this post


Link to post
Share on other sites

You kind of have to find your own path. People can give you advice all day long, but at the end of the day you have to live with your decisions. Probably the best thing to do is do both. Or at least explore both. Try finding out what it takes to put together your own engine and try some commercial game engines. Experience will teach you a whole lot about what you prefer.

I would really recommend a game engine like Unity for someone just starting out because it's difficult but it's also easier in some ways. I've dabbled in Unity. I'm currently learning Unreal engine. I've built a very basic game engine in DX11 and converted it to OpenGL 4.5. Doing your own game engine is a path few choose to take these days. To a certain extent you are re-inventing the wheel. But some of us like building our own log cabins. :-)  The important thing is you work at it pretty much every day and keep learning. It's going to take years regardless of which path you take.

 

You might check out my YouTube videos on HLSL. You can skip to the second video as the first gets into mostly XNA and the differences of HLSL for XNA as opposed to DX11. Those videos explain a lot about how 3D games draw to the screen. Drawing to the screen is just a small part of making video games, but it's an important part. That should give you some taste for what it's like to build your own 3D engine. My website has Visual Studio DX11 and OGL 4.5 source code you can download and see what a very basic game engine in C++ is like when you build it pretty much from scratch.

It's very different from learning an engine. For me, I like learning the craft and how things work at the lowest level. So, I focus more on C++ and doing things from scratch. But I'm also learning Unreal engine right now to be able to put things together quickly and such. There's really no reason you can't learn both.

Share this post


Link to post
Share on other sites

The answer is simple: Don't start from scratch. Use a good engine.

The games nowadays are way more complex than Pongs and Marios 30 years ago. So if you want to make a true game, don't try to rebuild the wheels. Let engine cover those endless tech details, focus on new design and make your time count.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Advertisement