I’m wondering if I can dual license derivative works. Say I want to make an open source Engine Plugin. I’m fully aware that any derivative work will be covered by the terms of Epic’s EULA. I simply don’t want my derivative works being distributed without my permission.
To my knowledge this is in the spirit of the system Epic has setup with GitHub being a gatekeeper to our sources: Epic decides who has access to UnrealEngine repos, and I control who has access to my fork. Specifically, I want to charge a fee for access to my GitHub repo and prevent any of my repo subscribers from distributing it.
I’ve found some odd replies around the web that ignore the root of the question with answers like “don’t make your game a derivative work” or “don’t copy UE4 code” completely ignoring the fact that UE4 uses a “design by contract” programming model, and the only place to find the contract is to peek at Epic’s header and cpp files and copy the interfaces and implementation required. You don’t do this and your code doesn’t compile or run. You can’t implement the required interfaces and implementation for a game/module/project unless you look, period. A game, module, or plugin is a derivative work, there are no two ways about it.
As for code that doesn’t fit into UE4’s framework, we’re talking about UE4 games, modules, and plugins, which means Design by Contract, which means peeking and copying bits of Epic’s code (nature of the beast). Obviously I wouldn’t use a dual license for stand-alone projects or classes that aren’t concerning UE4.
The term derivative is a little ambiguous here. Under the EULA, you’re free to do what you want with your own code (regardless of whether you’ve looked at our code). But only the terms of our EULA cover our code.
If you have a work that incorporates UE4, then it’s ok to distribute that under your own license with a few caveats under the EULA (royalty bearing unless an exception applies, protections for Epic (See 1(a)), and not under a Non-Compatible License).
Let me elaborate, say I “wrote” a class that had novel algorithms and data structures, but I copy pasted the interfaces and boilerplate from the parent class. Due to copyright this would of course be covered by the EULA. These are just wrappers to my own lower level algorithms and data structures, and I work hard to keep them separate but copyrighted code is required to pull it into the Engine.
I should probably mention, it’s middleware, so of course Caesar (Tim) gets his dues from all of my users, but my question is, supposing my licensees pay royalties to Epic (and meet other terms), can I further restrict who has access to derived works (my wrappers), for example, can I charge another royalty on top of Epics? I’d like to sell it as completely integrated solution.
Being middleware, an Epic-like business model that harnesses community support and makes money when they make money would be my preferred way of maintaining and monetizing my code-base. I figure it’s easier to sell middleware and offer services and then make a game once you got a bit of cash, as opposed to making a game and looking for middleware and services to lower the costs.
So you’re right that sale of a product incorporating UE4 (in whole or in part, even small part) would be royalty bearing.
So if you’re talking about distributing source code from UE4, even in small amounts, that can only be to engine licensees and not to the general public. The easiest way to do that is through the UnrealEngine GitHub network (although I don’t know that there’s a way to charge via that mechanism) or through the Marketplace (where of course there is a way to charge).
If the code doesn’t come from the Developer or Editor folders, you’re not necessarily restricted to distributing through those two channels, but we also don’t currently provide an easy way for you to know for sure who is an engine licensee.
I was already considering what you suggest, to use the GitHub network via a fork. This way both Epic and I would have to approve the user. I’d either hire someone to add/remove people from the Github Repo or just write scripts to automate the repo access and billing.