Jump to content
  • Advertisement
GalacticCrew

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

Recommended Posts

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.

Share this post


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

Edited by mr_tawan

Share this post


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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


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

Share this post


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

 

 

Share this post


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

Share this post


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

Share this post


Link to post
Share on other sites

My another thought, which comes from my background as a support programmer, is 'are you able to support your own code' ? 

It's quite easy to write code. However once it is created, you need someone to look after it. I mean, there will be bugs and issues, and you need to resolve this. This will take effort. So I think you have to take this into the consideration whether you're using an in-house engine or someone else's.

Using commercial engine means if there's an issue, someone will (might?) fix it for you. Of course it depends on the engine developer, bug can be a feature too, or you're holding it wrong :P. Your issue can be in the multiple-year-long waiting list, who knows?

 

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
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!