DexLabs Search Engine

4/25/16

Devblog Entry 000: Foundations For Multiplayer

While it most likely won't be in the demo, I decided to make a blog post for any of the technically minded fans out there covering the main aspect of the game I've been working on, the code necessary for multiplayer.

The problem with MMOs is that in contrast to peer-to-peer type games which don't have a central server, is that you have to modify/duplicate a lot of the client code to make a suitable program that can act as the server. Additionally, to combat cheating the server has to know basically everything about the game that the clients do, in order to act as the "final word" on things like trading, rewards, movement, damage, etc. This is all in combination with the normal issues you run into for multiplayer games, like dealing with latencies and updating player positions for all of the clients.

That said, most of the work I've done so far has been on building a codebase for the FFL game server. Recently I've finish a decent amount of server-side code for:

  • TLS 1.2 encrypted TCP (things like player movement will be UDP, and I don't feel it necessary to use any sort of encryption there, although if you think there's a good reason to do so, let me know)
  • Account logins with TLS and bcrypt hashed passwords.
  • MongoDB based database, chosen due to the limitations of traditional relational database management systems in game development.
  • The beginnings of a chat server.

I do want to comment on the progress with the chat server, since I've been having a lot of issues trying to find an open protocol with a decent existing C/C++ or C# server library. So, if anyone has any suggestions on a chat protocol, I'd appreciate it if you let me know. If it's easy enough I might add VoIP support, although I ran into similar library issues when I looked into that initially. All else fails I'll just roll my own (text) chat protocol.

Any suggestions at all relating to the sort of things I've mentioned here are welcome, particularly anything related to the chat server. Also, if you have experience with this sort of thing and are willing to help out, shoot me a private message and we can talk.

No comments:

Post a Comment