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

Choosing an open source license for a game engine!

Started by
9 comments, last by Hodgman 8 years, 5 months ago

I need help selecting an open source license to use for an engine I'm working on, I want something like the GPL, but my concern is that the GPL will force game assets for games made on the engine to be GPL as well, game assets in this case would include scripts from the scripting engine I plan on using, to complicate matters I'm using a number of libraries that, for all intents and purposes use the zlib license. Is there a license I can use that would require anyone making alterations to the c++ source code to release those alterations under the same open source license, without requiring that a game made on the engine open source all of its art/sound/AngelScript code?

I'm not against simply using a permissive license, but I'd rather not "roll my own", perhaps I'm misunderstanding the scope of a "derived work" under GPL.

For those curious, this will be a 2D engine that acts as a wrapper (of varying thicknesses) over SFML, and Box2D. A game made on the engine will consist of the usual game assets, and AngelScript code to initialize the engine and define game object behavior by registering callbacks and the like. A long-term goal is to also make a 3D version utilizing Bullet and OpenGL for rendering as SFML only handles 2D directly. Pretty standard fare really, and very similar to Torque2D aside from the scripting language choice... This is as much an academic exercise as anything, and open sourcing it seemed like a good way to encourage future me to keep the codebase lean and clean.

Advertisement

The usual thing to use when you want to force users to share their changes to your code is the LGPL, or the EPL is a bit nicer.

However, I'd recommend against using those styles of licenses, and would just go for MIT/zlib/etc type permissive licenses. In my (limited) experience with open source, the kinds of people who are actually going to make the best use of your library/engine, don't want to touch anything with a GPL-style license attached to it...

So IMHO-

* with a GPL-esque license, you're forcing all users to contribute, but you don't have many users.

* with a permissive license, users might or might not contribute, but you have a lot more users.

I would suggest that in the second case, you actually end up with more contributions overall.

When in doubt, I review this site at the high level. This site is also pretty good for comparing licenses.

...my concern is that the GPL will force game assets for games made on the engine to be GPL as well...

The GPL doesn't actually have this requirement, so it may yet be a valid choice for you.

Now, there are always going to be certain "free software zealots" who would like everything to be covered by the GPL, as well as those on the opposite side of the argument who would like to scare you away from using it, so in cases like this it's useful to go direct to the FSF website and see what it has to say. The GPL FAQ is a good resource for determining the actual intent behind the GPL, and the question "In what cases is the output of a GPL program covered by the GPL too?" covers your requirement:

The output of a program is not, in general, covered by the copyright on the code of the program. So the license of the code of the program does not apply to the output, whether you pipe it into a file, make a screenshot, screencast, or video.

The exception would be when the program displays a full screen of text and/or art that comes from the program. Then the copyright on that text and/or art covers the output. Programs that output audio, such as video games, would also fit into this exception.

If the art/music is under the GPL, then the GPL applies when you copy it no matter how you copy it. However, fair use may still apply.

Keep in mind that some programs, particularly video games, can have artwork/audio that is licensed separately from the underlying GPLed game. In such cases, the license on the artwork/audio would dictate the terms under which video/streaming may occur.

From this we can see that (1) the output of a GPL program is not normally under the GPL, and (2) it is perfectly permissible to package GPL software with non-GPL assets.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

Sounds like the GPL is a good fit, but it's also a good point that it may well regularly be misunderstood by potential users... So I may just use a permissive license that covers liability, so perhaps Apache...

Actually Z-lib is probably sufficient, and more clear...

Now all that's left before I get into the more interesting programming tasks is figuring out if it's worth it to make a templated manager class to handle data of classes such that all members of a given class are stored in contiguous memory regions, and can be read back in a linear fashion for improved cache coherency in the main loop >.>

Now all that's left before I get into the more interesting programming tasks is figuring out if it's worth it to make a templated manager class to handle data of classes such that all members of a given class are stored in contiguous memory regions, and can be read back in a linear fashion for improved cache coherency in the main loop >.>


Why mention that in the Business/Law forum?

-- Tom Sloper -- sloperama.com

Sounds like the GPL is a good fit, but it's also a good point that it may well regularly be misunderstood by potential users...

On the other hand, don't assume people not wanting to use GPL are just "misunderstanding" it.

If you use GPL for your engine, that means my game that I write that use your engine also becomes GPL.

Or to phrase it another way, if you use GPL in your engine, there's ain't a snowball's chance in hell that I'll ever come within 500 miles of it.

LGPL = "You can use my engine, but any changes to my engine you have to share!" (Sounds fair and reasonable to me!)

GPL = "You can use my engine, but any code you write for your game, you have to share!" (Absolutely not)

GPL makes sense for applications like, say, an image editor, because the outputted images aren't GPL'd.

But if you use it for a library that I use to make my games ontop of, you are mandating that my code be licensed as GPL. You're forcing your decision onto me, forcing me to use GPL whether I want to or not.

You have the right to do that, because it's your engine, you wrote it, and you can mandate that people using your engine meet whatever outrageous demands you make. I support your right to make such decisions. But I'll never come within 500 miles of such a library if I'm making commercial games.

LGPL was invented to solve exactly this situation. If you just want to "GPL" only your code, without affecting my code, then put your code in a DLL and use LGPL for it. LGPL was actually originally called the Library GPL. They changed it to "Lesser GPL" to help convey the idea that it enforces/mandates/spreads opensource less than the regular GPL. Really, I just think GPL means the "Gigantic Pain License".

The only reason why a library should use GPL is to force other people to make their software be GPL.

GPL is a big no-no for game development. Even if the big game developpers were not so secretive about their game engines, the fact that the GPL would force the full game to be GPL'd as well would be a nightmare for multi-player online games, because cheating would be stupidly easy. To make matters worse, I think the GPLv3 would forbid the detection and banning of modded executables from online networks (because that looks like a TiVo case, one of the big things v3 wants to ban) so you wouldn't even be able to impose a fair online environment.

That said, I think a successful LGPL game engine project of the quality of Unity or Unreal Engine would be an interesting turn of events with all the indie devs these days. There are a lot of programmers passionate about 3D graphics. The only problem with that kind of grand scale free software project is that it needs a strong leadership to steer the project in the right direction, and unless it's led by a triple-A company (unlikely), or someone with the level of respect that John Carmack has (also unlikely), or an arrogant but competent douche with an iron grip on the project like Linus Torvalds tongue.png, I think the project would be doomed from the start.

I think the only thing that should be GPL in an open-source game engine should be the game editor's executable. The game editor's libraries must be LGPL or permissive because the studios may have tools that need link to it. (Thinking of pipeline-related stuff.) The game engine itself obviously needs to be LGPL, but even then, the conditions for linking statically to an LGPL library may be enough of a showstopper for some people.


I'm not against simply using a permissive license, but I'd rather not "roll my own", perhaps I'm misunderstanding the scope of a "derived work" under GPL.

At the risk of 'rolling' your own, you could simply use the GPL and Define what constitutes derived works within your copy.
You can simply state that it does not include scripts made within games made with the engine.

While there are laws in some places that restrict how much you may Limit certain things, largely dealing with liabilities, you are always free to Add To the freedoms granted in a license you create.

...the fact that the GPL would force the full game to be GPL'd as well...

No, it doesn't. The extract from the GPL FAQ I gave above makes that clear - it's permissible for the code to be GPL but the content to not be, and content created with GPL code doesn't become GPL. The extract even cites the specific example of games:

Keep in mind that some programs, particularly video games, can have artwork/audio that is licensed separately from the underlying GPLed game

Why on earth anyone would continue to propagate this misunderstanding is beyond me.

Now, there are plenty of valid reasons to avoid the GPL like the plague, but they all relate to the viral nature of the license with respect to code, and to issues with linking to libraries that may be covered by other, incompatible licenses, but the reason you cite is not a valid reason: it's not even a reason at all, because it's false.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

This topic is closed to new replies.

Advertisement