| Home Page | Recent Changes | Preferences

Trystan/Code Protection

Code Protection

This is going to make some people angry that I'm posting this. This is category rant. This is my opinion and no matter what you think I'm entitled to it.

I'm all for sharing my code with others when I feel like it. For other times I would simply like the people who use my code to ask for permission first, or even not use it. This conversation has been gone over and over and over in both the Infograms and BeyondUnreal forums. It's a dead horse, per Wormbo, but recently I've noticed something that has pissed me off.

Every time a coder asks the community how to protect his code he gets steamrolled by the mass majority who believe that the code should be open. Some say that because Epic is allowing us to mod their engine that it's not our code anyway, it's Epics. (Not true. Copyright is retained by the writer of the code.) Some claim that the Epic EULA gives them ownership of any code written by us. (Not true. Read the EULA and attempt to understand it. As Mychaeel said there's a few funny bits in it.) Some claim that because you can't effectively protect it that Epic meant for it to be shared. (Not true. Epic shouldn't make any decisions regarding how or why I write code.) Others claim that we all learn from the community so our code should be shared as well. (Not valid. While yes we do learn from the community I also learn ASP.NET, C++, OpenGL, DirectX programming from those respective communities but you don't see them asking me to release all my code into public domain usage.) Finally there are those who say there's only one way to do most things and you're just going to do whatever you're doing the same way everyone else does. (Not valid. Every book written today consists of the same three plots, rehashed, with different characters and methods. Those books are still copywritten.)

Some get around this by releasing their code under a license. El Muerte of the Drunken Snipers releases most of his code under the GPL. One of the provisions of the GPL is that all subsequent code be released with source code intact so El Muerte does not have to worry about someone using his code and then using any of the various methods that do exist to protect your code. Others simply place a copyright header in their source code with notes along the lines of "Please contact XXX for permission to reuse this code." or "This code can be freely used as long as..."

But this is a rant, and one with a very simple purpose. If you ask how to protect your code you will be steamrolled by the majority of the community. You will find yourself fighting a battle with 1 to 10 odds. You will find yourself at odds with icons of the community that you don't want to fight with. You will find it to be a lost cause.

But now find code that has been protected, and make a post asking how to get access to it. You'll be pointed in the right direction with no mention of possible copyright issues. No mention of "ask the author before extracting it." No mention of "that code's copyright, it's protected, you might want to consider why it is." You'll gain all the help you want in releasing the protected code from it's cage despite the original author's obvious intent that it not be done.

Why is this? Everyone in the threads above claim that they respect copyright and would never use another person's code without permission. (To their honor most of the people who claim this are almost always exceptional UnrealScript coders and truly would not ever do so.) However, when someone who's obviously not interested in respecting copyright or intellectual property comes along those same folks happily help him with no disclaimer at all.

That bothers me. (Obviously, or I wouldn't be writing this.) While I'm all for helping people figure things out I truly think that in some situations personal opinion shouldn't enter the game. Tell the person asking how to protect his code to use ucc editor.stripsourcecommandlet and then state your opinion on the matter. And state how that code can be extracted using UTPT or WOTgreal. And when someone asks how to extract source code from a package that doesn't seem to have any tell them how, but state that the code is copywritten and is probably protected for a reason. Don't blindly help them abuse someone else's work. If they bothered to protect it they obviously care whether or not it gets used.

Maps, models, static meshes, and code are used every day by members of this community without permission for various purposes and reasons. It's not a compliment to use someone's model without their permission, it's theft. It's not acceptable to use someone's code just because it's there, it's theft. I understand that in today's day and age most folks have learned not how to respect copyright or intellectual property but only how to circumnavigate it but copyright is there to protect not only the person who's code you want to learn from but also to protect any code you write from misuse by others.

Comments

If you're going to comment then do so sensibly and with taste. Attacking me personally (as has been done in PMs on both community sites) will only result in you looking like an idiot.

Chazums: Interesting, something that occured to me when reading is that people seem to regard the knowledge of how to protect the data copyrighted and won't share the information, ironic? Personally i'm for copy-protection and the ability to keep stuff private, people might not want their amazing new feature instantly ripped off and appearing on every other project in a week after realease. I take the position that its their stuff and the descision is theirs to make, if they want to share it or hide it thats their choice and should be supported either way.

Mychaeel: I can't speak for anybody else but myself, but the reason I do prefer not to tell people how they can "protect" their code (for what it's worth) is that I consider that knowledge destructive because all it does – factually, not just in my personal opinion – is stripping everything from the code that others could use to learn from it, but they can still mindlessly copy it in utter disregard of the original author's wishes and rights.

There's a thread somewhere buried in BeyondUnreal's Coding forum from a coder who wished to "protect" a small map-embedded script of his, some thing that slowly faded an icon in and out when his map was loaded. He seeked to strip the source code for that from the map file because it would be "all too easy to rip off." Naturally a huge discussion on the ethical implications of stripping source code commenced, but nobody would or could tell him how to actually remove the sources from the map; so he created a source code stripping tool from scratch and posted another thread asking whether he should or should not release it publicly.

Ironically though, stripping the source code from the map file would not even be noticed by somebody ripping off his small map-embedded custom component. They'd just have to load his map, then load their own map and place the actor that'd still be listed in the actor browser. That technique is even described on Embedding Code (not with the intent of faciliating theft of intellectual property of course, as expressly stated there too).

Stripping source code from Unreal packages does nothing to protect code. All it does is hurting people with good intentions. That's the only reason I'm so vividly against it.

Eldhrin: An interesting page. Personally I tend to release stuff under the GPL, except for website code (I don't tend to write generic site engines, so it wouldn't be much good for other people anyway until such time as I do write one), although as I (very) gradually produce more UnrealScript I was starting to think about the BSD licence with the copyright clause. However, that might imply I thought my code was good for something - which it's not! One thing that is very clear, however, is that when you write code, it's yours and you should be able to do what you want with it, within the provisos of the game's licence agreement regarding user-made mods. If you want to release the source code, do so. If you don't, then don't. However, unlike normal software development, it is impossible to make money on this thanks to the licensing restrictions, so a lot of arguments for closed-source work fall apart. I would generally argue for open source code, but if someone doesn't want to do that - fine, it's their code and they're welcome to do what they like. I'm not going to try and reverse-engineer it. I'm far too lazy for that. I'm even too lazy to use other people's code in the first place.

Good rant anyway. Everyone should read it.

El Muerte TDS: Well I release my code so that people can take a look at it how it's done, I also provide anonymous CVS access so that people can always check by latest code. I want people to look at my code and point out mistakes, possible improvements, etc. But I get the idea that nobody looks at it, at least I don't get any feedback what so ever. Ok this doesn't have much to add to this rant, except that even when you release you code to the public some people just don't use it. I wonder if I stop releasing the source files people will start to look at/use my code. All these diffirent kinds of wheel rolling a round is just not very usefull.

Mychaeel: In addition to stripping code from Unreal packages being a pointless exercise as far as code protection is concerned (as I elaborated on above), I fear that it conveys a very wrong message: It could make some people believe that compiled packages whose code is not stripped are free to use as one pleases regardless of any copyrights or licenses attached to it. In other words, people "protecting" their code by stripping the sources actively hurt those who choose not to go those extra lengths.

Trystan: El Muerte, one of the reasons I know the license you release your code under is because I'm a very avid fan of it. While most of what you've done so far is a bit away from what I understand I do check out just about everything you release. In fact you're one of the icons of the community to me. You, Mychaeel, Tarquin, and Wormbo by far are the four most active and knowledgeable members of the community that I see. Mychaeel, don't misunderstand the point of what was said here. I've been converted, I'm for sharing code (heck, I'm about to release my first official mutator as lame as it is =)) but.. I'd like to see people put the same enthusiasm applied to copyright explanations as to code protection discussions, rather than a factual explanation of how to go about exporting said code. That is the point of this argument. Everyone against code protection should at least include a disclaimer with their links to UTPT when discussing how to retrieve code from a package: "Most code is copyrighted and the license of the code being exported should be carefully considered before you use said code." Or something along those lines. (I'm way too verbose.)

Mychaeel: That's a reasonable expectation. My experience with discussions where somebody asked how to get the sources out of compiled packages is, however, that people do emphasize the wrongness of decompiling or extracting code in order to modify and recompile it without the author's permission just as emphatically as they tell people that stripping the sources in the first place is no good. See Thread logo 128269, for instance.

Piglet: Strangely enough I think the best way you could possible 'protect' your code is to make it so annoying and sloppy that no-one would ever consider stealing the source, I saw a good semi joke article on it recently but i cant remember where. That said i'm very pro source-code myself, though if I started getting really good i might end up changing my mind (isn't it great to be a hypocrit :P )

Foxpaw: Hmm.. Although I think that was a joke, it's actually an idea.. if a person wanted to protect their code for whatever reason you could probrably make a program that would run before the compiler that would mutilate your code for you, sending the formatting to high heaven and changing the variable names and unique function names to an incomprehensible string of random characters.. Seems like a fair bit of work, but it would probrably scare most people away. :P

Mychaeel: That would, however, not protect the code from being used; merely from being understood when it is used.

Foxpaw: Well, in a sense, though it would be an exercise in itself to find where one function began and another ended.

Mychaeel: If you make the source code artificially hard to read I'd probably stick to decompiling the byte code if I wanted to rip off your code. – But all this is not about people wanting to rip off code; it's about those who'd like to learn from code. The fundamental argument is that decompiled code lacks all structure and comments a coder might have put into his or her code for the sake of keeping it comprehensible. If you try to alter the source code to make it incomprehensible, you could just as well remove it altogether.

Captain K.: There's a prominent coder in the community who uses the absolute UGLIEST coding style I've ever seen – no line spacing, commands are all jumbled together and completely unhelpful variable and function names. It doesn't *seem* like he utilizes any kind of actual obfuscation method – it just looks... really, really, ugly. The best way to describe it is "spaghetticode".

I'm suddenly wondering if the unreadability is intentional.

Mychaeel: As Freud would have said, "Sometimes ugly code is just ugly code." ;-)

spoon: One problem with the GPL is server downloads. Part of the GPL is including the GPL License. If you release the source code it's easy enough to include a LICENSE file in the zip file, but if the person de-compiles your package there will be no LICENSE file. I think the easiest way around this is to create a License.uc file that is just one big comment and then make reference in each file to look at License.uc for the LICENSE. I guess you can also do a README.uc.

Here is an interesting question. Is the GPL valid for unreal mods, mutators, etc? Since they are not stand-alone applications, but are used by the unreal engine they are more like libraries. Under the GPL, for the unreal engine to use these "libraries" it must also be GPL'd. The LGPL might be a better choice for a licensing agreement.

Also putting GPL licensing comments in your file does not stop people from [claiming their code as their own].

Mychaeel: Just put a short note referring to the GPL or whatever licensing scheme you prefer in your classes' comment headers. Also, include your email address there. Both points are obviously defeated once you start stripping the source code from the .u files.

Extracting the sources from .u files is not the same as decompiling the UnrealScript byte code. The sources are stored in plain text and separately and have nothing to do with the code that's actually executed by the engine. For that matter, nobody with a mind will take the absence of a copyright notice in decompiled code as an indication that it's public domain.

...and nothing ever will be able to stop some people from taking other people's code and claiming it as their own. Some people's mindset actually works the way that they believe that if somebody puts technological obstacles in their way of doing something, the mere action of circumventing or disabling those obstacles warrants their use of whatever it was that was protected. It's actually better to keep the technological barriers low to discourage those people.

Foxpaw: Well, certainly you can't make it impossible for someone to decompile your code and use it, and there are those that will try if you make it difficult, but you can make it extremely difficult through the use of some kind of obfuscation parser as mentioned above. It would probrably be a fair bit of work though, as you would have to make a program to parse the unrealscript, then break it down and mix it up, calling extra functions that execute only a single line of code, adding mandatory, but useless, parameters to functions, etc.. thus making it an exercise likely taking months of dedicated work just to reduce it into something useable. The original source that you compiled from, of course, would remain unaffected.

I no longer have to really worry about this, since if someone ripped off my code it would be plain as day.. they would have to copy the entire class heirarchy down to my wrapper for the actor class, and with that much stuff duplicated there's the matter of legal action.

OBWANDO: If people are that upset about codesharing, you should consider this. Epic and others make it so that their engines can be modified for different types of gameplay WITHOUT bearing a license. They expect people to share ideas and code to expand the visibility of the engine usage. This is another revenue path for the creators of the engine since more and more people will buy the game as a development tool. If you do not want your code to be shared you should purchase a license or keep the mod contained to yourself. This is the classic windows / linux – closed / open source movement issue. Open source has proved to be a successful way to get a platform developed very quickly. And almost EVERYONE who has coded has used another person's code or at least studied it to learn and optimize, so don't sell the community short. I think that epic's choice to keep the code open sourced makes development on this engine more attactive than the quake based engines (even though quake development is easier, but that is another can of worms ;) ). If you're here to learn, develop and show what you can do, share it. If you came to make money, find an investor and get a license and keep it all to yourself.

Foxpaw: I don't think it's all about the financial implications, but similar to some of the other arguments on copyright, etc. elsewhere on the wiki: Suppose you make a very fun, very cool mod, taking you six months to complete. The next month, someone else comes out with a "clone" of your mod, actually just your code ripped off, with a few new features. All of a sudden everyone's playing "their" mod, and they end up taking all the credit for your hard work. In theory, if everyone shared their code freely it would help the development of the Unreal modding community.. but then that community would likely be polluted with numerous clones of any given mod bearing different names. These mods, though similar, would likely be incompatible and would cause the community interested in playing mods like that to become split and diffuse.

I don't think that the decompilability of the script files was any choice on the part of Epic.. any code that can be executed can be decompiled through the use of third party software, though doing so is highly illegal.

MadNad: I'm sure most of you have heard me complain of people stealing my code. It has happened twice to me now since I released Excessive. If it has not happened to you, you do not know what it feels like. Its not like they stole an actor or two from me, it was fully recompiled. Heres a question for you all. What if you know that someone is waiting for your next release and you are 99% sure that your code will be stolen? There are these guys that formed an Excessive league for UT and had asked Pants' to to modify ut's version, which he gave them approval to do so, although he asked for it to not be publically available on a website, which it is btw. Now comes my version for ut2k3, and they decided to do the same thing, but this time without asking. It is still being done, and it is publically available, titled EXCESSIVE LEAGUE EDITION - REDIRECTED 208.161.104.42 & METROPOLIS - EXCESSIVE - LE - redirected 66.150.208.43

They claim that they are going to recode it when its done. I am all for sharing my source, but not if it is going to be abused! Would you feel any differently? Do you really think I want to deal with this, or lawyers?

El Muerte TDS: I have had my code stolen. It was one of VSK's firsts thefts. They stole my ServerAdds for UT, the only thing they did is remove my name from the readme.txt. I never knew they stole it until somebody emailed me that the VSK ServerAdds was reviewed by the Mod Squad. By the time I visited the Mod Squad a couple of people already commented on the review that VSK stole my mod. Ofcourse Mod Squad corrected their review within a short time.

I didn't do much against VSK (well except handing out negative advice when it came down on people wanting to make use of their services), the community did all the work to keep the credit of the mod on my side. A big part of the Unreal Modding community is just like the Open Source community, they help eachother out where needed as long as you return the favor and don't act like an asshole. This is something a lot of people don't get ( read RegularX/Rants #2 about the NDA part ). The UnrealWiki itself is a nice example of this. Apperently the Unreal coding community is quite unique because of it's openness, even though this is pretty much enforced by the engine because you can't protect your code. The UnrealWiki is just a little site (yes it is), it features some basic information about the engine and how to work with it. But it doesn't have that much worked out projects, real life examles of mods in action. Usualy this is the stuff you want, you don't want a small example of how to do things. Why invent the wheel again when you could use that almost round wheel created by Person X, and improve it. Ok maybe the UnrealWiki should have a document on [How to use existing code]?, so that new programmers joining the community know the basic rules/laws.

 

RegularX: I think to a large part, the community can help out - a lot more than lawyers can. I sympathize with you Mad, I thought part of Freehold UT's code had been lifted from a beta and I was pretty steamed (turned out we just happened to have similar ideas that looked similar onscreen, but wholly different implementations). Muerte's direction I think is a good approach. If they try to get too public about it, just be equally noisy. It's of course frustrating that there is no sure way to stop people from doing it, but it needs to be weighed against the advantages. We need to keep the perspective that these occurances are actually pretty rare, and there are few in the community who won't come to aid when it does happen.

MadNad Agreed, and I have had support from the majority of the community. However, what am I supposed to do when the next release I have is going to be ripped again? For now, I've tried to take it as flattery, but I'm forcing myself to feel that way, cuz in reality, I don't feel flattered, I feel used/unappreciated. Currently the only way for me to stop this from happening would be to threaten him with lawyers, and doubtfully I would get anywhere with that. I've removed myself from an assosciation with them and pulled excessive into private testing. Do you really gain any protection by protecting yourself under the gpl and/or copywriting your scripts in your headers. I doubt I would see anything different. And these occurances don't seem rare from my perspective. I still get all pissy when thinking about this. Somehow, I felt I did something wrong.

Foxpaw: The GPL license doesn't stop people from ripping off your code, it only stops them from selling it. It's basically the same thing as "open source." So, unless you want to make your mod open source, I wouldn't recommend using the GPL.

El Muerte TDS: the GPL does not stop anybody from selling it, open source just makes clear that it will remain free, you can't do anything with it that will result it becoming unfree. Ofcourse this only applies to others using it, in a future release of it you (as sole copyright holder) can always change the license. (in case of more copyright holders all of them have to agree in the license change)

RegularX: It probably doesn't seem rare since you are following up on Excessive - which is well known and multiplatform. Decent chance you'll run into again, especially as long as it's the most "modern" version. Copywriting isn't protection as much as declaration, and as noted - the GPL isn't a defense either. Personally, I'd say you have a case for stripping out the source code from the uc files and replacing it with a "email me for the source" message. I'd just hate to see that become commonplace with the rising attitude of mod groups. If I have to sign a waiver just to ask someone how they did something ... well, it would make Homer something something.

Foxpaw: The only problem with stripping out the source, as mentioned above, is that you can use WOTGreal to extract the bytecode. I had an idea that you could make something like a compiler that would transmogrify the code into something functionally equivalent, but absolutely indecipherable to humans. (Give all the functions and variables very similar, arbitrary names, add in variables and functions that do nothing, distribute operations among functions with no apparent relation, etc.) That way someone would have to copy your code in it's entirety (IE rereleasing the exact same product) or not at all. However, that may be a fair sized coding endeavour.

MadNad: I will end up stripping the source, if only to deter this from happening so frequetnly, but honestly, I wish I didn't feel I needed to. Excessive is mutator is mutator compatable. Thanks for your support in my situation too.

MeanFish: To avoid irritating or offending or otherwise making angry any fellow coders out there, I have to ask...what exactly IS acceptable behavior when viewing other peoples' code? I mean, I must say that there are a few times when I've said to myself "I wonder how they did this...a couple methods could prove useful to me in the future..." and I am now wondering, is this not ok? I mean, I dont intend on ever releasing anything that even remotely resembles other peoples' work, but is it frowned upon to look at code to better understand the coding ideas that go along with the project, whatever it may be.

GRAF1K: The Unreal community has a relatively opensource feel to it. Just e-mail the person that wrote the code if you want to use it. It's always okay to open the code and look if you just want to learn from – not take – it.

Solid Snake: Yes I believe by looking at other peoples' code to learn is a natural thing to do. Besides I do it everyday by looking Epic's code (They still teach me a lot of things especially proper replication). I think what is unacceptable is just taking the code unmodifed/modified and using it without asking for permission from the original author. You might notice that I release all of my source code bundled with my releases. I don't expect people to use it since it isn't exactly what people would use in the game sense, but if someone else came out with a ragdoll game like mine with all the same features plus some extra ones, well I'd be pretty suspicious, especially if it had some of the technology I made such as bruises (it works somewhat), since no one else had done it. I believe it is just common sense, its like with your friends. Would you ask your friend first if you could look up pr0n on his/her computer, or would you just do it? (Bad example?)

RDGDanClark: Since everyone else has put in an opinion, I guess I will too :D

A few things are pretty clear to me. First, the engine's native code is protected. UnrealEngine2 Runtime aside, the engine is unavailable to anyone who doesn't have a license. Second, the script files are not protected. Epic did this so that people could expand the game and increase the shelf life of their product. Third, it seems to me that if you're willing to work in an environment where the script files that you need to make your mod are inherently unprotected, then you are conciously and willingly putting your source code into public view when you release the mod. I agree with people's desire to protect their code (to a point), but I also see the need for people to view others' code to learn from. Try looking at it this way – a novel is a copywritten work. You may not copy or plagurize a novel without violating copyright law (however enforcable it is, but that's another discussion). But you do have access to the contents of that novel to read and learn from. There would be no novels today if people were not allowed to read and learn from them. Same goes for software. If all source code ever written was completely hidden from public view, we'd still be playing Pong. Copyrighting the game is the idea, and once the game is copyrighted, you have all the ammunition you need to defend yourself from thieves. If you can prove that someone's new game is ripping you off, then copyright law will protect you.

Solid Snake: The problem is that why do we want to get messy with lawyers and copyright laws and stuff? They only subtract from actually wanting to have fun if we have to think about this. I think people just need to pay a little respect, and the reasons for protecting code are usually superficial. Besides it seems like only the people who aren't very good at scripting want to hide their code while the people who are actually good at it are more than prepared to release it.

Foxpaw: Well, I don't think that's really a fair thing to say. I would consider myself a good scripter but I don't particularly want to have other people going through my code - what if I release my mod and in 6 weeks every feature that made my mod original is being pimped on a dozen other mods? I don't generally mind explaining to people how something can be done in UScript, but I don't really like them to look at my code directly.

RDGDanClark: I agree with Foxpaw on the point that that wasn't really a true statement... I don't think that level of skill has anything to do with wanting to protect your code. However, my earlier statement still applies – by working on a mod under the conditions that you are (with unprotected script files), you are willingly making public the source code for your mod. If you release a mod and 6 weeks later the features are showing up in other mods, there's not much you can do about that short of claiming copyright protection and trying to bust the people who stole your code. That's the risk you take. The only other option, if you really want to completely protect your code, is to work on another engine, one that allows for protecting your code.

Foxpaw: Well, even C++ can be decompiled, (though it's generally illegal to do so) so in a sense you are making your source public there too, in fact a person could even decompile a piece of commercial software, run an auto-formatter over it, and claim it was their own.. but that wouldn't really make it acceptable.

El Muerte TDS: reverse enginering is allowed in a lot of countries, in Europe it's allowed if the purpose of the reverse enginering is to improve your position against your compeditors.

Anyway, Solid Snake didn't make a statement, it was just an observation that most people who want to protect their code are beginners.

Also, just because some other mod has the same features as your mod doesn't mean they stole your code. They could just have made the same thing. A lot of things aren't difficult to create, just difficult to come up with.


Category Rant

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

Mapping Topics

Mapping Lessons

UnrealEd Interface

Questions&Answers

Scripting Topics

Scripting Lessons

Making Mods

Class Tree

Questions&Answers

Modeling Topics

Questions&Answers

Log In