We are working on a big project for a client that includes many third-party assets from the store. The client will not only receive the builds, but the whole Unity project. It also contains parts of our own company source code and assets that we don’t want the client to be able to look into (I suppose this won’t be possible for assets, but it doesn’t hurt to ask)
My main question is: is it possible / legal to hand over the whole project with all the source code and assets, even though the client doesn’t own licenses for all the different assets that are in use? Would the client have to acquire licences for those assets to make this transaction perfectly legal?
My second question: is there a way to ‘hide’ or ‘obfuscate’ those third party assets or parts of our own code/assets? I know about the possibility to make dll files for code, but what about assets? Any way to do this?
Write a proper contract, NDA and speak with a lawyer.
At best what you can do, withouth going too crazy, is to create own dlls from assets. Unless the client specifically have requested source code to all works.
All third party assets come usually with own licence, so unless client owns the licences, won’t be able to do anything with them. Legally speaking. Other than receiving build game and distribute it.
Also all depends what you have agreed for with a client.
Maybe contact Unity before paying an expensive lawyer. You will most likely not be the first usecase like that.
As for “hiding” certain code parts, assembling them into DLLs is indeed the way to go. Some few assets from the store do that too and sell access to sourcecode extra.
[quote=“ManuBera, post:1, topic: 891593, username:ManuBera”]
My main question is: is it possible / legal to hand over the whole project with all the source code and assets, even though the client doesn’t own licenses for all the different assets that are in use? Would the client have to acquire licences for those assets to make this transaction perfectly legal?
[/quote]If you want to retain the ability to continue using those assets yourself on future projects then the client will definitely need to buy their own licenses. The alternative would be that you transfer your licenses over to the client such that they can use them but you can’t use them anymore; I’m not sure if this is possible (and it might depend on the asset) but you could contact Unity Support and ask about it.
[quote]
My second question: is there a way to ‘hide’ or ‘obfuscate’ those third party assets or parts of our own code/assets? I know about the possibility to make dll files for code, but what about assets? Any way to do this?
[/quote]From a technical point of view, the most I’d recommend is to ‘bake down’ the assets as much as possible - e.g. supply FBX and PNG files instead of the original Maya/Max/Photoshop files, with as much extra data removed as possible - taking out helper objects, unused parts of the rig, layers, etc. This won’t prevent your client from hiring someone to do further work with those assets, but it makes it less convenient (=more costly) for them. Note that even submitting your code as DLLs is not immune to this either; the client could hire someone to decompile the code and then make changes to it, all you do is make it more difficult compared to giving them the source code directly.
The real solutions here aren’t technical, but business and legal - maintain a relationship with the client such that it’s not in their best interests to piss you off, and provide the work to them under clear terms that give you a means of recourse if they do piss you off. But also: never forget that the more restrictive you are about what the client can do with the work, the more you reduce the value of it - so don’t go overboard.
In the contract, up front. Be very clear that they’ll be paying for licenses to 3rd party stuff and, unless they provide the license, you’ll buy it on their behalf, charge them for it, then hand it over.
Not sure on the appropriate Asset Store mechanism for this these days, it’s changed since I did this type of client work with source hand overs. From memory, years ago we made an Asset Store account on the client’s behalf and did purchases in there, while also buying our own licenses separately on our own account.
We were also really clear about the license implications. E.g. that we’d got X licenses on their behalf based on our understanding of their needs at the time, and it was up to them to get more if required.
Also, what superpig says.
Fundamentally, you can’t agree to give someone a thing that isn’t yours. You need to either address that in your agreements, or avoid stuff that isn’t compatible. Sometimes that simply rules out 3rd party assets, and that’s just the reality of the matter.
I have a follow up question: Would it be possible (and legal) to turn third party assets into a dll, even if they are composed of their own dlls and resources? I know it is possible to store resources in dll files, but I don’t know if you can access them properly in Unity (like images that are accessible, but are returned as System.Drawing.Bitmap, which doesn’t even exist inside Unity). Is that feasible? Like a “facade”-dll for third party assets, so the client won’t have access to their internals? My boss is really keen on finding a way to hide third-party assets from our projects
Actually I’m fairly sure that you are not allowed to do that. Because this way you’ll be making a derived work off 3rd party and redistributing it. And asset store license forbids that specifically.
Additionally, when people hire a freelancer, they normally would want all source code. So if your employer hires you to develop something and you start obfuscating code, that gives them a good reason to terminate your contract. That’s partly because that obfuscated code will be impossible to maintain when you’re no longer available.
It can be done, but such things can also be undone. And it may not render stuff unrecognisable.
That line of thinking immediately makes me wonder, why? If one of my vendors was cagey about 3rd party stuff in use I’d be concerned. Licensing is painful enough to manage without people hiding stuff.
The reason is often the fear that the customer “just” finds someone else to utilize those 3rd party assets instead of us…
There are a fair share of companies out there which make their money just by integrating 3rd party assets.
Licenses are indeed an issue. It has had happened that companies got into trouble through that and good luck preventing a PR disaster by claiming your supplier did it without your knowledge.