🎉 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!

Developing my own game engine vs. using a commercial game engine

Started by
99 comments, last by GalacticCrew 4 years, 10 months ago
On 8/13/2018 at 10:49 PM, GalacticCrew said:

The question for me is, if I should continue developing it (water, smoke and fire effects are needed for the next projects), or if you should switch to another engine. 

Depends on opportunity cost, difficulty of implementation and using it.

But from my limited graphics knowledge those three sound related, ie transparency (with billboarding for smoke/fire) shouldn't be too bad to add and use?

I heard somewhere old dev's used their existing game engine in about 3 games.

It's a great way to recoup investments, focus on game design etc, etc.

I would agree, after 3 times using the same tech, you know it very well, what's missing, where and how to improve.

Then (after the 3 games) I've also heard many just scrap the old tech and redo a new engine with a better design, ie for new hardware target etc.

I agree with @Hodgman limit your engine to your game and I would also add your knowledge and abilities, ie don't go over board with features you don't fully understand.

As programmers, I'm surprised why other programmers just pick a commercial engine to start with.. to me it's counter intuitive and against what software developers should be doing.. understanding problems and coding solutions.

Anyway,  I still consider my self a 'gamedev' noob, but I've seen so called experts with less understanding!

It's easy to give "generic advice", but criticizing something with no experience isn't advice, it's foolish ideology, never take advice from noobs!

Also, a DIY engine (be it small or large) is IMO part of the process, which is what game dev is all about... enjoying the process!

Nice thread!

Mike

 

Advertisement
1 hour ago, Mike MGarcia said:

As programmers, I'm surprised why other programmers just pick a commercial engine to start with.. to me it's counter intuitive and against what software developers should be doing.. understanding problems and coding solutions.

It sounds by your logic you should be throwing away any code you used previously and writing the entire program from scratch, without any libraries, compilers or operating systems, in raw machine code.

Why should programmers be running on a commercial operating system? why should you use someone else's IDE? why should you ask questions on forums such as these?

Sorry if i take your point too far, but aside from academic/self-fulfilment purposes its hard to justify building precisely everything from scratch.

2 hours ago, Stragen said:

It sounds by your logic you should be throwing away any code you used previously and writing the entire program from scratch, without any libraries, compilers or operating systems, in raw machine code.

Why should programmers be running on a commercial operating system? why should you use someone else's IDE? why should you ask questions on forums such as these?

Sorry if i take your point too far, but aside from academic/self-fulfilment purposes its hard to justify building precisely everything from scratch.

Ahh, the generic come back.. okay i'll bite.

Are you even a programmer? or just a lazy one? (It's okay to be lazy, I was when I was young)

I mean, have you even understood and built anything from scratch (no middleware) yourself? or are you just parroting youtuber wisdom?

And yes I use many different OS's, IDE's, languages, toolchains, and hardware, but these aren't the problems I want to solve.

 

And I'm not a 'not invented here' guy.. I'm too old and dumb (java/DBA) to be inventing anything!

Just because you can't justify something, doesn't mean others can't either.

It's not academic to be a better software engineer (understanding problems and coding solutions).. it's literally what I do everyday!

3 hours ago, Mike MGarcia said:

Ahh, the generic come back.. okay i'll bite.

Are you even a programmer? or just a lazy one? (It's okay to be lazy, I was when I was young)

I mean, have you even understood and built anything from scratch (no middleware) yourself? or are you just parroting youtuber wisdom?

The generic comeback is all that a faulty generalisation that didnt appear to read the thread deserved, along with a healthy dose of sarcasm.

I have written code in ASM, and i know enough to know its not for me - and likely 95% of the 'software developers' out there. I've also worked with Basic, Java, C, C#, .Net, logical circuit design, and Pascal... My first 'IDE' was a EDIT window. I've written my own cross platform handlers for graphics, and re-invented the wheel on a number of occasions with certain interpreters (Collada files particularly).

I'm self aware enough of my own skills and knowledge to know that my solo experience is never going to amount to the collective knowledge of the hundreds and thousands of people who have come before me who have been involved in the vastly different areas of coding that a single project might encompass - specialists in networking who have studied the field for years, and engine developers who have been working on some of these systems before i was born. There are libraries that have had tens of thousands of man hours invested in it hand optimising the code even down to the assembly level, and i feel they deserve more respect than simply being discarded because its 'reuse'. There's a post in a thread on here recently talking about removing optimised code from a marching cubes algorithim because 'its simpler' (which its not).

Having a master's degree and 20 years on-and-off working in this stuff taught me that to achieve results 2 things need to happen. 'Developers' need to step back from simply 'writing code' and critically think about what they're hoping to achieve - taking a more engineering approach to designing software solutions to problems (which you do allude to in your above reply around 'solving a problem'), and individuals need to stop thinking that they have the collective knowledge of thousands of people in themselves.

There is absolutely nothing wrong with a person choosing to use an engine to develop their game, this may be born from a desire to focus on quickly building the game rather than spending their time in the weeds trying to figure out how to untangle the bitmap file format, or they simply dont care about writing engines. There is equally nothing wrong with someone choosing to develop their engine themselves from the desire to develop it themselves because they want to learn how the bitmap file format works (i was in this camp).

As you said, its about ensuring that the appropriate investigation into solving the specific problem. Identifying that someone has released a solution to your problem in the form of a library, or an engine, should allow you to solve the problem more rapidly, or at the very least give you a spring board from which to conduct your own investigation if that is your true motivation.

57 minutes ago, Stragen said:

There is absolutely nothing wrong with a person choosing to use an engine to develop their game, this may be born from a desire to focus on quickly building the game rather than spending their time in the weeds trying to figure out how to untangle the bitmap file format, or they simply dont care about writing engines. There is equally nothing wrong with someone choosing to develop their engine themselves from the desire to develop it themselves because they want to learn how the bitmap file format works (i was in this camp).

I agree. I haven't made my decision yet, but I think I will continue developing my own game engine. It might result in a longer production cycle for the third game, but I think the experience I get will be great. In addition, future games will have these features for free, because I already developed them. I think it's safe to say that we've learned from this thread that every developer should decide in their case if it makes sense to develop their own engine or use a ready-to-use one. I have to mention again, that I believe it does not make sense to start developing your own 3D engine, when you want to start to a business. I wouldn't have done, but I already had my engine when I started my business.

@Stragen I think I understand @Mike MGarcia's point. I'm also in the 'starting all over' camp as well. Personally I'd write a new engine code, rather then changing the old one. However I'll take parts that would work in the new project, and then refactor them to fit the new project. I think this is better especially when the 2 projects are quite different from each other.

I understand that starting all over will take significantly more afford then modifying an old one. However, it gives me a chance to think through at the beginning of the project. Quite often I find that I make use of something in an totally different context, and it bites me back at the end (because it's not designed to work in that context). 

Of course, I could extract these parts and turn them to external libraries, especially in the 'input/output' area. However in C++, dependency is quite a pain to deal with. Also having multiple projects in multiple places can be very difficult to work with as well. 

Just my 2 cents :)

 

http://9tawan.net/en/

6 minutes ago, mr_tawan said:

Of course, I could extract these parts and turn them to external libraries, especially in the 'input/output' area. However in C++, dependency is quite a pain to deal with. Also having multiple projects in multiple places can be very difficult to work with as well. 

I have my game engine in one repository, my toolset (like the Asset Converter or Code Generator) are in a second repository and the games (two at the moment) are in a third one. The game repository has externals to the other repositories, so when I update it, I have all sources. I have a single Microsoft Visual Studio solution in my game repository. So I can click on "Compile All" and check, if my changes at any low level component has effect on any other part of any of my projects. In addition, it makes it very simple to run Unit Tests from a single solution.

10 minutes ago, mr_tawan said:

Personally I'd write a new engine code, rather then changing the old one. However I'll take parts that would work in the new project, and then refactor them to fit the new project. I think this is better especially when the 2 projects are quite different from each other.

I don't like this approach to be honest. When I started writing my game engine I did not know what was laying ahead of my (skinned animation, soft shadowing, PBR shaders, ...), so there were countless changes and updates. I handle my game engine like a virtual creature: handle it well and make sure it evolves in the right direction. Source code should always be as generic as possible. My first game is a 3D space exploration game, while my second game is a 2.5D adventure game. It uses totally different techniques (for example Sprite Animation vs. 3D Skinned Animation), but the game framework is the same. The user interface system is the same. And so on..

On 8/12/2018 at 1:57 AM, GalacticCrew said:

I make my living creating video games. The first one will have its final release this year and the second one will start its Early Access phase at the same time

Wow, I'm on your path and want earn living money with creating creative and addictive games: I would probably follow this thread cause I already see good answers and huge value people share here

Regarding using a commercial engine, I find this video interesting about Unity.

So basically they track the usage of their 'free' licenses (with no options to close.). If they find something wrong with it, then they will take action against. I don't know whether or not the people mentioned in this video have violated the EULA of Unity or not. However if you value your privacy (unlike myself :P) then you wouldn't want to use Unity, at least the free license.

This may or may not applies to other engines in the market. However, I don't think you would mind your own engine tracking your own usage :).

http://9tawan.net/en/

Using game engines is just like working with a team.

Think about it. The artists, the sound composers, helping programmers and other team members will see a custom engine, no different from a commercial engine. When your artist loads a texture they won't think "Oh, I didn't write the code for this. Somehow that makes me less of an artist".

When your team member expands on your code, you don't want them to rewrite everything. You don't want them thinking "I didn't make any of this code, I should use none of it".

When working on a engine, you should think of it as working along with a team.

 

Yet people have different drives. I have seen hobby developers switch from custom engines to commercial engines and every game they make from there is horrible, they blame the engine and when you show them how to do something they just say that the way the engine does it is dumb.

Even so I will still recommend trying a engine, even if only to make yourself angry. Sometimes just seeing how different, how dumb, someone's approach was to something can be eye opening and even life changing.

This topic is closed to new replies.

Advertisement