We’re still up

Published on Thursday, May 7, 2009 By Brad Wardell In Demigod Journals

Well, it’s apparently Thursday at 9:18am.  The dev team here is still here working on “Wednesdays” beta update.  As some of you know, while there have been updated to Demigod, we have not released any connectivity updates to the game yet because once we realized the architecture for the MP was inadequate, we concluded we needed to redo it.  We’re pretty close (that’s why we’re still here, it’s like a game in itself – one more turn…one more compile and then it’ll be ready). 

We’ll keep you posted.

Update 10:54am, Thursday

So as you know, we’re working on improving the included MP match making. What we have now is a night and day difference for most users. 

So what’s the issue?

Early on, a design decision was made that didn’t seem like a big deal at the time but is making getting this new system harder to debug. That is, the Raknet library connects a player to another player and then hands over the socket to Demigod itself. Once in the game, they are connected using a different port (that’s why Demigod uses more than one port currently). The problem is, the server is still trying to connect to the user on the old port and when it can’t it disconnects them after a time out.  Seems pretty trivial to fix (or at least it did to us) but that’s where we’ve been stuck for the past several hours is trying to figure out why it’s not removing the old record from its database. 

So we’re pretty spent at this point so we’re going to hand it off to the next crew and pick it up after we get some sleep.  It’s frustrating because it’s so close and it’s such a major improvement both in terms of speed (you get into the lobby in less than a couple seconds), reliability, and scalability (this should be able to handle huge numbers of connections).  But we can’t seem to get the bloody thing to remove the outdated record with the host’s old port address.

Example:

Joe on 10.1.1.10:6112 hosts a game.

Alice on 192.168.1.10:6112 joins.

The two connect and the socket is handed to Demigod and we’re connected to each other on port 6112 inside of Demigod.

Now, we start listening for more people to join and the port becomes 6114 for both of us.  But server still has a record of Joe on 10:1.1.10:6112, can’t ping it, declares him dead and no longer sees the user at all.

Like I said, it seems trivial to solve. At 3am, we were certain it we’d solve it in a few minutes. And at 11:05am (now) we are still there.

Now, a network savvy person (someone not me) will likely say how silly it is that it hands off the socket.  Both Stardock and GPG agree. It was one of those decisions made long ago that is annoying and is being addressed in parallel.

Which is something else I should point out: Think of the support of Demigod occurring in 4 parallel mini-teams.

You have team 1 which I’m directing which is focused on making the MP matchmaking in Demigod work well very very soon as in, by this weekend. BTW, favor points are fixed here now. This update will allow lots of people who can’t currently connect to connect (i.e. we had a lot of success with people who have never been able to connect).

You have team 2 which is headed by our chief architect (the Impulse team) that is working on better solutions but ones that will take longer (>a few days but < a month) which include things like the proxy servers, a more robust skirmish/pantheon match making system that takes ping into account rather than geographic location, supports larger teams, eliminates bots from experienced player matches, eliminates the multiple ports, and a ton of other things.

You have team 3 which is headed up by the lead engineer at Gas Powered Games. He’s working on things like making performance better for low end systems, adding modes so we can do Demigod: Clan Wars (free DLC for this Summer), implementing more robust rules for competitive play, bug fixes, etc.

And then you have team 4 which is headed up at GPG to work on new content and balance changes. New items, new Demigods, game rule changes, updated abilities, new maps, and so on.

Since I write most of the blogs, you mostly hear about Team 1.

Anyway, stay tuned.   In the meantime, have fun!