Why does it take so long to rejoin.

Ideas for expansions and improvements to Defcon

Moderator: Defcon moderators

User avatar
Spacemonkey
level4
level4
Posts: 609
Joined: Thu Oct 05, 2006 1:31 am
Location: Auckland, New Zealand

Why does it take so long to rejoin.

Postby Spacemonkey » Wed Nov 08, 2006 4:14 pm

It's can take up to 20 minutes for a player to rejoin a game.

Yet spectators can join whenever they want.


Why does defcon have to play through the whole game when you try to reconnected, and why does it do it so slow?


It would be much better that if you drop from a game, you could rejoin before it's finished.
User avatar
Mighty Santa
level2
level2
Posts: 150
Joined: Tue Sep 19, 2006 5:10 pm
Location: London, UK
Contact:

Postby Mighty Santa » Wed Nov 08, 2006 4:24 pm

Yeah, rejoining becomes nonsensical after the game has gone on for 30mins or more.

Why would any player wait 15mins or more to reload ?

Makes no sense at all. Why can't a player just log back in, resync in...and play, rather than seeing the entire game load..play out at fast speed?
4, 8, 15, 16, 23, 42
User avatar
Spacemonkey
level4
level4
Posts: 609
Joined: Thu Oct 05, 2006 1:31 am
Location: Auckland, New Zealand

Postby Spacemonkey » Wed Nov 08, 2006 4:29 pm

I was in first place once, lost my connection, waited 20 minutes to rejoin, got back in 5 minutes before the end to find out i was now in last place :(
User avatar
ERTO
level1
level1
Posts: 44
Joined: Fri Oct 20, 2006 11:54 pm

Postby ERTO » Wed Nov 08, 2006 10:46 pm

While I'm sure that there was some coding reason for this being done the way it was done, it's still stupid game architecture. The sort of thing that someone should have planned around before the programmers ever started writing code. I could join a 3D shooter like Quake with my 56k modem midgame without having to make my computer play the whole damned level out first, and that was six years ago.
User avatar
Mighty Santa
level2
level2
Posts: 150
Joined: Tue Sep 19, 2006 5:10 pm
Location: London, UK
Contact:

Postby Mighty Santa » Wed Nov 08, 2006 11:14 pm

I assume the game knows the IP/player ID, which allows players to log back into the game they crashed from.

Am curious, just WHY would it be necessary to have a player reload everything ?

I just don't get it. Any programmers out there wanna state some reasons?
4, 8, 15, 16, 23, 42
User avatar
wwarnick
level5
level5
Posts: 1863
Joined: Mon Oct 02, 2006 8:44 pm
Location: Rexburg, ID

Postby wwarnick » Thu Nov 09, 2006 12:23 am

There's only a couple (2 or 3) programmers total. Besides, this is IV's first ever online game. And you're right, it shouldn't take that long, but patches will come. And about the spectators, sometimes it takes me 15 minutes just to connect as a spectator. I don't think there's much difference.

wwarnick
User avatar
Montyphy
level5
level5
Posts: 6745
Joined: Tue Apr 19, 2005 2:28 pm
Location: London, England

Postby Montyphy » Thu Nov 09, 2006 1:15 am

wwarnick wrote:There's only a couple (2 or 3) programmers total.


There are only 2 programmers in the world? Woah... ;)
Uplink help: Check out the Guide or FAQ.
Latest Uplink patch is v1.55.
SFawler
level0
Posts: 7
Joined: Thu Nov 09, 2006 1:38 am

Postby SFawler » Thu Nov 09, 2006 2:00 am

For some reason, the game loads the history of the gameplay as well as the chat messages that went on prior to the state the server was in. You are loading the history up to the point at which the server is currently at, which is why it takes so long to join/rejoin. Maybe jumping in at the current spot in the server won't work because it needs history to determine what events are taking place, I dunno. Pretty annoying though if you're dropped/disconnected, you don't bother rejoining late the game if you have to wait that long.
User avatar
Spacemonkey
level4
level4
Posts: 609
Joined: Thu Oct 05, 2006 1:31 am
Location: Auckland, New Zealand

Postby Spacemonkey » Thu Nov 09, 2006 3:31 am

SFawler wrote:Maybe jumping in at the current spot in the server won't work because it needs history to determine what events are taking place, I dunno. Pretty annoying though if you're dropped/disconnected, you don't bother rejoining late the game if you have to wait that long.


But it doesn't take as long when spectators join, and with team switching turned on, a spectator could take control of the game.
User avatar
Mighty Santa
level2
level2
Posts: 150
Joined: Tue Sep 19, 2006 5:10 pm
Location: London, UK
Contact:

Postby Mighty Santa » Thu Nov 09, 2006 3:27 pm

Exactly. Spectators can usually log into a game, directly seeing the current game state. They don't have to go through the history of the game so far.

Crazy. Makes no sense at all. I am not entirely hopeful this will be changed.
4, 8, 15, 16, 23, 42
User avatar
palehorse864
level2
level2
Posts: 198
Joined: Sun Oct 01, 2006 5:54 am

Postby palehorse864 » Thu Nov 09, 2006 8:06 pm

every time I go to spectate a game, I have to play catchup as well. I don't actually watch the game, but it takes forever for it to actually load. Sometimes it can take 10 minutes if the game has been going on for a while. There must be a more efficient way to do this.
User avatar
bert_the_turtle
level5
level5
Posts: 4795
Joined: Fri Oct 13, 2006 6:11 pm
Location: Cologne
Contact:

Postby bert_the_turtle » Thu Nov 09, 2006 10:08 pm

I'd guess it's just Defcon's network model. In shooters, usually the network model is roughly
- The server holds all the data
- Clients sent intput to server
- Server simulates all of the game world
- Server sends out current game state to clients (usually only the part of the world currently visible on the client)
- Clients extrapolate the gamestate from the server
In this model, it is no big deal if the client's copy of the game state is a bit off, the syncs from the server will correct it soon enough. Entering a game late is no problem, the server just sends one complete copy of the game world initially. Bandwidth usage is roughly proportional to the number of objects in the game world, because every object needs to get synced constantly. That's why this model does not work well in strategy titles with hundreds of objects.

In strategy games, and it seems in Defcon as well, the network model is
- All the clients send all input events to all other clients (usually mediated by the server)
- All clients use the input events to simulate the world by themselves
Not only is this easier to code than the other network model, it also is far more data efficient in a strategy game. Since only player input is sent around, bandwidth usage is proportional to the amount of input players can produce, which is typically independent of the number of units they control. The drawback is that to know the current gamestate, you need to know all the input events leading to that state and you need to simulate the whole world from start to there. That's what's causing the trouble discussed here.

There is a way around that, of course: it is technically possible to mix both models: use the second model while the game is running, but if you connect to an already running game, you get a pre-packed, current snapshot of all the relevant data. However, the programmers basically have to implement TWO network models. Network programming is not always fun, and syncing a complete world state with relations among the objects is relatively hard work. Unlike when you're purely in the first network model, little errors do matter: they'll knock the simulation off track and cause the dreaded syncing errors later on.

So, I would say it would be technically possible to make late joining faster, but the effort probably isn't worth it, given the amount of complaints about other things you get on the forum :)

Now, rejoining may be possible to make faster without that much extra coding. Your client then already has most of the data it needs in theory because it was already received, and there must already be a way the data can be stored; the server has to be using it, otherwise it couldn't possibly send it to the reconnecting client. The only question is whether this game log data is in a form suitable for writing out to disk. If it is, recording games for later playback and (rather inefficient) savegames could be realized using it. It's in the realm of the possible, but given that neither savegames (ok, not much worth in a multiplayer game) nor recordings/playback (I bet those would be popular) are currently available, I wouldn't put my hopes too high.
prozachar
level1
level1
Posts: 60
Joined: Fri Oct 06, 2006 8:57 pm

Postby prozachar » Thu Nov 09, 2006 10:22 pm

bert_the_turtle wrote:Network programming is never fun


Fixed that for you. :P
User avatar
Spacemonkey
level4
level4
Posts: 609
Joined: Thu Oct 05, 2006 1:31 am
Location: Auckland, New Zealand

Postby Spacemonkey » Fri Nov 10, 2006 12:06 am

What turtle says makes sense.

But what doesn't make sense is why does the rejoin take so long, the sync is only a few kb's, shoulf be tranfered in a few seconds, then all the game need to do is run all those commands really fast, sould only take another few seconds, but instead it plays it through only slightly faster then full speed.
supam
level1
level1
Posts: 52
Joined: Tue Nov 14, 2006 1:11 pm

Postby supam » Tue Nov 14, 2006 5:07 pm

Montyphy wrote:
wwarnick wrote:There's only a couple (2 or 3) programmers total.


There are only 2 programmers in the world? Woah... ;)


That work for Introversion, yes.


prozachar wrote:
bert_the_turtle wrote:programming is never fun


Fixed that for you. :P


fixed the fix.

Return to “Think Tank”

Who is online

Users browsing this forum: No registered users and 20 guests