I have not done extensive research in this area. At least not on the technical side.
I have, however, made sure that you can use LÖVE commericially without any license pain. LÖVE is licensed under ZLIB/PNG, which means that you may create modified closed-source versions as you see fit. Moreover, the libraries used by LÖVE are carefully chosen so that you do
not need to think about obtaining commercial licenses. There are two limitations only:
- You may not create a modified version of LÖVE and claim that it is the original. (This is imposed by ZLIB/PNG).
- You must use LGPL-licensed libraries in DLL/SO/MYLIB-form. Right now, that includes SDL, SDL_mixer and DevIL. (Imposed by LGPL).
As for encryption: that would be great, but not practically possible with the .love-files alone. Also, I don't know how encryption algorithms work for games. Can anyone tell how the "serial key" relates to the encryption key? With some superhax-use of DLL's, it's probably possible to realize some encryption scheme without recompiling LÖVE too.
Please do come forth with suggestions. I'll share my idea first, which does not take serial keys into account. One could encrypt all game files and create a special module (using liblove) which provides an implementation of love::File. This module has the encryption key built-in, so it knows how to decrypt the files.
Code: Select all
require("haxfs.dll")
-- A love::File should be returned. I'll have to create a tutorial
-- one day on how to do this.
file = haxfs.newFile("bgmusic")
-- Love will accept the object where applicable.
music = love.audio.newMusic(file)
Of course, one could very easily get access to the decrypted files like this:
Code: Select all
require("haxfs.dll")
require("evil.dll")
-- A love::File should be returned. I'll have to create a tutorial
-- one day on how to do this.
file = haxfs.newFile("bgmusic")
-- Love will accept the object where applicable.
music = love.audio.newMusic(file)
-- Saves decrypted file.
evil.save(file)
... which I do not see a way around without recompiling. If recompiling is acceptable, then we have more options. You could embed the encryption mechanism (and key) directly into the exe, and use a custom encrypted setup script instead of main.lua.
Either way, people will eventually hack their way into your game and get your files no matter what we do, but this may be able to stop 99% of those nosy people.