Well, since this thread has attracted quite a bit of attention (thanks TaG
) I would like to get a few things on the record about my project, so that there are no misconceptions here.
License issues
Okay, I did start the thread and the entire license thing is a bit annoying, but I'd just like to go on record that there's - to my knowledge - nothing deal breaking here. Right now, in the client, I am using four licensed codebases:
- Pygame: LGPL
- PyOpenGL: BSD
- Twisted: LGPL
- Cygon bin packing: IBM CPL
I already have a custom implementation of scale2x as a pixel shader, and I can just as easily write a scale3x pixel shader. Since I'm not using any of the actual source, and the algorithm isn't patented, I'm completely in the clear as far as that one goes. So the game
will be distributed with the scaler I've been using in a few sample images.
Cygon's bin packing algorithm is great, and it'll probably set me back a few days if it turns out I can't use it because of the CPL. Of course there's always the option of contacting him and simply asking for his permission. If not, I can implement some other algorithm. Even if I use my own - poor - algorithm, that means having a few more image atlasses and slightly decreased performance due to texture switching. But it's nothing game breaking.
I would have liked to implement more scalers, because more choice is better, but the GPL license is really looking like it'll hurt that. If anyone knows of scaling algorithms that are covered under LGPL, BSD, public domain or some other equally permissive license
please let me know so I can plan to add it to the distribution. Regardless, even if the client is distributed only with scale2x, there will be other scalers. I will - probably regardless of what happens - make it so that the community can interface their own scaling with the client, probably letting the community gain access to GPLed scalers through community effort.
The biggest thing here is whether or not the PyOpenGL's BSD and the LGPL collide somehow. Considering how widespread the use of PyOpenGL/Pygame is, I highly doubt this is the case. If someone can give me some clarity on this issue though, please do.
Code safety
Yes, I am aware Python bytecode can be easily decompiled. However, like sindbad said, there is Cython. By the time the client is ready for actual distribution I'm pretty sure I can convert entire swaths of it to compile with Cython, making it rather more difficult to be decompiled. I'll probably leave less critical segments of code more open deliberately so others can mess with it in ways that will enhance the game without giving unfair advantage. Something like what WoW's addons do.
So, just wanted to get that out of the way since I was getting the feeling things were looking a lot worse for me than was the case.
Now then, on to business:
QUOTE
Since you're using Python, anyone who knows that language will be able to figure out what you did. If you mix and match, you might be able to fend that off, but you indicate you've chosen Twisted (nice choice, by the by...
) so that mostly goes out the window.
Aside from Cython, mentioned above, I am currently
not using Twisted inside the client. Only the server. The client is using Python's built in socket module. I
might use Twisted later on inside the client for it's IRC support, which means that even if through using Twisted I somehow reveal internal workings of the client then they'd only have access to the IRC parts of it which does them little good.
So I think I'm okay there. Oh and yeah, Twisted is awesome. I can't recommend it highly enough. I've written all of 40 lines of network architecture related code for my server, and that's counting empty function definitions with pass statements and process forking. I'd hate to think how much work I would've had to do if I had to do it all myself. Plus it runs like a dream, nice and speedy.
QUOTE
Licensing is a nasty thing. It causes the prices for Linux titles to be the way they are. It causes no end to grief (as you're finding out) unless you do a careful vetting of things BEFORE you roll something out. All the licenses have to be in order for you to use them. Any one of them are off for redistribution and you will be held liable for infringement and other sundry torts for the licenses you breach. There's a reason I go strictly with LGPL, BSD, MIT/X11, select Artistic licenses, and public domain. Anything else and the pain level goes right up through the roof.
Yeah, I'm definitely going to only be using things under those licenses from now on. I really don't need the kind of headache GPL and similar licenses give.
QUOTE
But even then, most stuff can be reverse engineered easily enough to get assets and make bots.
It's unlikely that they'll even need to reverse engineer anything. All they need is to do is catch the packets being sent to and fro, figure out the couple things they need, and program a layer outside of the client entirely to feed it the proper input. If they're clever enough they don't even need to know anything about the packets. Like I said earlier, there's really no way of stopping this, just look at any game "protected" by Gameguard, so I'm not going to bother myself over it.
What's important is that I don't make it too easy, that I don't make it too easy to crack vital parts of the client that could be used to give some players unfair advantages, and the rest... well, if the game becomes big enough to merit this kind of stuff, then GMs will have to deal with botters and cheaters. That's just one of the realities of managing an MMO.
Selling gold as a service will probably do a lot to eliminate at least the undesirable side effects of gold-sellers: bot herds camping/hogging spawns, and spam everywhere to sell their gold. Plus since players do buy gold it's obviously a desired service. If anyone is going to be getting paid for that service I'd rather it be the devs and staff than Chinese gold farmers. I'm sure most people will agree with that one.
QUOTE
I will say if you are making the game for pandora for which the linux enthusiast community is very large you'll probably get more people to play it if it's open source. It really depends on whether more people playing it is your main objective, or making a financial return on your investment.
Well, I've got bills to pay. If that offends Linux enthusiasts so much that they'd completely avoid a free to play MMO that they might enjoy, then that's their prerogative. Not much I can do about that, is there? Considering the amount of interest in other closed source games, and even the commercial closed source Bob's Game though I think this won't be so bad.
And if it is... well, good thing I can port to Windows and Mac where people are used to that kind of thing, too!
QUOTE
I think you should go ahead and release as you want up front, but consider releasing the code later under GPL.
If it ever stops paying the bills (assuming it ever starts) and/or I'm just plain done with it I wouldn't mind at all handing it over to the community at large. I've said so earlier, actually. Of course, I'd probably go with the BSD license, after the past few days I've become pretty disillusioned with GPL. To me free, open source software should be more free than that particular license lets it be.
I don't think this whole viral open source thing it has going is good for the open source movement at all by depriving start up independent developers the chance to use it in a commercial venue without giving away any and all code "tainted" by the GPLed code. "Good going keeping the money in the hands of the big boys" comes to mind. Not to mention that these upstart businesses would probably be
more than happy to donate changes they made to the GPLed code back to the community, so long as they could hang on to the rest of their product. That won't happen with GPL as is.
BSD is from now on my license of choice.
Also thanks for weighing in BenT, you make several very compelling arguments!