Advertisement

should i use a engine or program everything from scratch?

Started by December 07, 2017 10:01 PM
12 comments, last by RogueOne 6 years, 11 months ago

what do people normal do do start form scratch or use engine?

can someone tell me the pros and cons of each?

What people "normally do" depends on a lot of things.  If you want a better answer you should ask a better question.

Building your own engine

Pros

  • you have full control over what it does and how it does it
  • you learn more about how engines work and how they're built, maintained, etc
  • it's more challenging, and that's more fun for certain people
  • you can make changes faster
  • you own the IP

Cons

  • takes a larger time commitment
  • limits the scope and quality of what you can accomplish on your own
  • harder to find people to collaborate with who are familiar with the tech

Using a third party engine

Pros

  • you can build a game faster
  • you need less expertise to get started
  • easier to find people to collaborate who are already familiar with the engine, editor, and data pipeline
  • you get more and better features "out of the box"
  • you could get access to ready-made assets through an asset store, or through the community
  • it's less challenging, and that's more fun for certain people

Cons

  • you learn less because a lot of stuff is done for you and hidden behind the scenes
  • you will likely have to pay licensing fees or percentages of profits
  • you're at the mercy of whoever makes that engine
  • supporting new features might take longer than if you're using your own tech
  • making changes to the engine is harder than if it's your own tech
  • in some cases making large, system-wide changes will be impossible
  • a lot of it will be a "black box" that you dont know how it works
  • if you realize towards the end of your project that there's a major issue (i.e. performance, etc) then you might be screwed because you're committed to this engine already.  Rewriting everything with a new engine, or writing your own, at that point might not be a possibility
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?

 

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.

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?

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.  

Advertisement
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

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

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.

You've gotten some excellent answers, so let me take a different tack. At the end of the day, it's all about goals. Is your goal to:

  1. Develop the game of your dreams and bring your ideas to life? Go professionally into game design or high level programming (AI, game logic, etc)? Use an engine. This is what they are there for.
  2. Understand how everything works, and maybe eventually become a professional engine or low level developer? Build everything yourself.

Obviously both are legitimate paths to choose, but they're very different.

SlimDX | Ventspace Blog | Twitter | Diverse teams make better games. I am currently hiring capable C++ engine developers in Baltimore, MD.

This topic is closed to new replies.

Advertisement