Tuesday, May 21, 2019

Networking

Figuring out networking has been a serious pain that is already starting to get me angry before I even begin to explain it to you. Maybe I should keep this one short so that I don't fall into another spiral of hate aimed at terrible software.  Ehhhh who am I kidding, I *always* hate terrible software. It always makes me angry when people are terrible at their jobs.

As I started rebuilding Spacemind with multiplayer in mind, it quickly dawned on me that there were so many pieces I had to figure out in order to get the ball rolling, and I definitely felt overwhelmed. However, as I started looking into various types of networking middleware, I didn't like what I saw. First, it seems like developers of middleware don't seem to understand that their products are going to be used by PROGRAMMERS. Why bother to have a decent tutorial, documentation, or example code? It's much better to just poop out crappy, nonsensical code and then wrap sleek marketing around it, right? *Growl*

Even after I'd gotten over the fact that most people can't write and/or explain decent API interfaces to save their lives, there was an even bigger problem: Spacemind's multiplayer doesn't work in same stupid/bloated way that most games do!  I'm not sure if I should go into the details about that yet, but suffice it to say that once most games do multiplayer in a certain way (be it FPSs, MMOs, or RTSs), then almost everyone follows along and does the same thing, even if it makes no sense to copy it. (I *hate* the herd mentality of human beings)  In the interest of making Spacemind globally scalable, I can't mindlessly do it that way.  I've thought about the multiplayer protocol of Spacemind for over 2 years now, and I have a very clear understanding of how it *must* work, and after 2 days of working on several very different types of networking middleware, it was painfully clear that I was going to spend more time unraveling and undoing the middleware to do what I wanted than to just do it myself from scratch.

At that moment, I realized from my code dives that despite what I keep reading, game networking isn't magic. There was no reason to be afraid of it or to even call it hard and complicated like everyone says. People are just finding the hardest way possible to bring a multiplayer experience to human beings when the internet is structured the way it is.

Like so many times in my life, if you want something done right, you've got to do it yourself. That's why money is somewhat worthless, because those green pieces of paper get you nothing if you're just waving them in front of mouth-breathing, knuckle-dragging monkeys.

So yeah. That's right. I'm basically going to have to code an MMO from scratch. Fortunately, I now have a clear idea of how I'm going to do it, and I feel empowered now that I've seen all of the crappy implementations that everyone else has cobbled together. If they can make a game work, then I certainly can.

No comments:

Post a Comment