Greetings!
I have been an enthusiastic supporter of PlaneShift for many years for several reasons (great story, great role playing, open source, etc), but I have never been able to really fully get into it. I have had many frustrations with PlaneShift that, despite the good things, have set me back from it time and again whenever I try to get back to it. Some of these frustrations are a result of game policies (e.g. the endurance factor when trying to travel places by running but have to stop every few minutes to "rest") but many others are a result of technical problems (e.g. my quest logs are completely gone when I uninstall and reinstall the game, rendering me completely unable to complete quests).
Sometimes I ponder as to why the game doesn't catch on more and grow in players and developers over time. It seems to be at a standstill in that regard, and I keep thinking about why that is and what can be done to improve that. It seems that new players who actually stick around a long time are rare; there are only a select few long-term committed members. When I say that the game has come to a standstill, I don't mean that I think there is something very wrong with the game, on the contrary I think you guys have done a great job so far.
It took me quite a long time to realize this, but I truly believe that, behind all of the small technical problems that plague the game consistently, there is a much bigger problem looming that is holding the entire game back from ever growing beyond what it is right now: BANDWIDTH. When I realized this, I then realized that because of free and open source nature of PlaneShift, the bandwidth problem is one that will never go away. Your server hosting was donated by somebody, and because you don't have any income to make the server or its bandwidth grow, it never will. This means that the game is stuck right now, and if you don't change anything, it will stay that way.
And now on to my point: Taking a big tip from extremely successful P2P networks like BitTorrent, the only way to get great and growing bandwidth is to
decentralize. If you ever want PlaneShift to grow beyond what it is today without the aid of huge amounts of cashflow, the only way to do it is by decentralizing the game away from just the one server. In other words, every player's client has to act as both a client and a server to other clients. Also following the lead of BitTorrent, you would need to reward the players who give more upload bandwidth by giving them more download bandwidth.
I know this is a huge undertaking, as it will require a complete overhaul of the structure of the game. But once it is complete the game will take on a life of its own and grow beyond anything we've ever seen. To my knowledge this kind of project has never been done before. The closest thing I could find is this
http://isotope.sourceforge.net/ but this game seems to have separate worlds for every player who offers themselves as a server. What you would need to accomplish is to somehow make everyone a server of the same world. This definitely seems to be a very tricky task, admittedly, but I truly believe it is possible.
Now don't get me wrong. I don't think a
complete decentralization is really necessary, and I also don't think it's possible. That is, I think having a central server that serves some small purposes is the only way to accomplish the issue of having everyone a server for the same virtual world. So I believe the best solution is actually partial decentralization. The central server needs to stick around to make sure everything is running smoothly and to remember everything about the world (e.g. where all of the items are), and could also act as a sort of "policeman" to make sure no hackers are exploiting the world. Also, I'm sure one or more "central" servers would be needed to run all of the game's NPC's. But the fact is, the bulk of the bandwidth burden that the server currently bears needs to be relieved and given to the players.
I can think of many ways this task can be tackled, but I'm sure you guys, who have built the game, would be much better suited to confront that challenge than I. Nevertheless, here are some vague possible plans:
- Make every player a server of the entire world, with the same information about the world present on every player's memory
- Have every player be given a designated area of the world to "serve" out, and then have all of the players who move or make changes to the world in that area send information to that serving player about player movements and items, who would then serve that information to all players in the area.
- Instead of arbitrarily dividing the world and giving plots of it for players to serve out, just have players serve the areas that they currently occupy, and then possibly leave the vacant parts of the world for the central server to serve to the next person who enters it, who then becomes that area's server.
- Instead of making players the server of the area which they occupy, make them only the server of areas they
don't occupy.
These are only a few possible plans, but I'm sure there are more. It seems to me the main goal of figuring out how to distribute the server is to
duplicate information as little as possible, because the more duplication, the more bandwidth is required to keep the same information on all servers. This is why the first possible plan listed is by far the worst idea. If every player had the entire world's information, it would have to constantly update this information to everyone! Obviously, this would make for a very slow game.
But some duplication of information might be good though, because many clients will have very unpredictable Internet connections. So if one person serving out information about an area suddenly becomes unresponsive, there are a few other players who share that information who could be immediately redirected to. Also, duplication of information can act as a great way of checking for hacking or tampering of data by one person trying to change the world in their favor.
The reason I think it would be better to divide the world systematically as opposed to arbitrarily is because it leaves less room for error. The reason I think it would be better to make people serve parts of the world that they
don't occupy is because it immediately leaves less of a possibility of easy exploitation of players' role as server to change things in their favor. One argument against this method is that doing so would make crowded areas of the world not served enough because everybody is in one place and cannot serve there. Another point which both supports and opposes the idea of serving a player's current area is that it provides for some duplication in crowded areas. Once again, the duplication can both act as a check of tampering and as a source of slow-downs.
Anyway, the bottom line is that this undertaking would indeed be very tricky, but I believe it to be completely necessary for making the world of PlaneShift grow. PlaneShift would become a great and revolutionary example of a brand new kind of MMO, breaking new ground by being the first of it's kind. In a sense, it would become an experiment in real-time distributed computing. It could also be called some kind of "P2P" MMORPG. But whatever it is called, decentralizing PlaneShift would result in much more growth of players, and that growth would actually make the game run faster, and then result in more people jumping on, and so on. Also, with the game growing in players, it will also grow in volunteers to help improve the game with bugfixes, new features, new art, and so on. Why, in a few years, I really believe PlaneShift could give World of Warcraft a run for it's money and become the most widely played MMORPG in existance!
I really believe this task is possible, and I wish I had the experience with PlaneShift's code to generate a prototype example of the possibility.
Please respond with your questions or comments. Thank you for your time.
-Jeff