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

Need advice for an "build your own engine" framework with multi platform support

Started by
12 comments, last by 8Observer8 4 years, 5 months ago

I want to build some small game engine with Editor for some specific projects, but I don't want to mess with really low level complex stuff. So a graphical framework `https://github.com/bkaradzic/bgfx` is a must be ?

Maybe someone here as experience with such frameworks and can advice something!? Im also aiming for consoles in future.

Advertisement

I am not familiar with bgfx, but it seems to only cover rendering. There are several other things you need for a game, particularly audio and input handling. If you are going to use C++, I recommend SFML.

alvaro said:

I am not familiar with bgfx, but it seems to only cover rendering. There are several other things you need for a game, particularly audio and input handling. If you are going to use C++, I recommend SFML.

No mobile support or consoles Yet

May be SDL? It can be used with BGFX AFAIK.

When using it alone, it provides some super basic 2D rendering. 3D stuffs needs OpenGL, Vulkan, or Direct3D though.

http://9tawan.net/en/

trsh said:
but I don't want to mess with really low level complex stuff

This might be your problem anyways. If you try to build an engine, most of it is low-level stuff and I'm not a firend of using such “bring your own stuff but I offer this piece of XXX code” because engine architecture is a homogenous process to not being bugged at some point in development. I saw a lot of people in the past offering “their engine” to the world while the engine itself was just a bunch of thrid-party libraries and glue code. Don't do this!

The reason is simple, using different third-party libs to build a framework also means to use different coding philosophy. You don't know what happens under the hood if not studying the code, you don't know how memory (your most costly recourse) is managed and with some luck you end up with 3 different libraries using 3 different memory management models. There is a lot more stuff you have to take into account but in the end, all of your issues will be related to either memory or multithreading so learn to use them properly.

trsh said:
Im also aiming for consoles in future

This isn't possible on your professional level. There are homebrew frameworks covering some older hardware but to play with the big ones, you need to get access to their development SDKs, signing NDA and respect their terms of service; which cover to NOT publisch any code related to their SDKs. So getting a freeware library that is also put on GitHub is less likely as being hit by lightning.

An exception is Microsoft XBox because they use a simplified version of Windows 10 Kernel with DirectX and they are more open to indie developers than Sony or Nintendo but also have a less huge market share than the other ones.

My advice on driving such a project is doing it from scratch (like me) but don't expect it being simple (if done right). There are plenty of tutorials in the wild how to write a game engine from memory management for example from BitSquid Developers up to threading and rendering. Using helper libraries is ok in my opinion, so if you like to have something helping with graphics, use GLFW, it covers OpenGL and Vulkan and don't become fixed to go multiplatform too much. In real, it isn't worth it because most gaming these days happens on Windows and Mobile (setting Console Platforms aside because they aren't reachable for you at the moment).

Btw. it is necessary to mess with low-level stuff in order to go multiplatform!

Taking a look at big engies is also something really recommended. Taking a look at Unreal or CryEngine/ Lumberyard on GitHub is worth it, to see how they solved their code structure

@Shaarigan Nice post, when ppl come and dirt at the post on a game engine in C The box, they are not aware that i probably made more research that they have done. Not a expert so I follow expert's opinion's.

@trsh

I hold not start something unless you have a market for it. For example there is no engine in C, so theres a market for it. Lets say:

Theres no public community centered engine in C++ since most have their dev team close yiet they are open source. You could do something public for the community. A bit like the Box.

But in the end it all come down to work. If you don't take the time to do stuff your self, you end up “paing to work like a mull”. Because paid engines don't do auto stuff basically they want you to work for them.

Shaarigan post is very relevant for example in the box, i already know that is much more easy do thing that way, or consomme less resources. Why i'm going to do things like another dev think is better?

A professional programmer ask me how do you do it? Basically spend many time designing code already know that it works. Or have many experience in design the code. But study others design is also good. For example the concept of the root file in the MVC you could study that concept and improve it's flaws.

Or study your own code, what can you improve. If you read the box posts, basically are stuff that people do not understand but they are improving small things in the design.

This comes into my mind: https://github.com/ConfettiFX/The-Forge

Runs on consoles too, if you get there at some point.

(Never tried myself)

JoeJ said:
Runs on consoles too

only available for accredited developers on request

@Shaarigan

thank you for you input. However I will try to stick to my plan. Im a good programmer, but learning for example Vulkan trough is a bit over my head. So.. some graphics low-level framework, that has abstracted the difficult stuff into higher level is a way to go. Mostly Im building it for my projects.

@mr_tawan

What do you mean that SDL can be used with BGFX ? Any examples of that?

This topic is closed to new replies.

Advertisement