My specific case is to make an open source game using Unreal Engine. I'd like that game to be "copyleft": I give the source code, and anyone can use it to make improved versions of the game, but to distribute their versions they also have to give the source code, etc. I want to avoid permissive licenses such as MIT or BSD, which would allow someone else to take my code, and distribute their proprietary modified game. This is a scenario I'd like to prevent.

But Unreal Engine, even if they provide source code, and even if it can be used free of charge for non-profit projects, is not free software.

What are my options?

So far, I have found that using the GPL might actually be possible, since it provides a way for copyright owners (only me in this case) to authorize linking with specific non-free libraries https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs

Another thing to consider is that the game could only be compiled by someone who first get a copy of Unreal Engine from Epic. Compiling the game would indeed require the use of non-free tools (Unreal Build Tools). But again, it would seem this is possible with the GPL https://www.gnu.org/licenses/gpl-faq.en.html#NonFreeTools

Would this mean I can actually use the GPL, with the proper granting of additional permissions, or am I misunderstanding something? And if so, are there other options?

1 Answer 1


Yes, GPL with a specific exception allowing linking with the Unreal Engine is the way forward here.

I'm sure you know this but for other readers: this means you cannot use GPL code for which you are not the copyright holder, as that code does not have the exception allowing linking with Unreal.

  • In the GPL FAQ, the permission notice examples for the linking exception include an implicit requirement sentence "{Corresponding Source for a non-source form of such a combination shall include the source code for the parts of [name of library] used as well as that of the covered work.}" But is complying with this even possible for Unreal Engine? For Unreal, it seems like the "Engine Code" (that's how they refer to their library source code) is only redistributable to someone with a special license from Unreal.
    – Brandin
    Commented Apr 24 at 11:51
  • 3
    @Brandin indeed, Epic only allows source distribution of the engine to other licensees of Epic: "You may Distribute Engine Code (including as modified by you) in Source Code or object code to a third party who is separately licensed by us to use the same version of the Engine Code that you are Distributing." unrealengine.com/en-US/eula/unreal . So I think one should just omit the part between braces, since that part is optional: "If not everybody can distribute source for the libraries you intend to link with, you should remove the text in braces"
    – youen
    Commented Apr 24 at 13:45
  • Would a GPL with linking exceptions in general do the job here? That's what I usually use myself with libraries.
    – T.E.D.
    Commented Apr 24 at 22:50
  • @T.E.D. do you mean adding a global exception allowing to link with any other library? I think this would defeat the purpose of using the GPL in the first place? Anyone could then make a derivative work whose new code is in a separate proprietary library, so you effectively loose the "copyleft" property of the GPL. So I think it's better to only allow linking with specific libraries (here it would be the unreal engine runtime).
    – youen
    Commented Apr 25 at 14:39
  • 1
    @youen - Hmmm. I see your issue here, you kind of want the opposite of what those usual exceptions do (allow your program to still be copyleft when libraries aren't, instead of allowing a program to not be copyleft when the library is). So your exception wording would have to be ... interesting.
    – T.E.D.
    Commented Apr 25 at 15:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.