So one of my long-standing projects is an online fan-game that's been running for a good four years now, and is at least somewhat well-known among the related community. To give you an idea, Alexa ranks my online game higher than the official website for the franchise my game is based on.

One thing I've been wondering is, would it be a good idea to make the game's source code publicly viewable?

The reasoning for the idea is that this will allow the more programmer-oriented people in the community discover how the game works internally, and research certain features to determine possible outcomes of events, and share this knowledge with other users. For instance, they would be able to discover the exact chances of various treasures appearing in Chests, rather than just having a statistical analysis.

Major reasoning against it is "people can copy it", but honestly there are already copycat sites out there and many of them fall flat on their face simply because they try to be my game and either just don't get any attention in the first place, or get called out on being a rip-off by other members of the community.

These two points have been like a see-saw in my mind, tipping back and forth between "I should totally do it" and "nowai, src iz myne!" (not really like that :p) So I was hoping that I might be able to get some advice here, perhaps someone else has been through this and might have seasoned advice to offer?

closed as primarily opinion-based by Ixrec, durron597, user40980, Kilian Foth, enderland Jun 29 '15 at 19:02

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • possible duplicate of When is it okay to open-source something? – gnat May 19 '14 at 13:30
  • @gnat Can't really say I agree with that "duplicate"... – Niet the Dark Absol May 19 '14 at 13:36
  • 4
    This question strikes me as being opinion-based. "These two points have been like a see-saw in my mind, tipping back and forth...get some advice..." – Brian May 19 '14 at 13:50
  • 1
    So you made a game 4 years ago that's built up a decent community of players, and now you're wondering about making it more open. First thing I think of is Neverwinter Nights. It came out in 2002, and it still has a strong, active fan community, because they included a comprehensive editor/mod tool set that can turn a non-trivial percentage of players into co-creators who build upon the established foundation of NWN. Releasing the source would be the ultimate expression of this attitude, and would make your community stronger, if less centralized. I say go for it! – Mason Wheeler Apr 15 '15 at 11:14

One approach might be to split your codebase into two parts (e.g., by extracting a library, engine, module, whatever) and publish only one part as open source.

By this you would make it harder to copy the whole game, while at the same time interested people could look up how certain things work.

  • +1. If someone wants to understand how the game works, you don't need to show them the video/sound/IO code. It's a good idea to separate your code this way even if the selective open sourcing wasn't an issue. – Doval Jun 13 '14 at 13:10

To avoid analysis like the probability of events can be avoided if you store all such constants in a config-file, which you do not opensource (or at least not with the real values).

Creating a copy is always a risk, but you gain the power of other interested developers, which might help to improve your game/code.

But if your community is stable you should not frighten to loose them if a copy of your game pops up. They will only switch if the copy is much improved.

  • 1
    I was planning on using an external config file for things like passwords, the Facebook App Secret ID, and stuff like that. I want people to be able to analyse game events ;) – Niet the Dark Absol May 19 '14 at 15:25
  • 2
    You should be externalizing that data anyway, it makes it easier to deploy an application to multiple environments (dev, QA, production, etc). – user22815 May 22 '14 at 21:47

Not the answer you're looking for? Browse other questions tagged or ask your own question.