I’ve got a similar project I’m working on, with a thread in this very forum. It’s creating a starter package in Unity for a Minecraft clone. From time to time, I post a link to download the entire package…source code and all.
There are actually several people on that thread working on their own minecraft “clones”…where minecraftish worlds are generated, but the rest of the gameplay will be their own unique games and ideas!
Anyway…I’ve thought several times…crap, why don’t we just all work together on this? And each time, here are the answers I come up with on my own:
- I have a particular coding style, this is very important to me.
- We’d have to all get on the same page. I don’t have near enough time to work on this project (maybe an hour or so a day), so are others supposed to wait on me? Should I wait on others? What if I need some threading code in for terrain generation…and dang, I don’t like what so and so did, and basically have to rewrite it. Thus potentially offending somebody. ARgh.
- I’m only planning on taking this so far. That is, the initial starter package for a basic minecraft game. After that…I’m doing my -own- SuperTopSecretCool stuff.
- Fact is…we’d all like to make a little cash. While we are all talking about various stuff, memory usage, etc…there is truly an aspect of “if I give this information away…is it going to mean less cash for me?” I mean…let’s say you come up with the original minecraft idea. And keep it to yourself, and make MILLIONS like Notch. Awesome eh? Now, let’s go back in time, and say you came up with the idea…and gave out the source code to the world…and made pretty much ZIP. HMMMMMMMMMMMM. I’ve actually had to dwell on the fact that I am making it MUCH easier for people to just rip out their own minecraft clone. If I just kept that to myself…I’d have a lot less competition, right? Technically, you could argue I am hurting myself and others by releasing a starter package for creating you own!
So…competition is a barrier. And everyone can’t just jump in and somehow create something cool…you HAVE to have someone who says “ok, here is how we are going to code. And here is how we are going to communicate.” And everyone has to agree and stick by that.
So…to me, when it comes to community projects…(again, this is all speculation and a little bit of experience), I’m taking the approach of creating something with ideas and thoughts from others. I’m giving out the source. If someone comes along and says “hey, you could speed this up 2x by doing this”, THAT to me is the kind of contribution I want and need. At that point, I’ll make the improvements, and relink the full source to everyone.
This way, the project grows and gets better over time, with new ideas, and I get it done faster. If anyone wants to pick it up and expand it, and post better implementations (or different ones), that’s awesome. But the knowledge is there and can continue moving forward.
So…to summarize…I think the best way to have a community project maybe be to simple make the project available to all, have a common thread(s) for discussing aspects of the project, etc.