Tuesday, December 5, 2017

Tracker Server and Skills

So in an earlier dev blog I talked about how the server architecture is laid out.  There's a master server, which launches the database and login servers, and finally the zone servers which run the actual game simulation.  There are several important details though that had not yet been decided on what server would have responsibility for them. 

  • Chat services and logging
  • Skill progression
  • System messages
There are valid arguments for including these services in existing servers.  The master server already is in communication with all the zone servers, and isn't that busy, so might have been a good fit.  I decided though that I want to keep the master server focused on managing the cluster, and don't want to risk it getting bogged down handling these other services.  The database server would also have been good, but I estimate it will already be handling a large number of requests so it would be better to move these off the database and at the same time minimize the chatter between the server that is handling them and the database as much as possible.  

Tracker Server and Chat messages

So I decided to create a 5th server type I'm calling the Tracker server.  Now when a zone server spins up it opens a connection to the tracker server, and whenever a player connects to a zone the zone then informs the tracker server so the tracker server will have a complete view as to the status of any online player in the game world.  

This is especially useful for private chat messages.  When a player connected to zone 7 wants to send a chat message to a player connected to zone 102, the zone server will now send that chat message to the tracker server, which will look up what zone the recipient is connected to, and then forward the message to the correct zone, which will then send it to the correct game client.  This is also useful for sending Global messages (messages in the Global chat channel that can be seen by all connected players in all zones), in faction channels (messages seen by all players sailing under a specific nation's flag), and sending messages to all members of your Trading Company (most games call this a Clan) or your alliance.  

Periodically the server cluster will need to send messages to all connected players, for example when the server cluster is going to go down soon for scheduled maintenance, and these system messages can leverage the same chat system similar to how Global channel chat messages work.  

Skills

Skills are something I'm basically going to shoehorn into the tracker server.  The skill progression system in Broadside will be different than most MMO games, but similar specifically to Eve Online.  Skills won't be earned by doing something repetitively.  Grinding to try to earn gold in MMO's is bad enough, and is an unfortunately necessary game mechanic.  Grinding hours and hours to level up your character is maddening though and doesn't make that much sense.  How does spending 1,000 hours killing thousands and thousands of helpless rats really improve your skill at combating powerful players?  It just doesn't make sense.  

In Broadside you learn skills passively over time.  You buy a skill book, select that skill as the one you want to learn, and slowly level up.  The higher the level you want to take that skill, the longer it takes.  This happens whether you are online or offline at the same pace.  You just need to be online to schedule a new skill to learn.  Basically what is happening is your character is using all of its down time reading a book on the subject, and thoroughly studying the topic.  

So I needed a server that is always running to handle this slow progression of all skills for all characters in the game.  The login server could have been used for this, but I didn't like that.  I could have made a separate server just for skills, but I didn't like that either.  The database could have been good for this, and still will need to be involved, but I didn't want to bog it down.  In the end I decided the tracker server was the best place for this.  

I hope you found this at least a bit interesting.  

No comments:

Post a Comment