Skip to content

Channels and map servers #135

@exectails

Description

@exectails

Intro
I've been thinking about our future server structure, and I'd like to discuss what exactly we want and need from it.

IMC designed ToS's servers for maximum efficiency. On one hand they have the ability to create dedicated map servers for a single map, for highly populated areas, on the other hand they support channels, allowing players to hop onto a different one, should a location be too crowded. This approach has obvious advantages, but it complicates the design. You basically have to assume that any command that involves another character might have to cross server borders, and you need to synchronize everything between X channel servers.

Ragnarok
I imagine many of us here will have experience with Ragnarok and Athena, where things were different. While I seem to remember that Athena (like Aegis) technically supports dedicated map servers, I don't think I've ever seen anyone use that setup, and one of the few references I just found on that feature mentions that there are multiple issues that make it tricky to use, suggesting that it was never implemented properly. There were also no channels in Ragnarok.

What Athena admins would do instead, is simply set up one set of servers for every one of their game servers. Maybe one Login+Char+Map server for a high rate, then a Char+Map for low rate, etc. The reason companies stopped using that model, and came up with map servers, channels, etc, is that it's not scaleable. It worked in the early days of MMOs, when you had only a few thousand players tops, but it doesn't work well if your player base goes into the tens or hundreds of thousands. That's the thing though, even really big pservers very rarely had to worry about numbers like that.

No problem
Not only do pservers usually have a smaller population, the players are also scattered across all the pservers out there. There's not one big publisher that has to take care of millions of players, but dozens if not hundreds of small "publishers", who manage a total of a few tens of thousands of players, leaving just thousands or hundreds for each one. Amounts that you don't usually need dedicated map servers or channels for.

Map servers are mainly a question of how much traffic you want to be able to handle. A single server can ideally handle several thousands of players, but at some point there will be a bottle-neck, be it CPU, RAM, or network. For channels however there are two sides to the argument on the user side.

Pros and Cons
One might say that channels are bad for the community, because they split the population. I remember on another game, when you would switch channels, it was like you entered a different server. Different market, people you had never seen before, forum signatures saying "I'm always on Ch ...", they were basically "sub-servers". An argument can also be made that searching for your friends across channels can be annoying.

On the other side players are competing over hunting grounds, and popular areas might make the client lag: the reasons channels became a thing. While I believe that these problems speak for poor design, because there are hotspots that attract players, with the game failing to distribute them over different fields and towns, the issue is kinda forced on us when emulating a game 1:1, because we can't really mess with the official quests, monsters, and relevant NPCs. (Or can we? Maybe a discussion for another day.)

Summary
In short, map servers and channels are more difficult to code, and I wonder whether we even need them. There's always the argument that a Melia user might want or need these features, and generally I'm in favor of providing users with everything they might have a use for, but then again I've just so rarely seen these features in action on pservers that it seems like a waste of time to design the entire server structure around them, when it would be so easy to just assume that the player will never leave the one map/channel server. And while it's not exactly the same, users could always make a second server that uses the same login database.

What do you think? Do we need channels? Do we need map servers? Do we actually need both? Personally I'm leaning towards not needing either.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions