That's correct, and although I've released a packer that packs the entire engine (love.exe plus DLLs) and the .love file (or directory for that matter) I really like LÖVE's approach of "engine as an application." But to use the engine as an application we have to distribute .love files which are easy to open.kikito wrote:If you force me a lot, I will tell you that you might try attaching the .love file to the love executable; it will be an order of magnitude more difficult to "decrypt"; in other words, it will take more installing winzip and double-click-open the file. Sweet. We can rule moms and pops out.
But on a second thought, if LÖVE is distributed pre-compiled with an encryption key, once someone finds it all .love files become compromised. If the encryption is asymmetrical, the private key will have to be made available to developers which completely defeats the security measure. And if each developer is allowed to compile his/her own key in the executable, it defeats the "engine as an application" thing.
Maybe the easiest thing to do is to compile Lua scripts with luac. Compiled Lua scripts without debug information will be pretty hard to make sense of if decompiled. There is a complete lundump.c written by Luiz Henrique de Figueiredo, one of the Lua authors, that does byte-swapping so compiled scripts can be run on any platform despite endian mismatches between it and the compiled script. If this could make its way into the official LÖVE source it would be awesome. The post is a little old but I don't think much have changed in lundump.c that would handle the patch "unpatchable."
Now a word about my motivation. While I understand that licenses are the proper way to protect intellectual property, it doesn't stop people from reverse-engineering code. Although I love to share snippets and complete applications, I wouldn't like to have a commercial application of mine go naked into the wild. So while there's nothing you can do to completely stop hackers, I'd like to be able to stop at least boys lazy enough not to learn how to code by themselves or ask for help in forums that like to take a pick at someone else's code.