[Rant] Protected mods and why they can be bad

  • Hey - turns out IRC is out and something a little more modern has taken it's place... A little thing called Discord!

    Join our community @ https://discord.gg/JuaSzXBZrk for a pick-up game, or just to rekindle with fellow community members.

Fearless

New Member
May 11, 2003
60
0
Belgium
I just felt like posting a rant about what is a serious problem. This isn't critiscim directed at Cratos because he has some really sweet stuff for UT but against authors who protect their mods in general. There are probably excellent reasons for this (avoid hacking for example) but it also leads to another problem.

Since the code is protected, it cannot be maintained and this means that any update to fix bugs or to add features is not possible. It also means that if the original author suddenly disappears, the advancements that the mod brings are completely lost, the mods risks becoming out of date and ends up no longer being used. Despite unrealscript supposed to encourage sharing code, UT's history is littered with projects like this and it can make someone who is trying to make their own useful mods quite angry.

The reason I brought this up is because MapvoteLA could have some useful stuff added that wouldn't take many modifications. I have tried extending classes but compilation just doesn't work since the MapvoteLA is protected. As for contacting Cratos for some advice, it has been impossible to reach him for months. If any mod maker is out there I have some special advice for you when you decide to protect a mod : be like a responsable "parent" and make sure that one or more of your "children" (people of trust or fellow coders) has the source so it can be updated when needed.

[/end_of_rant]
 
Can I spam this thread for no reason?

I got in touch with Cratos today, did you try a forum PM?
 
Sure :P . And the last PM I sent dates back to 19-03-2007. I'm sending another one just in case the others got lost.
 
Last edited:
Have you ever thought that this way we don't have bazillion (hacked, improved, fixed, etc.) versions? Take a look at DemoManager for example. There are at least 4 versions and everyone of them comes with semi or non working at all fixes, improvements, etc. Some of them are even picked by anticheats as hacks.
 
Like MapvoteLA is an improvement on the original BDB mapvote? If that source wasn't open then we wouldn't have LA.

I can see the point in keeping League Assault mod code hidden, to stop hackers and bot makers making workarounds to get past it, but not for normal mods like mapvote etc.
 
so u basically started a thread moaning about cratos? :rofl: :flack:

Haha you may think that. I don't like to critisize people but things. I've never had direct dealings with Cratos and he's probably a fab guy. Think of this thread as a last resort to get attention ;) .

Have you ever thought that this way we don't have bazillion (hacked, improved, fixed, etc.) versions? Take a look at DemoManager for example. There are at least 4 versions and everyone of them comes with semi or non working at all fixes, improvements, etc. Some of them are even picked by anticheats as hacks.

I agree and disagree with what you say. When a mod is open there is that risk that some people will mess around with the code and do silly things. But I don't think anyone in their right mind would adopt a mod that doesn't do the job properly and there will always be one or two mods that will fit a need such that they are widely adopted.²One example is the recent release of the MonsterHunt source. Some of the mods that have been made have distorted the gametype but others are more conservative. One solution is to impose a licence like in the opensource world. All changes must be made public and usually the best changes are integrated into the original.

You mention demo manager. You should know that even if it's code is open only people with a special system file can actually compile it. The first major improvements came with Poema's movie demo manager and Anthrax later added something to handle utdc crashes. I then added Anthrax's code to movie demo manager as it would be a shame to not be able to use some of it's features. Also the kick you get with LeagueAS is because it picks up the oldskoolhack function that is used for autorecord. As far as I know it is actually present in all versions. I would actually like to see a unified version of demo manager but understanding all the code and fusing all the features is beyond me.

As for mapvote, there are quite a few versions floating about too. One version is x3dfmapvote. It is also protected and it took me TWO YEARS to obtain the source of the latest version. This is because the author (Bonehed) is not a dedicated ut mod maker and does lots of other programming stuff. It will take more time to fix problems with this mapvote. There is also provote which actually came out at the same time as bdbmapvote.

The problem comes when admins need some new features added to mapvote. It would possible to modify the original bdbmapvote but version 3.04 has a few problems that were never fixed. I think it still crashes a server under certain circumstances and I can't remember if it can handle a map that is missing support files such as a texture package. This is actually taking a step back and in my opinion it is stupid to reinvent the wheel when existing mapvotes have already fixed these problems and others.

Now, none of the mapvotes are perfect. Provote is maybe too orientated towards options and x3dfxmapvote will crash under certain conditions. I consider mapvotela to be the best mapvote out there. It works more or less flawlessly and delivers everything it was designed for. However some people would like to see some features of the different mapvotes fused to create a superior mapvote that will answer most needs. There are also admins like me who run particular mods that need something extra when switching maps. It could be achieved the ugly way using a serveractor but the elegant way is to add this to the mapvote code.

To sum this up it would be a huge loss if Cratos leaves the scene or disappears. I have had a look at what he did with dynamicpackageloader and its awesome. With respect to mapvotela, if the worst happens and the needs for new features are too great, other mapvote versions will end getting favoured and mapvotela will end being disused. There are many mods that have ended up this way and it is just a complete waste of effort.

I may be missing the point here - but what part of MVLA13 is protected? :confused:

Well, it is like Zeroping in that code cannot be freely exported. I have also tried to extend code using an external package but that fails on compilation. There is probably a good reason for this. There were holes with bdbmapvote that allowed a malicious player to get everyone kicked off a server or something like that (can't remember details). There is maybe a way to get around this code export problem but I don't think Cratos will be happy with the idea someone changed his work without asking permission.
 
Last edited:
I can't see where it's "protected" as such; since I'm able to view and export the code without any problems.

It will need Cratos to confirm, but I'm fairly sure previously the package has been altered outside of compilation to achieve some of the things that normally aren't possible with uscript, so this could be why you're unable to batchexport.


Finally, you don't need any source code to successfully extend the classes; simply compile the a header class for the the source class you wish to extend, then you will have no problems in extending the "original".
 
It will need Cratos to confirm, but I'm fairly sure previously the package has been altered outside of compilation to achieve some of the things that normally aren't possible with uscript, so this could be why you're unable to batchexport.

I think the internal index has been changed. I have to use a decompiling program to look at the code.

Finally, you don't need any source code to successfully extend the classes; simply compile the a header class for the the source class you wish to extend, then you will have no problems in extending the "original".

Code like "Addon extends BDBMapvote" usually fails because I have to put both MapvoteLA13 and the name of the extended class in editpackages. UCC will give a bad name index error as soon as it tries to read mapvotela.

I am not sure what you mean by compiling header classes. If there is another way of doing things please explain this in a PM if you can.
 
Ty '//3iRd(o). The PM you have sent was very helpful and tells me that class extension is relative and there is no "hard" linking. I will see what is possible without bothering Cratos.
 
Sorry, I am not very active any more, but still reachable via PM ;)

The Code in MapVoteLA is not obfuscated or protected at all. I just removed the useless 'textcode' to make the package much smaller, like most programmers do. Use WOTGreal's 'Advanced Exporter' to export the whole sourcecode and do whatever you like ;)

http://www.wotgreal.com/
 
That is not a problem mate. Since I started working again and other things, I am not very active either. Anyway, I have been using utpt to export code which gives odd results upon decompilation. WOTGreal is probably better at this. And talking of PMs, there's one coming your way :P .