i found a fantastic one, that almost meets every one of my criteria (it
needs some tweaking though), but the problem was the guy created it back in
2003 and during the creation of it, employed a GPL algorithim, meaning that
it is freely distributed, with its source code, but you can't sell anything
you make with it, and you can't make money from the use of it either. for
example, even if the game is free, if you maintain a shop to support it from
which you generate income or a monthly subscription in order to play it, you
are violating the GPL license.
I lost my first reply to this, due to Firefox reloading the page from a
typo; so I'm writing it in Vim first now, hence the weird formatting.
*Orcish growling*
The GPL does not make any stipulation, about whether or not you can make
money from software that is licensed with it. I will quote from Stallman
himself, here.
Many people believe that the spirit of the GNU Project is that you should
not charge money for distributing copies of software, or that you should
charge as little as possible just enough to cover the cost. This is a
misunderstanding.
Actually, we encourage people who redistribute free software to charge as
much as they wish or can. If this seems surprising to you, please read on.
The word "free" has two legitimate general meanings; it can refer either to
freedom or to price. When we speak of "free software", we're talking about
freedom, not price. (Think of "free speech", not "free beer".) Specifically,
it means that a user is free to run the program, change the program, and
redistribute the program with or without changes.--
Selling Free
Software.
The GPL 3 is murkier, but the only thing that the GPL 2 requires you to do,
is provide source if you provide binaries, and also to provide the source
code of any derivative works you make. In other words:-
a} If you change something, and release the changed program, you must
provide the program in both source and binary form.
b} If you want to charge money to sell unmodified copies of something that
someone else has licensed under the GPL, go for it, but you must provide
said program in both source and binary form.
The other thing to understand about the GPL, is that the Free Software
Foundation is essentially a cult, and the GPL can be considered its'
manifesto. Virtually nobody uses the GPL (3 at least; 2 is a decent
license, if still restrictive) because they have invested conscious,
rational thought into doing so; they use it because they have been either
brainwashed or otherwise pressured to, by either Richard Stallman, or other
people in the Linux/Free Software community.
Generally speaking, anyone who wants to make their software open source, and
has actually thought about it, will normally use either the BSD or MIT/X
licenses, which truthfully are not that far removed from public domain,
given what they allow in practical terms; although the BSD license does
still include a copyright statement, and requires attribution.
Richard Stallman is UNIX and open source software's answer to Paul of
Tarsus, with everything that that analogy implies. The unencumbered trading
of source code existed before him, in a number of different venues, (IBM's
early SHARE program among its' customer base being one example) but while
claiming exclusive credit for the concept, he has also attempted to bury it
in a semantic quagmire, which has led to exactly the type of confusion that
you demonstrate here.
This is another topic I'm fairly passionate about, as you can possibly tell,
but I will shut up about it at this point.
i spoke with him at length about it, and he told me that it was cutting edge
for its time and he was annoyed no one had managed to make a usable game out
of the technology. one way that would be possible was writing it in another
language. it is currently C++, so writing it in java or C# would work and
bypass the GPL issue.
That is refactoring, and it probably would not hold up in court, if you were
challenged on it. If the code does exactly the same thing, functionality
wise, and has exactly the same name, then if the FSF's lawyers tried to
claim that it should still be under the same license, they would probably
win.
Unless the license is GPL
3, then I would just use it. GPL 2
is not a problem. You can still charge money for use of the engine; all you
have to do is provide the source code for it. The GPL also does not place
any restriction on artwork at all, for the record; so you don't need to
provide masters for that, or give anyone permission to create derivs from
it, if you don't want to. You can copyright that completely. That is what
Red Hat did, with their Linux distro; the code is GPL, but their logo/art is
completely their own.
i'm not sure on java for a mmo
Java is slow, but the advantage of it is, that it is generally easier to
port things to different platforms. When Notch wrote Minecraft for example,
he didn't need to rewrite the entire game to make it work with both Linux
and Windows; he wrote a support library for Linux with a few
platform-specific bits and pieces, and that was basically it. The bulk of
the code ran as-is.
Before you ask, however, no, I do not know Java. I certainly don't know
enough of it to refactor a major program. Truthfully, I wouldn't write an
editor in it even if I did; you want a higher level scripting language like
Python (which is also slow, but could also work multi-platform, if you did
your GUI stuff for GTK) for that.
A program ideally has four different layers, or exists as one of three
different types.
a} Stuff which controls bare hardware. This is written purely for the
computer/hardware's benefit, and is not written with the intention of being
understood by humans at all, for the most part. This is where you have your
binary, and stack based languages like Assembly or FORTH.
b} The Application Programming Interface (API) layer. This is an interface
level between machine language, and stuff which humans can partially
understand. Basically an API is a set of aliases, which associate single
commands in machine-only languages, with function names that humans can
understand.
c} The scripting layer. This is where a more basic level programmer can
take the function names from the previous layer, and start applying logic to
them, with an appropriately basic scripting language; Lua is a good example
of this. This is where you can write loops, branches, elseifs etc; basic
decision making code, although if you're intelligent, you never tell a
computer to perform more than rote tasks, for the most part.
d} The human interface layer. Generally speaking, anything I write for
myself, will not normally have this layer at all; but this is the GUI layer
for complete non-programmers. This is the layer people interact with when
they normally use, say, Firefox.
The reason why I'm pointing that out, is to also emphasise that different languages
are meant to be used with different layers in that group. So it's not a good idea to
use a layer a} language like Assembly, as one example, for layer c} tasks.
That is not to say that you
can't do it; it's just that it will likely be a lot
more difficult, and you won't enjoy the experience. It's directly analogous to using a
one wood golf club, for a shot where you'd normally only need a putter. Breaking
things up makes your life easier.
C# has not been around long enough to be as tweakable as C++ but i could be
wrong.
C# is pure Microsoft, AFAIK. Hence, probably Windows only; although I don't
know, because I've never used it or really looked at it at all. C++ is also
a mess, for the most part; although people generally use it for graphical
stuff, because object orientation makes it easier to create new
windows/classes, rather than having to write out an entirely new template
every time, if you're only doing something incrementally different.
When I go this far off topic, I normally get accused of seeking attention;
people who do so, generally don't seem to be able to grasp the idea, that
maybe I just like talking about things from a reasonably free-association
basis. So accept or reject the above as you will.