Issue:
Currently .blend files offer little to no support to protect data from being extracted. While this might support the open source idea, it is not very supportive to technically protect copyrighted content.
To see the world as it is, it is easy to violate a licence when the obstacles or not noticeable. A lot of people ignore it or do not even think about what is legally allowed and what not. Some technical protection can help that people can’t excuse with “I just took it” - as they have to spend some effort.
My suggestion:
Create blend files with encrypted data (or parts of it) e.g. with an AddOn.
It should be possible to create encrypted files from all linked .blends to allow larger games.
Decrypt the data when loading from file:
- at game start/scene load
- when loading linked data from other (encrypted) blends
- when using LibLoad
- no encryption when loading into Blender
Benefits:
- more protection than it is now
- the source can be GPL and therefore integrated into the BGE sources
- the encrypted code is used immediately (no encrypted file at any time)
- the key can be delivered separately or included in the distribution
- distribution of multiple encrypted files is possible
- the GPL does not apply to the data
Drawbacks:
- Someone could write an addon to decrypt the data and create unprotected .blends or loads the content into Blender. But the user needs to explicitly get and use this tool = he wants to violate the protection.
- At one point the data needs to be decrypted - otherwise the BGE can’t use it
Workaround:
BBPlayer, Burster, SolarLunes decryption script.
Remarks:
Some protection is better than no protection.
Encryption via Add-on would separate encryption/decryption from Blender.
When decryption is in the BGE only, there is no need to touch the Blender source
Creating a game specific data format might increase the protection. The BGE converts some Blender data anyway. So why not encrypt the converted data? This way the BGE does not even need to convert that much and the data is not usable in Blender itself. But this is another topic.
As a very simple implementation: .blend data is zipped. Why not use the zip encryption ;)?