🎉 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

The thing is you also build a level edittor if you have a game engine, also takes time.

 

And its true you eat out of the programmers hands, because you are not allowed to change anything in the engine.

A good engine would allow you to change and sell whatever you like without charge, and also not hidden in ".DLL" files so you can edit any code.

 

I also seen/heard that you also can compile for mac on a windows machine, that is one of the things the engines have : cross platform compatibility.

I would love to compile my windows game so it works on any computer from game console to mac.

S T O P C R I M E !

Visual Pro 2005 C++ DX9 Cubase VST 3.70 Working on : LevelContainer class & LevelEditor

Advertisement

When I started my engine I wanted to especially tackle this "cross-platform" stuff without the annoying "recompile for each platform" part which frankly fails to work properly for all engines I've seen so far. The core concept is the problem so I went ahead and changed the core concept to get a game engine what I need to deal with current and future projects. So I disagree. Pursue a game engine is very well viable even if you don't want to sell it (L-GPL as I mentioned). Selling engines nowadays is anyway something I would not recommend. As somebody in our company once said correctly: Don't sell a product... sell a platform.

Life's like a Hydra... cut off one problem just to have two more popping out.
Leader and Coder: Project Epsylon | Drag[en]gine Game Engine

25 minutes ago, the incredible smoker said:

I also seen/heard that you also can compile for mac on a windows machine, that is one of the things the engines have : cross platform compatibility.

I would love to compile my windows game so it works on any computer from game console to mac.

This is not exactly difficult to archive, but it depends largely on what is engine implemented on. If it's DirectX then it would be quite difficult IMHO. 

There are cross-platform graphics API like Vulkan or OpenGL, the same things go for audio (OpenAL, OpenSLES). Other than that there are also compatible layer or wrappers. If you implement the engine in says SDL2 (for example) then at least the game should run on Windows, Mac and Linux. The same code might not be running on one platform as well as another, but that goes for using commercial engine too.

In fact this is how the commercial game engine is implemented as well.

I have a little experience on console, as I had worked on some of them a long time ago. Some platforms are based on totally different concept than what we have on PC today (for example Nintendo DS is tile-based graphics and sequencer-based audio), but I don't think this exists anymore. For other platforms, it will be pretty similar. You should be able to just write a compatibility layer and the game will run (but I wouldn't not know how well it will be).

http://9tawan.net/en/

10 minutes ago, mr_tawan said:

This is not exactly difficult to archive, but it depends largely on what is engine implemented on. If it's DirectX then it would be quite difficult IMHO. 

There are cross-platform graphics API like Vulkan or OpenGL, the same things go for audio (OpenAL, OpenSLES). Other than that there are also compatible layer or wrappers. If you implement the engine in says SDL2 (for example) then at least the game should run on Windows, Mac and Linux. The same code might not be running on one platform as well as another, but that goes for using commercial engine too.

I am currently working with DirectX 11 for graphics and XAudio 2 for Audio. However, I use generic interfaces in my game engine and I currently have a graphics implementation for DX and an audio implementation for XAudio 2. I can add support for OpenGL, OpenAL, SDL, etc. by creating new interface implementation using these frameworks. This is actually not difficult, but it takes a lot of time. I want to do this in the future.

My take on commercial engine is, if they make a wrong decision, you will be hit by that mistake too.

For example, in Unity, every single function members are 'camel case' (eg. doSomething()). Usually in C# functions are 'alternate case' (eg. DoSomething()). When using 3rd party library with Unity, especially one that does not implemented specifically for Unity, you will end up with 2 different conventions on the same code base. It might be sounds like a small issue, at least until you use some kind of linter. 

(In fact I see this kind of problem in Unreal Engine too. However in C# the code convention doesn't vary much across libraries, as majority of them make use the style that MS suggests right at the beginning. I have seen some good project that has no user just because it uses Java's convention instead of C#'s one.)

http://9tawan.net/en/

Now that i was thinking about it in the bed...
I can recall when i was working on my 3D demo, i got pissed up from having to change the shaders after every little change i make. So finally for my own comfort i had to find a way to generate the shaders depending on the data. Next thing i did for my own comfort was finding a way to add lights(putting them and their properties in a list and the shaders were changed automatically) I had to create my own FBX parser too.

What I want to point to is:
When people have to program a whole game by themselves, aren't they in a natural way creating their own engines(kind of)?

Furthermore, if somebody has this goal in mind, he could build a game plus an engine almost simultaneously.

8 minutes ago, mr_tawan said:

My take on commercial engine is, if they make a wrong decision, you will be hit by that mistake too.

True!

4 minutes ago, NikiTo said:

When people have to program a whole game by themselves, aren't they in a natural way creating their own engines(kind of)?

I don't think so. In Unity you can load almost any animation file for bipedal creatures and apply them on almost any rigged model. You can just do it by using their user interface. You neither need to program the Skinned Animation nor the mapping process (which is a lot fun with Linear Algebra). You can also apply effects using their UI without having to code them. Soft Shadowing for example requires several render passes (getting depth map from light's view, creating light map, blurring light map, rendering the scene). As someone was pointing out at some point you might have to go down deep into the architecture when using Unity, but you can accomplish a lot of stuff without it.

29 minutes ago, GalacticCrew said:

You neither need to program the Skinned Animation nor the mapping process (which is a lot fun with Linear Algebra).

As you often mention your joy implementing things like skinning or soft shadows, i repeatingly get the impression you develop your own engine mainly because, honestly you just enjoy this?

And that could be wrong from the business perspective. Because Unity / UE4 already has all this tech, likely even better or faster, so why replicating the exact same again? Couldn't you spend this time better on working on the game?

My point is, if you would have new skinning or shadowing tech that would be hard to integrate in existing engines, then i would agree on a custom engine. But remembering the screenshot from your space station game, it seems just standard tech, readily available in those engines as well, in combination with all those tools and stuff...

I'm really the last one to be against custom engines, but if there is no difference or reason, then it seems wrong for small indies to go that route nowadays :(

 

 

46 minutes ago, GalacticCrew said:

True!

I don't think so. In Unity you can load almost any animation file for bipedal creatures and apply them on almost any rigged model. You can just do it by using their user interface. You neither need to program the Skinned Animation nor the mapping process (which is a lot fun with Linear Algebra). You can also apply effects using their UI without having to code them. Soft Shadowing for example requires several render passes (getting depth map from light's view, creating light map, blurring light map, rendering the scene). As someone was pointing out at some point you might have to go down deep into the architecture when using Unity, but you can accomplish a lot of stuff without it.

I don't think opening a variety of files is something i would aim for if i were to make some engine. People can use many tools to convert the models and animations to be accepted in my engine.
Once you have coded a port for FBX, other coders could add support for other files too, without changing the engine.

About the sandbox, yes it is not something somebody who develops his own game would always need. In any case, an engine the programmer made for himself would look less visual, and would require more writing. If you want to sell the engine to anybody, a sandbox is a must have. But i understand people could make engines for themselves, not to sell.

Anyways, where is the boundary between a game engine and a 3D editing tool?

And for sure, once made a game, a developer can re-utilize almost everything for his next game if it is the same style. The second game would take a third of the time the first game took.

3 minutes ago, JoeJ said:

And that could be wrong from the business perspective. Because Unity / UE4 already has all this tech, likely even better or faster, so why replicating the exact same again? Couldn't you spend this time better on working on the game?

That's kind of a dilemma for me. I really don't need or want to implement animation software, lighting etc. Ideally I would use half an existing existing engine. However what I'm doing requires that I have my own mesh format, at least for terrain, and also I need to have exact control over how things are rendered to support a large world model. I also have to have tight control over the collision system. So I think I'm stuck coding most things myself. However I guess I can use outside stand alone tools.

This topic is closed to new replies.

Advertisement