Blender Games and GPL?

Ok I know this has been discussed to death and that there are things on the horizon that might make all this discussion pointless but I have an Issue I would like to discuss!

On the blender website it says:

Games created in Blender (.blend files) are program output and therefore not covered by the GPL. You can consider them your property, and license or sell them freely.
With stand-alone games however, any data that is included inside the actual stand-alone executable is covered by the GPL. If this is a problem then you should set up the stand-alone player so it reads from external .blend files. A common practice is to include a “please wait, loading…” scene in the standalone, and read level files externally.
The Blender standalone player or the game player can be sold commercially too, but you have to make it available under the GPL conditions
My problem is that on the Mac the run time is an .app folder and you can view the contents by apple clicking it and the .Blend for the game is inside the problem is that to do as this suggests I would have to put the .Blend in the Resources folder of the .App thus defeating the point of separating the .Blend

so my question is this. Does the Mac run time produce a safe to commercialize .App or is all its content GPL? thus making it imposable to make a GPL free game on the MAC?

Picture to illustrate!
http://i43.photobucket.com/albums/e353/MCHammond/BlenderApp.png

Isn’t an .app on a mac just a special type of folder, not an executable like an .exe on windows.

Richard

If you double click it, it will run the game. so to me that’s a program! just like an .exe But it depends how the GPL sees it?

OSX sees it as an application and referred to it as a package!

Whats the difference between a .App with a .Blend stuck inside and a .exe with a .Blend Stuck inside!

.apps are bundles not executables:

Richard

Uhmm. Thanks for the link!

So if I’m understanding this right! you don’t need to create the “loading” .Blend and link to the game in order to get around the GPL problem, on a Mac!

So why doesn’t the PC version do something similar?

My understanding from the quote in your original post is that anything in the exe is gpl. On a pc I don’t see why you cant have any of your resources (artwork, sound etc) held externally like additional blend files so you still hold full copyright to them. I may be entirely wrong in this and I’m sure others will shoot me down in a heartbeat if I’m wrong. On a mac I’m not sure what it compiles in the executable and what is held in the resources folder.

Richard

I’d say its still bit of s gray area from ‘gpl’s point of view’ but the discussion inthe other thread (the AAA one),
had an interesting bit in it about ton’s discussion/suggestion/question to FSF… :slight_smile:

Uhmm… This is very annoying but thank you for the help!

Would it not make more sense to have the “player” a stand alone app and the game as a separate “rom” or file. that way you don’t need to worry about GPL.

You could then set the “player” to run a certain game “rom” on start up thus creating a standalone player that can be distributed as your game.

in fact, an sort of clarity would do!

Oh

oh

you can already do that, it gets grey when

is that like in windows having a bat file that opens the player and automatically loads the blend?

It sounds like that’s not allowed…

Clarity would indeed be nice.

Whilst the contents of the blend can be copyrighted it’d be nice to be able to “protect” the blend in some way… at the moment anyone with a copy of blender can open your asset file…

as a commercial proposition the grey area about which bits are or are not GPLed could make stopping re-distribution of your game tricky… I can’t see a game getting the interest of big publishers this way… (EA, sony, ubisoft etc etc)

From what I understand about the gpl.

If you include a bunch of stuff in an ‘app’ (like a tarball, osx whatever or winders install bundle) as long as you don’t have your stuff mixed into the code that’s gpl’d you’re fine. There are a few games that I know where the game engine is gpl but the art isn’t.

If someone were to write a plugin system for the bge and included a bunch of proprietary eyecandy that wasn’t gpl’d but were a bunch of loadable modules they’d be fine. They would have to release the code for the plugin system itself though so people would be able to load the modules on their own but just wouldn’t be able to see the code. Think nvidia propritary kernel drivers on this one.

Being able to ‘protect’ your assets would be pointless since anyone could see the code and disable it or create a work around since you would have to release the code that does the protecting as it would be part of the bge itself. Don’t like it, don’t use gpl’d software.

A good rule of thumb seems to be make sure you release all the code that changes the functionality of the gpl’d program so someone could build it themselves and have the same functionality as the released program. The GPLv3 now has the ‘tivo clause’ due to a certain ‘unnamed’ company dancing around this issue to protect their business model by releasing just enough code to stay out of court but not enough to produce a functional binary app.

So, you either pay in money or you pay in code…there’s no such thing as a free lunch.

In Linux and Windows it’s just the blend mixed with blenderplayer. In my point of view, a blender .exe or linux executable is pretty much the same thing than the app, just harder to separate.

Whilst the contents of the blend can be copyrighted it’d be nice to be able to “protect” the blend in some way… at the moment anyone with a copy of blender can open your asset file…

as a commercial proposition the grey area about which bits are or are not GPLed could make stopping re-distribution of your game tricky… I can’t see a game getting the interest of big publishers this way… (EA, sony, ubisoft etc etc)

Being able to ‘protect’ your assets would be pointless since anyone could see the code and disable it or create a work around since you would have to release the code that does the protecting as it would be part of the bge itself. Don’t like it, don’t use gpl’d software.
Well, you can use the BPPlayer to protect your blend files. With the BPPlayer, you can use the BGE, get around the GPL, protect your game assets, and it is 100% legal. Unfortunately, a Mac build will not be ready until October or later…

So, you either pay in money or you pay in code…there’s no such thing as a free lunch.
+1

a certain ‘unnamed’ company dancing around this issue to protect their business model by releasing just enough code to stay out of court but not enough to produce a functional binary app.
That really is sad. If you want to make a closed source program, DON’T COPY FROM OTHERS. That is the price you have to pay. If you make an open source project, you can copy all the GPL code you want. However, if you make a closed source program, you should build all if it yourself. That should be the general rule of thumb.

If that’s a 100% clean room implementation of the bge then sure, you can ‘get around the gpl’.

If its based off the bge code (even a little) then you need to release the source and your protection scheme is out in the open for all to see which really just makes it an annoyance as it would be easy to crack.

Judging by this little snippet found in the blender source you seem to be in violation of the gpl;

This General Public License does not permit incorporating [the] program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
Unless of course your BPPlayer doesn’t actually link to the blenderplayer.dll you create.

Reverse engineering the BPPlayer or any of the block files is an illegal action and punishable under law. Converting a block file back to a blend file is an illegal action.
Which law would that be?

However, compiling a blenderplayer.dll is prohibited, unless it is compiled by an official BPPlayer compiler application (OBCA).
That is definitely a violation of the gpl.

–edit–

Been doing some research and BPPlayer is unquestionably in violation of the gpl since it is a derivative work, i.e. links to a gpl’d program, so I’m going to have to ask for the source.

–edit 2–

The whole linking issue is somewhat (legally) unclear but IMO if you double click on an .exe file and up pops the blender game engine this is very clearly a derivative work that is equally clearly covered under copyright law as the exclusive domain of the holder of the copyright.

Probably doesn’t matter that much since the violation of the gpl by the license clause I quoted earlier takes away the right to redistribute the gpl’d work anyway and any changes made to the player to turn it into a dll also need to be provided.

Either way just wanted to clarify my poorly worded first edit before someone called me out on it.

Been doing some research and BPPlayer is unquestionably in violation of the gpl since it is a derivative work,
Actually, it is not in violation of the GPL. The BPPlayer uses no source code from blender, nor does it link to it. Let me explain.

In reality, the blenderplayer.dll is nothing more than an encrypted blenderplayer executable. It has the appearance of a dll so that it looks consistent with the other dlls in the game folder. However, it could have the appearance of any file format (bin, jpeg, mp3, dll, etc), it really doesn’t make a difference what format it looks like, it is still is an encrypted blenderplayer.

After the blenderplayer is decrypted, it is saved as an executable to the same folder as the BPPlayer (usually as a hidden file). The block file format is then changed to a blend file format that can be read by the blenderplayer. After that, the blenderplayer is forked. For a brief period of time, the blend data is streamed to the blenderplayer.

However, your probably wondering why the blenderplayer.dll is encrypted in the first place. The reason is simple. The BPPlayer still needs the blenderplayer in order to work and anyone can compile a blenderplayer executable. Now ask yourself, what would happen if someone made a “fake” blenderplayer? The BPPlayer would stream the blend data to the fake blenderplayer which could then be saved as a blend file. The main reason the blenderplayer is encrypted is to increase security. Now do you see why the license says “compiling a blenderplayer.dll is prohibited”?

Which law would that be?
None. However, you agree to the license by containing the files on your computer. If you do not agree with the license, then delete any files related to the BPPlayer (including block files). If someone “cracks” the block file format (and if it can be traced back to that person), then the creator(s) have “the right” to take legal action (not that it will happen, it’s just saying they have the right to do so).

Edit: There are actually parts in the GPL that support the BPPlayer. Here are just a few:

These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

Can the version of blenderplayer you distribute run independently of BPPlayer?

Basically, what you’ve done is ‘tivoized’ blenderplayer (made it impossible for someone to modify, use and share) which is what I was talking about earlier. Not to mention the fact you can’t legally restrict the rights to a gpl’d piece of software and distribute it.

It is also highly unlikely that a court of law would see your efforts as a mere aggregation when the entire purpose is to ‘get around the gpl’. When you say “The BPPlayer still needs the blenderplayer in order to work…” this seems to be a clear cut case of derivation.

There is also ‘spirit and intent’ which in the case of the gpl is to keep software free. The GPLv3 takes care of this particular loophole with their anti-drm stance and the tivo clause but I’m not too sure which version blender is licensed under.

But this is all acedemic since your licensing terms exclude you from even having the right to distribute blenderplayer. What’s copyright violations run these days, $200k per violation and five years in prison or some such nonsense?

But I seriously doubt that the Blender Foundation would even care. Hell, they might even encourage this kind of piracy for all I know. Ends justifying the means and all that.

Ton will never do such thing. He always finds a way around. 2.5 will intergrate solutions for this one.

Can the version of blenderplayer you distribute run independently of BPPlayer?
Yes, yes it can. Matter a fact, most of the blenderplayer files used by the BPPlayer are the binary exe files taken from the official releases (blender 2.45, 2.46, 2.47, 2.48, etc). If you don’t believe me, compare the file size of an official release and the encypted file… you should notice they are the same.

Basically, what you’ve done is ‘tivoized’ blenderplayer (made it impossible for someone to modify, use and share) which is what I was talking about earlier.
The binary exe files released on blender.org are exactly the same as the encrypted files (except the encrypted files have a byte sequence that is rearranged differently). There is nothing in the license that says the file can’t be rearranged. However, the file (blenderplayer) would still have the GPL. But again, The blenderplayer is excluded as a separate exe. I don’t see where that is illegal? The GPL directly says that two different programs can exist in the same folder without conflict. Also, block files (which is an encrypted blend) is your property. So if the BPPlayer streams blend data to a blenderplayer, where is that illegal?

When you say “The BPPlayer still needs the blenderplayer in order to work…” this seems to be a clear cut case of derivation.
It needs the exe file (blenderplayer.exe) to run the blend file (just like any normal BGE game). How is the BPPlayer any different from a regular game BGE game? Are you suggesting that all BGE games are illegal even if they are separate from the exe itself?

(made it impossible for someone to modify, use and share) which is what I was talking about earlier.
Like I said before, the blenderplayer.dll has the same exact same binary as an exe, therefor they have the same source. If you want to modify it, use, or share the blenderplayer, just use the official source from blender.org - it’s the exact same thing. The only thing that could be more open source is the block files (blend files) themselves… which are copyrighted to their respected owners.

Hell, they might even encourage this kind of piracy for all I know. Ends justifying the means and all that.
Piracy?!? Creating your own models, textures, code, audio, and game content from scratch is piracy?


Edit:
I don’t know why you see this is such a bad thing? Wouldn’t something like this encourage people to use blender? Think about it. Hundreds of users in the past have been discouraged from using blender due to the fact that you could not release projects as closed source (regardless of the GPL). If a users wants to release a open source game, that will not change the number of users currently using it. However, if you give people more options to distribute their games the way they want, that would increase the number of people using it. Blender would get more production and more attention. Isn’t that a good thing?

First off for anyone thats worried they might break the GPL and get in trouble, - relax!
I have heard some interviews with the FSF and almost all the GPL violations they are alerted to are resolved just be asking the distributor to include the modified source on their site or similar steps to compliance.
Its only when the companies are suborn and wont follow the GPL after repeated requests that they take it further.

Uncle Entity mentioned that the your work only falls under the GPL’s rules when its apart of the application (FSF are quite specific about this, if you code runs in the same process as the GPL application then its considered once app (there are other details but thats an important one), the LGPL is less strict), python game scripts also have this limitation but Tons looking to get an exception added for that.

Either way, you can avoid messing with BAT or .SH scripts by having a small blenderplayer+blendfile that is just a stub that loads the real game.

I’m just saying…

You really do need to remove the part about not being able to build a blenderplayer.dll since that’s the main problem with all this.

On the python exception;

How can I allow linking of proprietary modules with my GPL-covered library under a controlled interface only?
Add this text to the license notice of each file in the package, at the end of the text that says the file is distributed under the GNU GPL:

Linking ABC statically or dynamically with other modules is making
a combined work based on ABC. Thus, the terms and conditions of
the GNU General Public License cover the whole combination.

In addition, as a special exception, the copyright holders of ABC give
you permission to combine ABC program with free software programs or
libraries that are released under the GNU LGPL and with independent
modules that communicate with ABC solely through the ABCDEF interface.
You may copy and distribute such a system following the terms of the
GNU GPL for ABC and the licenses of the other code concerned, provided
that you include the source code of that other code when and as the
GNU GPL requires distribution of source code.

Note that people who make modified versions of ABC are not obligated
to grant this special exception for their modified versions; it is
their choice whether to do so. The GNU General Public License gives
permission to release a modified version without this exception; this
exception also makes it possible to release a modified version which
carries forward this exception.

Only the copyright holders for the program can legally authorize this exception. If you wrote the whole program yourself, then assuming your employer or school does not claim the copyright, you are the copyright holder—so you can authorize the exception. But if you want to use parts of other GPL-covered programs by other authors in your code, you cannot authorize the exception for them. You have to get the approval of the copyright holders of those programs.

Be kind of hard getting everyone who ever contributed to blender to agree to a copyright change methinks.