SmartlyDressedGames / Unturned-3.x-Community

Community portion of the Unturned-3.x repo. If you have access to the source code you can find it here:
https://github.com/SmartlyDressedGames/Unturned-3.x/
85 stars 18 forks source link

Open sourcing unturned #1675

Closed Edsparr closed 3 years ago

Edsparr commented 4 years ago

I believe this topic has been around before, and it has been shutdown IIRC. But I do believe there could be many wins with open-sourcing unturned. The legal problems with it, which I remember Nelson mentioning in previous open-sourcing attempts, about not being able to publish certain parts of the code could be fixed via making it modular and not publishing that part of the source code. You could license it with you having all the rights to it and still make the community able to contribute to it.

Code review exists for a good reason, if people submit poorly written code, others can review it and help them until it reaches a certain standard and a moderator can approve it. Administration of the repository won't be impossible and can for sure be managed, especially if moderators were to be appointed to help out as well as making requirements to write tests for implemented features.

Instead of just asking for features the community could implement them and you would just approve it.

I would love to hear your thoughts, especially concerns, and if you like the idea feel free to upvote it.

SDGNelson commented 4 years ago

You are correct that non-redistributable code could be excluded.

I agree that open sourcing Unturned would bring many benefits. In particular I think it would be great to allow modders to build standalone projects that pick and choose what they want from the base game.

Contributions-wise I do not think accepting pull requests would be feasible unfortunately. Too much of my time required that would better be spent on development of 3 and 4.

From my perspective the biggest downside would be the ease with which fake devs could build and re-upload the game. The mobile app stores have quite a few rip-offs pretending to be Unturned, and it takes months to get anything done about them - painful process. One advantage of publishers would be a legal team keeping on top of that.

Curious to hear what others current thoughts are on this.

Edsparr commented 4 years ago

Yeah, the part about uploading rip-offs to mobile app stores seems like a real issue and I'm honestly not sure what to do about that.

I can say this about managing PRs which is that I don't think you need to manage them personally. I think many community members would be open to peer review and have appointed moderators to make sure no unwanted code is in the PR as well as making sure it's even wanted in the game. And if there are any questions if it is wanted, they would ask about your own thoughts. I believe a text conversation to you about a feature request is in no way any heavy work compared to implementing them yourself.

Many members of the community are asking for optimizations and I think everyone understands that you can not rewrite major parts to make heavy optimizations for 3.0, but with the community involved heavy optimizations could surely be made, while still keeping backward compatibility, of course.

archie426 commented 4 years ago

But they could do that anyway? It could make it more accessible but I can’t see it making a lot of difference from using dnSpy or whatever +1 on this by the way.

Trojaner commented 4 years ago

To be honest, if someone had intentions to copy Unturned code, they could just fire up dnSpy (as @archie426 pointed out). Also its harder to push such clones to Steam, where they could easily get DMCA'd.

Since you are not including parts of the code anyway, I would just suggest leaving it in a not compilable state. They can also not reuse any assets, which makes it again harder to make a clone.

archie426 commented 4 years ago

@CatzMR

  1. It’s a free game how can you pirate it?
  2. Anyone can change shit with little experience without it being open source. Aka gold is already pirated just can’t play multiplayer/BE
  3. I find it pretty disgusting and xenophobic that you only include China in that. If it’s a joke I don’t think it’s funny and to be honest a good amount of crackers are western.
CatzMR commented 4 years ago

@CatzMR

  1. It’s a free game how can you pirate it?
  2. Anyone can change shit with little experience without it being open source. Aka gold is already pirated just can’t play multiplayer/BE
  3. I find it pretty disgusting and xenophobic that you only include China in that. If it’s a joke I don’t think it’s funny and to be honest a good amount of crackers are western.

@archie426 =-=, I am from mainland China, and there are indeed many pirated games. Even if it is a free game, there are people who pirate the second profit.

archie426 commented 4 years ago

But they could do that already? Look at all the other comments. I still don’t think it’s fair to include China in that whether you’re from there or not.

CatzMR commented 4 years ago

@archie426 I just searched and found four download sites for Unturned pirated games. https://www.3dmgame.com/games/unturned/ https://www.gamersky.com/z/unturned/ http://www.3h3.com/danji/20163.html http://www.yxdown.com/SoftView/SoftView_167142.html

archie426 commented 4 years ago

@CatzMR Yes... I KNOW. I've been saying this the entire time. It's already possible without open sourcing...

tankirules commented 4 years ago

image lmao this is from one of the links... Also despite dnspy existing, I think the issue of open sourcing is like locks on a door - it will deter the common burglar but a determined thief can easily get in, it's whether or not it's worth deterring the common burglar, as people who have the knowledge and experience of this sort of "coding" would know how to decompile it anyway.

archie426 commented 4 years ago

@tankirules Like I said, anyone can look up .net decompiler and use one, it really isn’t hard.... And if they had the source code which they can easily there’s still a matter of publishing...

As troj said, the proprietary content wouldn’t be available on there, so you couldn’t have it how it is now without obtaining the source for them.

Open Sourcing it would make zero if not very little difference to this. Unturned’s source practically is already “open”, but this will allow people to contribute to it.

SDGNelson commented 4 years ago

That toilet picture is classic. Edited by Phil in 2013 I think.

There are different degrees of open source in this thread. In my view it would ideally be the full Unity project with most code and all assets playable in the editor.

Theoretically as mentioned you could decompile the game DLLs and extract the asset bundles to put together a semi-functional project as-is today.

Releasing fragments of the source code in an uncompilable state would moreso be useful as documentation in my opinion, and not useful for standalone mods.

No matter which option, code contributions would be very unlikely to be accepted aside from maybe small bug fixes. Despite what you may think, it would be a lot of work to manage any complex pull requests especially ensuring they do not break the tangle of legacy code. Content contributions would be more likely to be acceptable.

archie426 commented 4 years ago

@SDGNelson I don't mean to expect work from the community or anything like that but there are quite a few capable people who could manage it as far as I'm concerned. You could keep a private repo for yourself and fork a public one off it, then pull the code you're happy to change.

But yes, either way I still believe it would benefit the community whichever way you decide to go with it.

Charterino commented 4 years ago

I only can say that allowing contributions from the community would be great. It would allow devs to do the stuff they need. They still can do it now, but its a) More painful - every dev gotta do this b) Can lead to exploits, crashes, lags - Im 99% sure some dev already tried to patch AssertIsGameThread. c) Incompatibility - if more than 1 dev patches the same method just to invoke an event its ok. But what if 5 random devs edit MSIL of 1 method during runtime? I dont even want to think of this. For now, runtime MSIL editing and patching is enough.

Overall, as I said, it would be good to have the ability to add features to Unturned3 while you can work on U4.

archie426 commented 4 years ago

^^ Pretty much summed up. Although harmony is a thing it would still be better.

An alternative to this would be an open source commmunity module which would be BE whitelisted and can be installed at the users preference, would be for client and server.

Edit: Trojaner already made one https://github.com/Trojaner/Unturned-3.x-Community-Module

Charterino commented 4 years ago

Oh my word, forgot about that! Modules are excellent. If we only got a way to use them properly. Imagine what you can do if you can make a server that is only possible to join if a user has a certain module. It is impossible, but it would be cool.

archie426 commented 4 years ago

Imagine!!!!!

educatalan02 commented 4 years ago

I already said that, and no results happend @Charterino

SDGNelson commented 4 years ago

To clarify @educatalan02 about the request to require users to have a certain module, it is already possible. See my reply to your issue here: https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/1573#issuecomment-608161253

Note about the community module Trojaner has forked as well: that was originally an officially included module accepting pull requests for quite a while, but IIRC Trojaner was one of the only interested participants. Eventually I decided to be more open to plugin-related feature requests in the base game code instead and closed the repository.

SDGNelson commented 4 years ago

Also @Charterino, are you patching AssertIsGameThread? Everywhere that calls AssertIsGameThread does so for a reason - if you are disabling that check because your code is hitting the exception then there are definitely bugs happening.

Charterino commented 4 years ago

I am not and I never would!

P.S. Do u think I am that bad? xD

Trojaner commented 4 years ago

Sadly I know people who patch that method...

Charterino commented 4 years ago

Im 99% sure some dev already tried to patch AssertIsGameThread.

See! Didnt have to wait for a long time. Unfortunately there are many devs that do stuff they have no idea about.

SDGNelson commented 4 years ago

Just wanted to double-check since you mentioned it.

People who do patch to disable it... 😢 why you fools why!?

DiFFoZ commented 4 years ago

Sadly I know people who patch that method...

I know these people too, but I just added another check main thread in postfix

Charterino commented 4 years ago

It just.... wouldnt do anything? If they are adding ldc.i4.1 ret at the beginning of the method, your postfixes wont even be executed.

archie426 commented 4 years ago

@SDGNelson But coroutines are baddd nelly!

archie426 commented 4 years ago

Anyway back on topic: Community module : Whitelisted by BE, can be downloaded, included in server config data (?)