Frogboy Frogboy

Demigod Beta 2C update

Demigod Beta 2C update

image

We're putting up Beta 2C as we speak. Just 2 business days after beta 2B.

Now, before anyone asks, YES we are working on adding binary patching support into the game and Impulse so that these updates are much smaller.

So what's new? Here is a partial list:

  1. Password obfuscation is in! Yay! So is tabbing between controls.
  2. Various display issues corrected.
  3. Sedna got some balancing
  4. Citadel upgrade costs increased
  5. Flag control multipliers enhanced: If you have 60% of flags, your war score increases by 2X and if you have 75% of the flags, it goes up by 4X.
  6. Lots of work done on multiplayer connectivity (see below).
  7. Audio quality controls added.
  8. Some arena tweaks
  9. Some sound and voiceover tweaks

So let's talk about multiplayer here because there's a lot of misconceptions about how it works.

Demigod is a peer to peer game (as opposed to client server).  That means that each player has to be connected to another player for it to work which can be pretty challenging. If you've ever played a game where you couldn't host but could join, you can get an idea of our challenge: In Demigod, all players are, in effect, hosts.

So why was this done? There are many reasons for it. For one, it tends to reduce lag between players and in a game like Demigod where timing is important, reducing lag is a big deal.

So what is the problem at this point?  Right now, a player creates a game, someone tries to join and until those two players are able to connect, the guy joining is staring at the "connecting" screen.  But then, someone else tries to join, now both the people are waiting at the connecting screen until all 3 are connected to each other.

So let's say right now there's a 50% chance that player A and B won't be able to connect.

If it were a 1 on 1 game, that would mean you could join half the games. If there are 2 people in the game, that means there's a 25% chance you can connect (50% of 50%).  If there are already 3 people in the game, that means there's a 12% chance you'll be able to connect.  You see how this gets bad in a hurry.

So what if we get the connectivity up to 90%?  So 9 out of 10 games with only the host you can connect to.  What if there's 2 people in? You're already down to 80%. And so on. 

So what can we do?  Well, that's what we're working on.  Right now, I'd say we're at over 90% connectivity in less than 10 seconds and 95% in less than 20 seconds to connect to a random person. But given the current UI/experience we give users, even if we get it to 99% (which is our goal) we need to provide more feedback to the player and more control.

On our tests yesterday, what would happen in a typical 6 person game is that there'd be one player who just couldn't connect in a reasonable amount of time to the other players.  Right now, the result would be everyone but the host would be staring at a "connecting" dialog.

What we need to do is A) Provide feedback so players can see what's happening and B) ideally let the host kick out the player who just can't seem to connect to everyone else.

26,507 views 31 replies
Reply #26 Top

I think that should work for me!

EDIT: Sorry for the double post coming up...

Reply #27 Top

Quoting Soccer194, reply 25
guys wonder if u want a rematch 12:00 est saturday
End of Soccer194's quote

I think that should work for me.

Reply #28 Top

The proxy method to solve connection problems... WITHOUT making each connection success rate more reliable (let is assume it cannot get better)

 

Let us assume that any player has a 50% chance to connect to another player every 10 seconds. Obviously 6 players connecting to eachother is hellish still and could result in long wait times. Let us also assume that some players have a 0% chance to connect to another player due to whatever network issues.

 

However what if we took this rout. The host is the trafficer of information. All players must connect to the host. After all players connected to the host they try to connect to other players.

SO from this point on we know all in the game have AT LEAST a connection to the host. The game engine then must find a path for each player (that is least congested) so that a player can talk to each player VIA a proxy player. The proxy will forward ALL information between any two players it has connection to which cannot connect to eachother.

From this point on, each player will try to connect to the others but will be able to play due to the proxy. As soon as a direct connection is made the proxy is no longer necessary. This method will go on untill each player is connected to each player or the game ends (whichever is first).

 

 

Advantages:

  1. You don't need to go for 100% connectivity rate.
  2. You don't need to have any waiting screen special effects. Just connecting to host. That should be relatively quick and thus that is all you ever need.
  3. Even if you can't connect to everyone the game goes on. As long as you have enough connections going you are not bogging down a single player for all proxying. Also if a player leaves others can take over as proxies. (no player left behind act... no? not even a giggle?)
  4. This will benefit no matter how high the connectivity % is. No matter what you only have to connect to the host, everyone else will happen in due time.

You can even use this method if a player cannot connect to the host. Maybe one of the other players already connected can act as a proxy becuase when connecting the player only needs to make a SINGLE connection to anyone in the game loby.

 

Disadvantages:

  1. You have to make the connection % reasonable. Otherwise you wind up with a proxy chain which might mean a connection between two players is chained by a few proxies which means its damn slow.
  2. Proxies are slower than direct connection. But better than no connection.

 

Since you claim to have a 90% connect rate, that % is more than enough to satisfy quick joining of games.

 

Edit: In fact... The more players there are in a game, the BETTER you chance to connect to that game is. Currently more = worse chance. So if a game has 2 people there your chance (in the current scheme of things) of NOT connecting in the first 10 seconds is 1%. For a 5v5(max) if you are the last person your chance to NOT connect is .00001%

Reply #29 Top

good now all need to no is if their fine with it

Reply #30 Top

I am curious how they did this with suppreme commander. Or was there a service used to connect people together?

Reply #31 Top

Supcom is also peer-to-peer, except you had to deal with ports instead of this ImpulseReactor stuff.