Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove gfx-unrelated abstractions? #156

Closed
VinnyVicious opened this issue Jun 6, 2016 · 2 comments
Closed

Remove gfx-unrelated abstractions? #156

VinnyVicious opened this issue Jun 6, 2016 · 2 comments

Comments

@VinnyVicious
Copy link

Since this a graphics engine, wouldn't it make sense to remove things like Audio, SceneGraph, GUI? Or maybe just put them into separate projects, like magnum-audio, etc.

@Squareys
Copy link
Contributor

Squareys commented Jun 7, 2016

Hi @VinnyVicious !

@mosra could probably phrase this better, but since he's insanely busy atm, here's a preliminary answer:

The magnum project already has quite alot of repositories, which can be kind of confusing to new users. There was a discussion related to this here.

Magnum contains the most important libraries (Of which you mentioned Audio and SceneGraph. I don't see why SceneGraph is not Graphics related, btw. ;) Also, Magnum does not have a GUI library quite yet, but that will reside in https://github.com/mosra/magnum-extras instead of this repository anyway.)

In the long run, this may happen (or maybe libraries like Audio get moved to magnum-extras, at least), but not in the near future. There are soo many other things which have higher priority ;)

I hope that clears up at least something :)

Regards, Jonathan.

@mosra
Copy link
Owner

mosra commented Jun 7, 2016

@Squareys thanks, you are basically mirroring what I wanted to say.

This is not a strictly graphics engine, it's more like a "media" engine (or middleware) -- giving you platform abstraction, asset import functionality, the math things, an easy-to-use GL wrapper and other stuff you need for building a quick game prototype, graphics demo, command-line utility that fits into some asset management pipeline, a GUI image processing tool or your own full-featured big and complex in-house game engine with blackjack and .. editor, for example.

There are some parts that I'm considering putting away (like mentioned in #148), but other than that the core library has just the essentials, where removing one of the parts would not gain any real advantage but make the library harder to use for some people. Then there are things that are very usage-specific, things that have non-trivial dependencies and things that can be done in many ways and none of the ways is the right one in all use cases. These are residing in magnum-plugins, magnum-extras and magnum-integration repos. I'm trying to have only the essential functionality in the core lib so it's fast to build etc., but it needs to be balanced -- for example I moved some of the basic plugins back to the core lib so they can be used directly without cloning, building and installing yet another project.

Compare with SDL, for example. The core lib has the platform abstraction, input event handling, audio and video support etc. so you have everything to build your game on. Then there are additional non-essential things used only by some people like SDL_ttf (you might want to use GPU to render the text instead), SDL_image (you might want to use the format libraries directly) etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants