Hello again, Cobalt fans and friends! This is Jacob Jervey (also known as JWJ and @jjervey), the latest team member of Oxeye.
We announced earlier today that Cobalt alpha preorders were right around the corner and from what we’ve seen, people are EXTREMELY excited, and because of that – so are we! However, some of you may have been slightly disappointed after reading that networking wasn’t in the team’s vision for the game right now.
It’s true; the networking functionality is very much still in the ‘figuring out’ stage, but I personally think it would be a crime to not implement it. That’s why I’ll be working on a proof of concept so you can play with your friends, whether they’re next to you or across the globe. Because this is a proof of concept, it may not be included in the game.
Le gaspe! How will it work?
As much as I want to be extremely technical right now, networking is still very much in development. You can’t even play together for that matter, just chat. So please know that anything in this post may change.
My plan is to have both a listen server (you would play and host the server at the same time from the same game) and a dedicated server (console based). The dedicated server will likely be released after the listen server. You will also be able to have more than one person on a single computer using their own controllers, much like some games on the XBox. Additionally, I’m hoping to utilize a technique known as ‘NAT punchthrough’ which will allow you to host a server even though you’re behind a firewall, without requiring any port forwarding or otherwise. This is what Portal 2 utilizes for its co-op.
Essentially, I’m going to be giving you the ability to join two or more games together so it’s almost as though those additional controllers are right next to you. You’ll be able to instantly connect to any other game, no matter what point the host is at. Getting owned by your friends in a 2v1 Capture the Plug and you want to call in some internet backup? Just press the host button and have your friend join up.
What does it take to implement networking?
An extreme understanding of most of the game’s engine and the game itself, both from a player perspective and a programmer’s perspective. It’s quite difficult to delve into a game that is so far into its development and write a networking system from scratch without first spending a lot of time figuring out how every single thing interacts. You need to know what’s important to keep track of; it’s not important if one game has a light that’s 80% bright and the other game has one that’s 20% bright.
Cobalt is a huge game, both in content and code, so I’m still learning as I work. Luckily, the game itself features hotseat multiplayer which makes adding networking (relatively) a piece of cake. The game essentially already acts as a server, letting a player join and leave at any time. For the most part, it’s simply a matter of keeping things in sync between the clients that are connected. Such things include stage changes, new players joining the game, or an AI’s velocity and position. For the dedicated server, I just have to disable input and graphics (and probably some other changes here and there).
When are we going to see networking in Cobalt?
Definitely not soon (if ever, we’re not promising a single thing). I’ll keep everyone updated occasionally on the progress so you don’t lose hope, but as I said above, I have to get to know the game a lot better than I do right now before any real development happens.
If you have any questions, you can tweet me @jjervey or talk to me on our IRC channel at irc.esper.net #cobalt. Also know that this isn’t a milestone for alpha/beta/gold, it’s simply something I’ll be working on and it may or may not be part of the game once it’s done or some rudimentary form of ‘done’ that is at least fun to play. Please don’t bug any of the others about the networking as it’s 100% my job and they will just tell you to contact me (awww yeah, put on the pressure!)
(Article was edited slightly to clarify on the fact that this is a proof of concept and not a planned, promised part of the game)