Almost solid gold .blend encryption for game distribution using ccrypt- A Guide


(wallacemarino) #21

If you distribute the game via the web then you can make the source available by web, however as soon as you’ve compiled the runtime you are unable to sell the game anyway due to the conditions of the license.

The only current web plug-in I’m aware of is Burster. You do not have a license issue here as burster keeps the player and .blend seperate (you host the .blend) and also Burster offer encryption certificates for a very reasonable price. At the minute I think this is the only safe way to commercialize a blender game, but of course that limits it to being web-only.

Yes as far as I’m aware you have to also supply any python script if you distribute a compiled runtime.


(Josip Kladaric) #22

I just tried some Burster games, its not that safe. I managed to get all the source files from games with just some simple reading and writing.


(wallacemarino) #23

Those games have probably been uploaded without purchasing burster encryption certificate.


(C-106 Delta) #24

Josip, are you referring to a game compiled as a runtime? If so that is the problem we are trying to work around. If you compile your game as a runtime it is packaged with blenderplayer and so comes under th umbrella of blenderplayer’s GPL meaning you have to make your source material both available and modifiable in order to distribute it.
Not only is the blenderplayer under the GPL, but it is also very easy to extract a blend file from the blenderplayer (and it’s legal too). (link)(link).

With that I would like to go back to point 6 of your original questions, encrypting blenderplayer itself. You mentioned some problems with this issue before but suggested this case might be exempt due to supplying the encryption software itself, can you point me in the direction of more discussion on this matter?

As blenderplayer.exe is relatively small, what if I were to supply two copies of blenderplayer with a distribution? One unencrypted and offering source code availability and the other encrypted, for use by the game itself I will not have modified the source in anyway, just encrypted and possibly renamed it. If i can encrypt the player then I can add a lot of control to how the game is opened ensuring that it couldn’t be replaced by a fake version of the player.
You might want to read more about the GPL v2.0 (link). Unfortunately, this has been tried before. “If” you encrypt the blenderplayer, then you need to provide the user with a way to encrypt/decrypt “the exact same file”. You can not have two different versions of the file. As Musk said:

Therefore, encrypting the blenderplayer will not solve the problem (since you would need to provide the user with a way to encypt/decrypt the file).

Also, I read your first post again and noticed that you said:

Have you seen the BPPlayer?


(kurotatsu) #25

Thank you C-106 Delta for bringing this up, as I stated, and was ignored on in this thread: http://blenderartists.org/forum/showthread.php?t=209310&p=1790812#post1790812

I have since tried and compiled my game in the Vishnu Packer format, I like it alot.

Once again is there a way to make Bpplayer(which i currently really enjoy using.), so it works like the Vishnu Packer as I really enjoyed setting my own splash screen, and animations, and music, to load like a commercial game.

Of course i’d prefer BPPlayer was more a single launcher than using the file browser format, but if C-106 Delta was willing to do a reworked version of BPPlayer(to work like Vishnu Packer, with maybe a couple better bells and whistles,) I personally would fund the effort.

If you’re interested C-106 Delta(as I have complete faith you’re capable), Pm, me and we’ll iron out the details.


(wallacemarino) #26

Kudos C-106 Delta it seems you have already done what I am attempting and done it better (I suppose it helps if you’re actually a programmer!). I wish you’d pointed me to this earlier. I have been scanning through some of the threads and have a couple of questions;

  1. Why is this not better known, and why has it not been integrated into Blender source?
  2. I saw some mention of compiling the .block and BPPlayer into a single .exe but see no functionality for this in the download is this a deprecated feature or do I just need a third party compiler (if so what do you recommend)?

(wallacemarino) #27

Apologies kurotatsu, you did bring this up, I must have overlooked it. Forgive me.


(haidme) #28
  1. Why is this not better known, and why has it not been integrated into Blender source?
  2. I saw some mention of compiling the .block and BPPlayer into a single .exe but see no functionality for this in the download is this a deprecated feature or do I just need a third party compiler (if so what do you recommend)?

1)BPPlayer is well known for almost 3 years, don’t know how you overlooked it.
2)Afaik compiling the .block and BPPlayer into a single .exe is explained in page 20 of BPPlayer thread.

BPPlayer is the best way to encrypt blends without the inconvenience of the GPL restrictions.
The only weak point in this great tool is the missing .block to .block linking and runtime .block loading(load new game actuator) features. But if your game is small enough to be contained in only one blend file this is definitely the tool to go commercial.


(kurotatsu) #29

No prob,lol i have thick skin.

I think it would be a massive leap for all the community to set up BPPLayer, as frontend launcher/compiler(that can export a custom .exe) like vishnu paker, as well as a game player, allowing the designer to set up splash screens, an avi movie, music, and titlescreen with options for screen format before the game is even played so we may put these GPL issues behind us for good.

And my offer still stands I will invest up to $300 cold hard cash, for the endevor.

Let me know if I should start a seperate thead for this but I’ll put the offer up here first and see what comes of it.

Kuro.
P.S.

My only main stipulation would be there be a 2.49 version, made first.


(haidme) #30

@kurotatsu you can save your money if this splash screen launcher I made 2 years ago works for you. There was a thread about it on BA but I cant remember the title I set on it.


(kurotatsu) #31

Thanks Haidme, I’ll look it up and check it out.

I’m just sick of the GPL nonsense so in the spirit of doing rather than debating, I’m willing to fork over some my hard earned money for change.

I know you like myself(not to mention the community at large.) have put ALOT of time and effort into what we are hoping to create to have such a stupid hurdle put before us hindering our creativity and possible payoff for work invested and taking the time to educate ourselves in blender.

I run a crew of 6 people during the day working and traveling all over ther country doing construction for a company I subcontract for, which leaves alot of time in motel rooms working on blender.

I’ve always been an artist, and wanted to become a game designer, and blender has given me that chance as well as stopped a potential to make money doing what I enjoy.

I guess it comes down to providing for ones wife and kids which I do now without complaint, but we all would like to see our creations on a bigger scale yknow.

And if I can’t do something myself, I find someone who can, and I’m not above paying a person for their time is all, it’s how the world works.


(SolarLune) #32

Kurotatsu, I completely understand where you’re coming from. The BGE is a powerful, easy-to-use engine that has already proven both commercially-viable (ColorCube) as well as capable of pounding out simply professionally great-looking games (Elpis the Game). While external file packers are safer than the original BlenderPlayer, the GPL Licensing issue is a core problem with the Blender Game Engine. Even if we keep the original with the source external, it’s still better to fix the problem than simply address the symptoms. That is why I propose we simply fix the problem by doing this:

  1. Give the source code for the BlenderPlayer to members of the community (I am willing to lend myself to this problem). The more people, the less time it will take to fix the player.
  2. Read through the BlenderPlayer source code, and…
  3. Write a new set of source files that is basically a line for line duplicate copy of the original BlenderPlayer source, all wrapped up in a more community-friendly licensing. Because it is based off of the idea and flow of the original source, it will work as a BlenderPlayer. Also, because each page of the source is written by community members, and no lines were copied from the original BlenderPlayer source, we can license the code ourselves as a community project.
  4. Once all pages are completed, we put them back together and have ourselves a safe, easy, cross-platform game engine executable.

If there are enough hands to simply copy lines of code perfectly, the whole thing could be done in a matter of days. A new, fixed, BlenderPlayer executable and a completely commercially-capable free, easy to use game engine in a matter of days. That’s my proposal for the community, and I hope that others agree.


(kurotatsu) #33

I’m in, once I understand the how-to of anything I can do anything.

We need to start a new thread called “Blenderplayer: A call to Arms!!!” And put forth the idea you just proposed.

How often does the community pull together for a common goal. It would be refreshing to see the community as a whole stand together and say we aren’t going to accept the GPL dillema anymore.

I’d ask that you head the thread, and provide the source, as I trust in your ability with programming far exceeds mine which is limited to simple game python.

One thing I can do though(as proof of from most of my posts,lol) is type so just point me in the right direction, and I Will type the source as needed.

Thanks for standing up to the cause man, I’m sure this type of contribution will breath new life into the community and open up many doors for us all(not to mention the ability to use 3rd party packing software, wink, cough, Vishnu, wink.).


(SolarLune) #34

I could retype the source myself, but more people = less time each one of us has to do it, and if someone fails, someone else can easily pick it up. There’s not too much to do - I’ll download the latest BlenderPlayer source and see how many pages it consists of.
EDIT: I’m not going to download the whole source, as the files are easily obtainable via blender.org. I’ll get the BlenderPlayer thread up.
EDIT Two: Topic made. Let’s do this. LOL
EDIT Three: Looks like this may not be a possible endeavor, as it seems that even if we rewrite the whole BlenderPlayer from scratch, the GPL licensing still applies somehow…


(wallacemarino) #35

@C-106 Delta & kurotatsu

I would be happy to try and create a GUI packer for BPPlayer that could include integrated splash screens and music, it is what I had planned for my ccrypt system at the next stage, but as BPPlayer seems faster and more robust anyway it seems I could make a better contribution by using my ideas to help it’s development. There are a few issues, firstly it would be windows only, secondly I could not achieve it working with BPPlayers current converter GUI. I would need to be able to automate the conversion process using batch/command line instructions or similar (for instance converting all the files in a specified folder/passing the names of the files to be converted via cmd text string or StdOut).

C-106 Delta - I get the impression from reading through the BPPlayer threads that earlier versions of BPPlayer had a different method of converting the files, would earlier versions of BPP accommodate such a method? And if so would you be willing/able to provide me with a legacy version so I can test this out? If not are you willing/able to create a build that would operate purely from batch instructions? Are you happy for me to try any of this out at all?

kurotatsu - If C-106 Delta is happy for me to try this out and it does reach a distribution ready stage I would reluctantly have to take you up on your offer of investment in order to pay for the $299 commercial license required for the development package I plan to use. I wouldn’t normally ask someone to pay for my software but I’m unemployed at the moment and there’s no way I could afford to do this myself. I hope you understand.


(rarebit) #36

Food for Thought

  • For keys which need to be compiled into any files, split the key into smaller parts, preferably numeric (not strings, see “strings” application), make functions for putting these back together.

  • Any binaries you make, run through some kind of obfuscater.

  • For files which need to have there integrity checked (anti-tamper) then use a hash sum. A hash sum basically adds up all the data in the file using a cascade algorithm which yields a (pretty) unique signature. This capability will already be in ccrypt. Then use the signature (stored similar to keys) to check if the file is the same.

  • If the player needs to be separate then let it be but indicate that it needs to a specific downloaded version or one built using a certain make file. This should ensure certain outcomes which can then be authenticated using hash sums.

  • Personally i’d use say Python to write this so that it is one size fit’s all portable. Also Python has some cryptographic functions already built in (or build-able into a 10MB ish binary), also the other extra features it will provide is unmeasurable, e.g. archives, file management, process handling, etc… (see http://docs.python.org/library/index.html )


(kurotatsu) #37

Wallacemarino-, if you can get your approach complete and distribution ready, We’ll work something out(PM me upon Completion) my only issue thus far would be i’d want it to be crossplatform as rarebit suggested.

Joeman16-Don’t sweat it, let’s just find another method and keep the same resolve.

rarebit-Thanks for the heads up, sounds like ya could be of help in this endevour. If your up to it, we’d be glad to have the assistance.

I’m going to move my future posts to the other thread though, to stop bouncing back and forth.

BlenderPlayer: A Call to Arms


(wallacemarino) #38

@ rarebit - ref.Food for Thought

This is very interesting stuff, but at the minute my abilities with Python are not good enough to achieve something like what this project requires, I will continue to research the possibilities and see what I can come up with but until then I would like to suggest that any competent Python programmers out there take up your suggestions and see if they can make them a reality.


(C-106 Delta) #39

Version 1.02 had a way to convert a blend file using pure batch instructions (even if they were a bit obscure). Version 1.03 doesn’t have pure batch instructions because the v1.03 source code was rewritten and I didn’t have the time to implement it. However, I’ll start working on a pure batch solution for v1.03.

For v1.03, I think it might be a good idea to make them work like this:

BPPlayer.exe -convert "mysettings.conf" "myblend.blend"

mysettings.conf would contain the configuration data and myblend.blend would be the blend file that you want to convert.

Python isn’t really the best choice for something like this. Python can easily be disassembled and/or intercepted. On top of that, python is hundreds of times slower than C or C++.

allowing the designer to set up splash screens, an avi movie, music, and titlescreen with options for screen format before the game is even played

integrated splash screens and music
Alle92 was already working on a launcher for the BPPlayer that allows you to add a splash screen and change screen format (I don’t think it supports avi movies or music but that would be a good addition). I’m not sure if Alle92 wants me to release the links yet. It might be a good idea to PM him, or wait for him to post a new thread.


(leonnn) #40

Python is 100 times slower than C and c++, really?