Any way to build a non-disassemblable executable?

General discussion about LÖVE, Lua, game development, puns, and unicorns.
scutheotaku
Party member
Posts: 235
Joined: Sat Dec 15, 2012 6:54 am

Re: Any way to build a non-disassemblable executable?

Post by scutheotaku »

corb wrote:And this is the reason why there isn't a single commercial game released with love2d to date and never will be. :3
It's a good tool for prototyping, learning lua and a general process of making a game though so take it for what it is.

I would never waste my time and the time of a coder making a product we're going to sell if there isn't even a basic way of protecting our work, piracy is bad enough but if your source and asset files are open to all too ... :joker: . Yeah it's true most big companies leave their assets comparably unguarded but at the same time they have big lawyers too, so they don't have to worry much about that. For indie devs though, security is an issue.

You get what you pay for. Free engines produce free games.
corb registers just to write this? Don't feed the troll.
corb
Prole
Posts: 3
Joined: Sat Feb 16, 2013 10:41 am

Re: Any way to build a non-disassemblable executable?

Post by corb »

Actually I was looking for the same topic.
And I'm not trolling, It's my personal opinion. If you disagree with it, it's your right but at the same time it's also your opinion, it doesn't make it correct.

It's not a technical topic as much as it's a political one. There are at least 4 other 2D game engines using lua out there and 2 I know of in the works, as far as I know this is the only one not supporting project building to binary. This is basic functionality. If the devs don't want to add it to their engine for whatever reason it's their choice. But they will lose potential userbase and they and the other users on this forum will have to learn to accept this.

No need to get mad.
tomshreds
Party member
Posts: 101
Joined: Thu Oct 18, 2012 8:49 pm

Re: Any way to build a non-disassemblable executable?

Post by tomshreds »

mongrol wrote:I'd like to ask why you want to prevent disassembly anyway? Do you believe that you will lose some monitary value if you don't do this? If so, please explain how.

Yesterday I edited the thread to add this:
Anyways, I just thought about it and almost any games have ressources accessible by the public. So I guess this isn't the end of the world... If I see somebody using my stuff I'll just tell them...

I was just in one of those moments where you try too hard to make everything perfect. But no I don't think having my code available will be bad.

Thanks
spectralcanine
Citizen
Posts: 65
Joined: Sat Dec 22, 2012 8:17 am

Re: Any way to build a non-disassemblable executable?

Post by spectralcanine »

corb wrote:It's not a technical topic as much as it's a political one. There are at least 4 other 2D game engines using lua out there and 2 I know of in the works, as far as I know this is the only one not supporting project building to binary. This is basic functionality. If the devs don't want to add it to their engine for whatever reason it's their choice. But they will lose potential userbase and they and the other users on this forum will have to learn to accept this.
What do you mean? You have been answered that you can use compiled Lua code (luac.exe).

Are you talking about resources? Because if so, how is this even related to the executable in the first place. Games don't put PNG files in an executable file and call it "protected", they use their own proprietary formats. You can do exactly that if you want, but apparently it's beyond what you deem worthwhile enough to protect your assets, so I don't see what you're trying to say.

The end result is that no matter what you do, both your assets and your code would be viewable if anyone really wants to view them. You can add a little protection to stop any 5 year old to open a zip file and view it all, but there isn't any way to really protect it. This is true to any form of software, and it isn't related to Love2D or Lua.

Depending on your game, making it more open, instead of trying to hide it, and adding modding capabilities, will likely make people spend time on making your game better for you, instead of stealing assets.

This might sound surprising, but people buying a game tend to spend their time playing it, not cracking its resources, and definitely not looking at arbitrary code they don't even want to know about.
corb
Prole
Posts: 3
Joined: Sat Feb 16, 2013 10:41 am

Re: Any way to build a non-disassemblable executable?

Post by corb »

Games don't put PNG files in an executable file and call it "protected"
I've seen more than enough 2D games with all their assets in exe and dll.
What do you mean? You have been answered that you can use compiled Lua code (luac.exe).
I missed that. And I'm mainly an artist so compiling by hand would be hard as hell for me.

Anyway I made my case, whether you think it's important to protect your work or not is your opinion. I think it is.
scutheotaku
Party member
Posts: 235
Joined: Sat Dec 15, 2012 6:54 am

Re: Any way to build a non-disassemblable executable?

Post by scutheotaku »

@corb
First of all, I suppose that I shouldn't have called you a troll - it wasn't fair. Sorry!
corb wrote:
Games don't put PNG files in an executable file and call it "protected"
I've seen more than enough 2D games with all their assets in exe and dll.
Well, you can do this with LOVE, though the assets certainly aren't protected (as previously discussed). If protecting the assets is extremely important to you, then LOVE probably isn't a good choice. Though of course, many other game engines/frameworks (both free and commercial) aimed at indies, hobbyists, and "pros" alike don't really protect the assets either - one notable example of this would be the entire Torque line of engines (which are now free and open-source, but were commercial engines until just recently). The id engines would be an obvious example of an AAA engine like this.

I don't really feel that it's all that important to protect assets, especially 2D assets (which are easy to steal whether the actual files are protected or not), so this isn't an issue for me personally. I think it's enough to just copy them into an .exe with the rest of your .love file to ward off any casual tinkerers. If you disagree, I completely understand.

As a side note: if anyone's taking offense to you, it's probably more because some people here are suggesting that LOVE isn't good for serious projects, implying that it's a toy. If LOVE doesn't work for you (you as a general term, not you as in "you"), then that's fine - but don't go cutting down the project because its goals and design don't meet your personal preferences. That being said, constructive criticism is always good, as I'm sure the LOVE devs and contributors would agree.

If you're looking for a cross-platform engine that "protects" the assets, let me recommend Haxe and NME to you. Haxe is a cross-platform language a lot like ActionScript 3, and with it and NME you can easily compile to a number of different platforms (including iOS, Android, Flash, and HTML, along with the usual desktop platforms) with the same code. There's also a lot of Flash libraries/frameworks that have been ported to Haxe, with two notable examples being HaxeFlixel (a Haxe version of Flixel, http://www.haxeflixel.com/articles/getting-started/ http://dustytome.net/moot/2012/08/haxe- ... -tutorial/ ) and HaxePunk (a Haxe verrsion of FlashPunk (http://haxepunk.com/ ). If you want to use Lua, the upcoming Polycode may be a good option: http://polycode.org/ . [I hope nobody minds me linking to "competing" frameworks/libraries...]
User avatar
master both
Party member
Posts: 262
Joined: Tue Nov 08, 2011 12:39 am
Location: Chile

Re: Any way to build a non-disassemblable executable?

Post by master both »

you can always encode your assets to base64 code, and add it to a lua file, that whats love use to show the no-game pig.
EDIT: now that I think of it, any 2D graphics can be easily stealed by taking screenshots of the game.
mongrol
Prole
Posts: 33
Joined: Fri Nov 30, 2012 1:01 am

Re: Any way to build a non-disassemblable executable?

Post by mongrol »

tomshreds wrote:
mongrol wrote:I'd like to ask why you want to prevent disassembly anyway? Do you believe that you will lose some monitary value if you don't do this? If so, please explain how.

Yesterday I edited the thread to add this:
Anyways, I just thought about it and almost any games have ressources accessible by the public. So I guess this isn't the end of the world... If I see somebody using my stuff I'll just tell them...

I was just in one of those moments where you try too hard to make everything perfect. But no I don't think having my code available will be bad.

Thanks
Good for you. Free code is great for society and the gaming community in general. Imagine if everyone chose this route. I could reuse someone elses AI routines instead of writing my own, enhance and then give it away. Society gets improved reusable code and I get faster time to delivery which in turn, equals more money. If only everyone followed this route we'd all be swimming in great resuable, specialised and continually improving chunks of code that we can use, make money from and pass on for the next guy.

Can I suggest that you also license your code (since its viewable anyway) under a license that allows others to use it AND ensure's modifications are reusable. E.g. a non-permissive license like the GPL.
User avatar
Xgoff
Party member
Posts: 211
Joined: Fri Nov 19, 2010 4:20 am

Re: Any way to build a non-disassemblable executable?

Post by Xgoff »

technically, the copyright you have for all the resources you made yourself (code, art, music, whatever, assuming they aren't derivative works) is going to be far more powerful than any sort of protection you put in your code. of course this means you'd have to put in the effort to enforce these copyrights when they're violated, but it would at least be a barrier for anyone trying to steal them for use in their own commercial project. tbqh i'd be more worried about piracy than anything

anyway, in theory you could always use a modified version of love that uses resources embedded in c files. they could even be encrypted (again, they would have to be decrypted in RAM in order to be used, but still). not bulletproof or anything, but it would be more of a hassle especially compared to simply running it through 7zip. for example, luajit's bytecode compiler has an option to produce embeddable bytecode (which also happens to be portable, unlike standard lua's bytecode), so i don't see a reason why this couldn't be extended to everything else
User avatar
Inny
Party member
Posts: 652
Joined: Fri Jan 30, 2009 3:41 am
Location: New York

Re: Any way to build a non-disassemblable executable?

Post by Inny »

I mentioned this on the IRC channel a few nights ago and it's worth repeating. I make it a point to view the source code of every .love I download. I'm always looking to see if there's anything worth stealing or any techniques worth learning. The short answer is that every technique worth learning was discussed here on forum before it made it into the code, and every piece of code in the game is the game and there's nothing that can be removed that's still usable.

In terms of the damage done, just taking the .love or the .exe and redistributing it on bittorrent or something is the most damage that someone can do. Stealing the artwork and putting it in their own ripoff is the next level of damage. Code theft is really the last thing that someone can do that's damaging, because that code has to be adapted for new use, which means it's going to be rewritten anyways.

The reason code theft is such a big thing for places like Valve and EA is because their code is specifically designed for reuse and 3rdparty licensing. The most reusable parts of any game that's made with love are already free and open source and available at https://bitbucket.org/rude/love/
Post Reply

Who is online

Users browsing this forum: DilemmaGX, Google [Bot] and 3 guests