Quote:Original post by Drew_Benton
Here's my question on the whole issue about using Python for a MMO or even a MMO emulated server (more in my interests atm):
Can we, the average network programming Joes and Janes, actually come up with such a system that resembles (a smaller scale of) EVE's on our own by simply using the language itself or is there still a lot of special domain knowledge required?
For example, it is my understanding that in Erlang, concurrency, distributed processing, and fault tolerance mechanisms are an inherent part of the language in such a way that you just code your stuff and handle the specific events of when something goes wrong and everything is taken care of you due to how the language itself works. I know that's an oversimplification of it all, but just follow.
Whereas, in C++ when using Winsock, you have to specifically code and design an architecture that supports thread safe operations for concurrency, develop your own protocol for a distributed system, and work in your own external means for handling fault tolerance and process restarting (as hplus0603 gave a good example of what they did here. I know it's two different things being discussed, but just a loose example.)
So, do you actually need to know what you are doing before you do it when you use Stackless Python as the tool to implement a MMO, so that if you don't know what you are doing (yet), there's no real benefits to actually using it?
The real benefit that Stackless brings is the way it allows you to write more readable Python code. Got some logic you want to run? Launch it as a tasklet. Got something that looks remotely like a callback? Wrap it with a channel and have whatever invoked the logic that takes the callback look like a normal synchronous call.
Given you know about IO and that for the scheduler not to be blocked, non-blocking IO needs to be used (wrapped as described by channels) then you're pretty much set once that's taken care of.
You may have some idea that you'd like to use the tasklet pickling at some stage to build your own scalability solution, but that's something you can bring in in a way that best fits when the time is right.
I would say the answer is no.
Quote:Or, is it something that will allow you to come up with a solution that might be "good enough" on an Indie scale and you can generally just improve upon it as needed if you wanted to reach EVE levels?
This to me reads as a description of the development of EVE. Of course, Stackless is so much simpler these days being a stable product. Back when EVE was initially being developed Stackless had just come out, was actually "stackless", was then based on continuations and went through rewrites.
Quote:I ask because every time I see "Stackless Python", I see EVE mentioned, but nothing else. I would be inclined to think the former of my previous question and that people who are trying to learn the ins and outs of it all aren't going to benefit from using it because we simply don't have the experience required for a successful solution. Any thoughts on this?
There are other companies and projects out there using Stackless Python, however not all of them are interesting in discussing or divulging it.
Personally, I think people stick to the technologies that they know, trust and believe in. If they've bought into .NET, then they're going to find it hard to abandon it and jump over to something like Stackless. Same with C++ and other languages. I know there's one licensable MMO engine where the released EVE architecture papers were used to implement some of the systems without Stackless.