Online Multiplayer Games Programming Resources Are Hard to Find!

I have been looking for proper multiplayer games programming resources. I started a thread at indiegamer.com and asked Insiders about this. I was quite surprised to see that there aren’t so many (high-level) network programming articles or books available. Much of the stuff that’s available deal with low-level stuff like “how to send and receive packets”.

There are exceptions of course, and here’s couple of pretty good resources:

By looking at articles, it looks like multiplayer games (network) programming has not changed that much. Naturally we have many more network libraries available and don’t have to start from scratch, but even then: the same basic concepts for handling player input and network traffic that were used years ago are still used today – to some extent.

13 thoughts on “Online Multiplayer Games Programming Resources Are Hard to Find!

  1. Good to have bumped this on the other post, i had hard time to get stuff about multiplayer network programming too (been looking for about 6months…)

  2. [...] how this should be handled, and I won’t go into this here right now. People interested can check out links in this blog post to get more [...]

  3. No idea, perhaps somebody at gamedev.net could know.

  4. Hi..
    I am abhijeet want to know any APIs are available of Quake 4 multiplayer game so that we can interact with client or server of quake. Or some other way to interact with it is there if so would you please inform me about it.
    Thanking you,
    Regards,
    Abhijeet.

  5. You are so right, I clicked http://zppz.homelinux.net/diary/visualHistory.html and “read” that instead ;) Much more rewarding ;)

    Eh, seriously. I agree that it’s much more rewarding to feel/see/use something new that has some benefit for the player. But I still think it cannot be said that “visuals” would be more rewarding than “underlying technology” for the player.

    Players CAN be very grateful for network code improvements – IF they can SEE that something has really been improved. For example, in LOTR: Battle for Middle Earth it’s absolutely frustrating to first wait 4 players to appear, then click “start game”, “start connecting to other players…” and just to find out that “somebody has NAT/firewall – closing game”. And then you start all over.

    Why wouldn’t they implement a system that the players’ NAT/firewall would be checked when they ENTER in the lobby – that way the playing would be much easier to start as nobody would have to wait somebody to fix their NAT/firewall problems. I wrote bit about this here btw…

    “You can’t say easily say to someone ‘look at the neat network protocol I made’ – it just doesn’t work”
    - Very true!

    But if that feature would solve the “joining game problem” then you could tell “LOOK, no more joining problems & NAT/firewall issues!!” (and take a screenshot of the game about the situation that was fixed ;))

    Rewards are different for players and developers. And I pretty much agree with all that you just said :)

  6. Definitely it is rewarding, but not in the way that programming a graphical application is rewarding. In your example, I still think you will appreciate that features can be added faster more than average Joe does. Sounds like you have a good system now.
    Also, the rewarding feeling is much slower to arrive than with other areas of coding – in my case I only really had a truly satisfied feeling after my server had stayed up for 2 months or so, taking all the abuse I could give it. And within my network code itself, interestingly the most enjoyable section was making a program that reads an xml definition of a message, and outputs c++ source of a class for it. This is something else that I think only its creator will fully appreciate (but if you want to try, see http://zppz.homelinux.net/diary/ , search for the word ‘sprawling’).
    You can’t say easily say to someone ‘look at the neat network protocol I made’ – it just doesn’t work. You can’t put screenshots of it on your website, or download a demo project of it to run at the click of a button (well, nothing impressive at least). Thinking about it now, I think a large part of the ‘reward’ I got out of making my own network library is that it makes me one of a significantly smaller number of people who have done so, compared to the number of people who have done say, skinned animations. Hehe… maybe this smug feeling also helps to keep the flow of ‘dummies’ type information low. It’s certainly a good excuse to mouth off in a blog comment eh? ;)

  7. @Anonymous: Well it’s true that low-level stuff might not be that interesting to code… but there’s actually good rewards to get. For example… I used to send all object info changes using separate functions/packets. I looked at some high-level stuff and pretty much cloned the idea of Quake 3 state updates system to my engine. It meant that I would need to get rid of lots of stuff I already had (which was bit scary) but after I managed to get the state updates in proper shape – the future has turn into bright (at least it looks like at this point): now the server can simply adjust some value and everything will be delta compressed & sent properly to clients, ACKed and so on. If I want to have new feature (like “buy stuff”) I can simply use the existing structure to handle the network messaging or I can add few bit masks/flags and everything is going to be smooth.

    Basically I felt very rewarded after completing the server state object part – now things are lots of easier. Even though average Joe player won’t have a clue on what’s happening, he will (hopefully) appreciate the features that can be added faster in the future.

  8. From first hand experience, low-level network programming is a long dull slog. There is nothing interesting to look at and debugging is hard. The tangible rewards of showing someone the neat particle effect or shadows etc that you have when finishing some graphics programming do not exist – after all that effort you just have a program that connects to other PCs, and the amount of work put into it is entirely lost on most observers – I mean getting computers to talk to each other is nothing new is it? This is no doubt the main reason multiplayer resources are harder to come by than other areas of game development. But I love it. And so will you.

    Hey…. that could be the preface for my book.

  9. It’s interesting – I mean, people had to have learned multiplayer and MMO programmins *somehow* but it’s like it becomes a “trade secret”.

    Judging by the number of people looking for this information, the first person to write a truly nuts & bolts, from start to finish, for-dummies level book on multiplayer game programming is going to get stinkin’ rich from it. Hmmmmmm….

  10. I’ve heard good things about raknet..

    http://www.rakkarsoft.com/

    Never used it myself but it’s as high level as it’s ever gonna get when programming your own engine.