Download

Distributing source code with user-created plugins?

What do you guys think about always including source code with plugins? This includes plugins that you might decide to sell on the Marketplace. Is this even viable for many of you? If not, we’d like to know the reasons why it would be a problem.

We think that including source will make it easier for teams who have customized the UE4 engine to be able to use your plugin with their project. UE4’s engine APIs are not usually binary-compatible between product versions, and certainly won’t be compatible with a team’s customized engine source. Making source available will also allow plugins on the Marketplace to be more resilient to version updates, as Epic could possibly help make sure the plugins still compile as we work on new versions.

The reasons I have heard so far while people would not want their plugin source to get out:

  • Worried about piracy (lifetime access to product, because pirate can update code to keep it working.)
  • Worried about intellectual property theft (people ripping off your code)
  • Worried about peer review (not confident in quality of code, and do not want to deal with people seeing it.)

Any thoughts?

–Mike

I think distributing the source code with the plugin is a good idea. It means you don’t have to wait on the author of the plugin to update the binary to the latest version of the engine (As in my case where I am still working with 4.1.1 but people want my plugins for v4.2.1 meaning I have to install and update, but because the source code is available, they can do that themselves rather than wait for me). And sometimes a plugin will not do exactly what you may want it to do, but is pretty close, allowing you to modifying it to meet your requirements.

I have a question about the source code distribution.

So you guys probably know that iD Software releases their source code for free for most of the PC versions of the video games that they develop like DOOM and Wolfenstein.

My question is for video game developers who develop video games on PC can they release the source code for free for those video games? I know you have to pay every month for a subscription for Unreal Engine 4 but I was wondering if Epic Games can come up with a solution somehow to let video game developers release the source code for the video games that they develop if they want to? Because there are a lot of PC gamers who like to program for video games like DOOM and Wolfenstein but don’t want to pay every month. Any possibilities to do this without actually getting the source code for Unreal Engine 4 but the video game only?

You are absolutely free to release your game’s source code (and content) online! We love the idea and are doing this ourselves with the new Unreal Tournament game. You can put the whole project up on a public GitHub repository if you want.

Just beware if you are using content or code that came from the Marketplace, which might not be allowed to be redistributed in “raw” form. Epic’s free learning sample content are usually okay to use in your open projects however. If you end up modifying the engine/tools source code, remember that you are only allowed to distribute UE4 engine code to other active UE4 subscribers (usually with your private fork on GitHub.) Releasing code to plugins you’ve created is totally fine though.

You are allowed to release the code for your games even without an active Unreal Engine subscription. It is your code. :slight_smile:

–Mike

I personally vote for distribution of source code with the plugin, especially for Marketplace.

Some of the reasons:

  • UE4 source code is available for subscribers… so the plugins should, even more if we pay for them
  • vendor can stop updating the plugin… you look at a dll
  • you need to improve the plugin for your needs
  • all kind of privacy issues ( this can sounds paranoid, but is not, I do not want to have any legal issues with one of my games lets say, because one of the plugins I use collect user data or something else)

Just a few things that comes in my mind right now…

Those are good points. I like the idea of the “trusted partner” approach as well. Of course we try to work with plugin authors to make sure they have a window to get their plugin updated for new engine versions before we release. Whether the source is available or not, we would have to make sure that plugins still actually work (not just compile) with each new engine release, so there will be some kind of process we’ll have for that. The cool thing is that we already provide early access to all new releases through GitHub as we countdown to launch day for a new engine version, and we’re working on making it even easier to use pre-release versions of the engine if you want to.

I think we need to also hear from people who have already authored UE4 plugins, or have future aspirations for creating and selling new engine and tools features.

–Mike

The easiest way is to go onto GitHub and fork the engine code. Your fork is visible to all other subscribers, but only subscribers. Otherwise, you can share with people who you know are subscribed, such as other members of your team. I suppose you can also ask us if you are in doubt.

–Mike

I’m definitely sure that if you’ll make source code required to place the plugin to the future Marketplace, it will be a huge step forward.

If someone has so special product that requires extra piracy/property defence, he always can sell the plugin in binary form on his own via website, etc.

Yes, do that

Totally agree with that.

I personally don’t know how i feel about this.

At face value I love it and I totally think its an awesome idea. I love open software, its the best ! I myself have been creating a plugin for Random Generated Levels so that people could bake down the dynamically spawned level actors in a static way. I think it would be awesome and really great to have epic and the community help with the future development of the plugin. also it would be really beneficial to be able to look at someone elses plugin to see how something was done.

BUT

It’s kind of tricky because say you released a plugin like the one above with the source included fore free, the user buying/downloading it can easily modify my code / rename everything and re-release the plugin as their own for money. I don’t think that’s right. They did nothing but steal your code essentially and now are profiting from your hard work. I’ve seen this happen from time to time with some GPL’d open sourced projects.

What kind of licencing terms in marketplace would be available for plugins with the sourced released ?

How can we stop from people re-releasing free plugins as paid and re-releasing paid for free ?

I personally feel and think the Marketplace terms should be up to the user uploading it, not everyone wants to release their work. Although i have no real quarrels with a forced source release.

My vote is yes, I think plugins should have source. There are many situations where it’s just not feasible to wait on an author, or to have them consult/work on some specific feature that a team might need to work with a given plugin. It also neatly handles the case (fairly common in this type of scenario) where a plugin author stops updating/supporting their plugin. With closed-source plugins, that means the plugin effectively dies on the spot. If source is available, the community users of the plugin will inevitably update it themselves.

I think it’s worth doing just to avoid the situation these development Marketplaces run into where half the store is filled with out of date plugins from a host of various versions, with many of them not being updated by their authors.

With source for plugins, we could see long term support for all sorts of plugins, without them going stagnant and dying off.

Plugin authors that don’t want to release source can always presumably sell their plugin through their own site. But I think most plugin developers would be happy providing source.


This is less of an issue that you’d imagine - there are tools to identify stuff like that, and also it’s pretty easy to tell that, e.g., Bob’s Ocean Plugin, that functions identically and looks just like VaOcean, is a clone.

Updated version:

UE4 plugins should have source code because, and Marketplace should allow to sell only plugins with source code because:

  • UE4 source code is available for subscribers… so the plugins should, even more if we pay for them
  • vendor can stop updating the plugin… you look at a dll
  • you may need to improve the plugin for your needs
  • all kind of privacy issues (paranoid i know, but that’s it)

Also as Ufna said, if some one think his plugin is super ultra uber code and don’t want to show the source code, he can sell that in his store.

For Marketplace I have some suggestions also:

  • please don’t allow spams of plugins like “rotating a cube” 1 euro, and other 100 doing same thing with different name
  • for assets, again please do not allow things like “cube with texture” for 1 euro, and similar spam
  • all assets (texture/models/audio?) should have a level of quality required

And in the end, maybe the most important thing: Please if you open Marketplace, do not stop adding features to the engine, and point us only to Marketplace.

As an author of an already open sourced (MIT licensed) UE4 plugin, I am definitely for source release for all plug-ins, even for paid plug-ins.

This is the only way customers can be sure not to become locked to a specific version of the Engine during the development of their game!

Cheers!

I believe it’s a question about the intended purpose of the marketplace - if you hope the marketplace will include next gen proprietary algorithms which will give UE4 an advantage compared to other commercial engines and in-house engines then the marketplace needs a ‘binary’ section. We have no intention of releasing our source code, since it represent multiple years of research and our product is available in many industries other than the game industry. As some have already mentioned - we could just release our products on our own store, but that would limit the usefulness of the marketplace and obviously the possible revenue sharing.

Really great feedback in this thread. Very much appreciated!

If your “secret sauce” is compartmentalized away from the actual integration with the UE4 engine APIs, one easy option you would have would be to wrap up all of your proprietary stuff into a precompiled static library. Then you could release only the source code for the integration layer “glue” along with the static library. Of course, often plugins will have some editor UIs as part of their integration, so for this to work you would at least have to release the source code to that part as well.

Of course, we are just brainstorming on the thread. I think the direction we would really like is to encourage developers to release source code whenever possible to plugins, or to wrap up their secret stuff in a static library if it is possible to do so. If the community is actually largely comfortable with requiring the source for the integration part of the UE4 plugin to be made available, that might be the approach that actually delivers the best customer service to plugin purchasers.

–Mike

If the open source requirement is limited to the integration part then we don’t have any issues with the requirement. Although we’re only a small subset of those who intents to release commercial plugins.

I thought more about some legal issues about “fully open source” requirement for plugins, and found that it won’t be possible in some cases.

I think that it will be better to make it something like this:

  1. Plugin integration (UE4 part) must be source provided, as you already suggested.

  2. Two clearly visible labels for plugins on Marketplace: “full source” and “closed source”, which will define is plugin can be fully modified or contains some 3rd party libraries in binary form.

Maybe label “3rd-party required” will be nice too. F.e. to build one part of my VaQuoleUI plugin, you should have Qt.

Although I plan to release full source for my plugins I like Ufna’s solution the most, because it gives each developer the flexibility to choose their approach while also ensuring that the potential buyer is fully aware of whether they are getting full or partial source code.

If the only work it requires on Epic’s side is to ensure people are clearly aware of the labeling scheme and what it means, then this option seems to allow for developers with varied perspectives on the issue to all be comfortable, and for buyers to be informed.

:slight_smile:

Rama

If ppl want to steal your code, they will.
I think all plugins should be shipped with source code open, I wouldn’t buy anything from Marketplace if its source is locked. If you have experience with Unity’s asset store you know what I’m talking about.