The difficulty of synching game entrance
#21
Jarulf,Apr 28 2006, 05:20 AM Wrote:Noth in a buble, not fully at live, not just there but not able to interact but completely OUTSIDE the world! When the client has loaded, THEN the server inserts you, starts sending info on the world, allow you interact and so on.[right][snapback]108465[/snapback][/right]

But isn't it the loading of the info on the world that causes the load-in problem in the first place? It would seem that the info on the world would have to be sent to the client first before the character gets dropped into it.
Reply
#22
Jarulf,Apr 28 2006, 07:20 AM Wrote:How can you possibly check out what people are doing of the oposing factions towns if you are NOT IN THE GAME???? [right][snapback]108465[/snapback][/right]

I believe he's pointing out the potential for abuse, which unfortunately should probably be considered when takling about any potential fix. Like dozer said, if someone could cleverly figure out a way to stop the packet from being sent to the server that says "okay, I'm loaded, make me mortal again" then one could potentially be invulnerable indefinitely.

Edit: Also, I think he's talking the solution where you simply add an ice-block type buff to your character, making him invulnerable but unable to act while you load, not your solution where the character does not appear in the game until you are fully loaded.
Reply
#23
Pantalaimon,Apr 28 2006, 10:49 AM Wrote:I believe he's pointing out the potential for abuse, which unfortunately should probably be considered when takling about any potential fix.  Like dozer said, if someone could cleverly figure out a way to stop the packet from being sent to the server that says "okay, I'm loaded, make me mortal again" then one could potentially be invulnerable indefinitely.

Edit: Also, I think he's talking the solution where you simply add an ice-block type buff to your character, making him invulnerable but unable to act while you load, not your solution where the character does not appear in the game until you are fully loaded.
[right][snapback]108486[/snapback][/right]

The solution would be as Jarulf says, for the server to not finish inserting you into the world until the client is ready. If someone jams or delays the 'ready' client signal they will be sitting at the loading screen longer, is all. If someone sends the 'ready' signal too soon, they will be sitting around present (in all ways) but unable to act until the game finishes loading.

I think one dilemma Blizzard has here is that they want you to able to do things even if not all the textures are loaded, etc. For example, after jumping in I can run around an Orgimmar in which most entities are only shadow blobs on the ground, the mailbox doesn't exist, etc - for a little while until my computer finishes loading. This is actually slightly useful, because I can head to the mailbox or the auction house or do other things in the few seconds while my client gets updated (from the local hard disk and/or the server.)

So allowing the client to do things before the game is done loading seems to be a design decision.

And if you allow the clients to do things when the world is not done loading on the client, then you must also allow the world to affect the client at that time (else run the risk of abuse.)

We can add to that the difficulty of deciding when the world IS done loading. Maybe the client never knows when the world is done loading because that is not a well defined state. If I haven't loaded the textures for the Jade Ooze, should the client not send "ready" just because there *could be* Jade Oozes around? How about the Sulfuras textures -- there *could* be somebody around wielding Sulfuras. This isn't a show-stopper, but it's not a trivial question to resolve.

Much nicer code-wise to simply rely on dynamic on-demand loading, though that does have side-effects with regard to synchronization. I'm sure Blizzard also likes dynamic loading for crossing zones so that there isn't a loading-lag ...

Reply
#24
TheWesson,Apr 28 2006, 11:43 PM Wrote:And if you allow the clients to do things when the world is not done loading on the client, then you must also allow the world to affect the client at that time (else run the risk of buse.)[right][snapback]108507[/snapback][/right]

OK, that's fine. Right up until the point that the _client_ decides I've died because I've just fallen from a height onto solid ground where water will be, but hasn't loaded yet. And the server _believes_ it.
You don't know what you're talking about.
Reply
#25
TheWesson,Apr 28 2006, 03:43 PM Wrote:The solution would be as Jarulf says, for the server to not finish inserting you into the world until the client is ready.  If someone jams or delays the 'ready' client signal they will be sitting at the loading screen longer, is all.  If someone sends the 'ready' signal too soon, they will be sitting around present (in all ways) but unable to act until the game finishes loading.

I think one dilemma Blizzard has here is that they want you to able to do things even if not all the textures are loaded, etc.  For example, after jumping in I can run around an Orgimmar in which most entities are only shadow blobs on the ground, the mailbox doesn't exist, etc - for a little while until my computer finishes loading.  This is actually slightly useful, because I can head to the mailbox or the auction house or do other things in the few seconds while my client gets updated (from the local hard disk and/or the server.)

So allowing the client to do things before the game is done loading seems to be a design decision.

And if you allow the clients to do things when the world is not done loading on the client, then you must also allow the world to affect the client at that time (else run the risk of abuse.)

We can add to that the difficulty of deciding when the world IS done loading.  Maybe the client never knows when the world is done loading because that is not a well defined state.  If I haven't loaded the textures for the Jade Ooze, should the client not send "ready" just because there *could be* Jade Oozes around?  How about the Sulfuras textures -- there *could* be somebody around wielding Sulfuras.  This isn't a show-stopper, but it's not a trivial question to resolve.

Much nicer code-wise to simply rely on dynamic on-demand loading, though that does have side-effects with regard to synchronization.  I'm sure Blizzard also likes dynamic loading for crossing zones so that there isn't a loading-lag ...
[right][snapback]108507[/snapback][/right]


Replying to my own post: After thinking about this a bit, it seems that Jarulf's complaint would be somewhat relieved if the client and the server synchronized the point when char activity in the world (and the world affecting the character) began, whether or not 'everything' was loaded at that point.

It would be better to be fighting undrawn enemies than to find yourself dead or half-dead before your character could move or do anything.
Reply
#26
TheWesson,Apr 28 2006, 03:43 PM Wrote:The solution would be as Jarulf says, for the server to not finish inserting you into the world until the client is ready.  If someone jams or delays the 'ready' client signal they will be sitting at the loading screen longer, is all.  If someone sends the 'ready' signal too soon, they will be sitting around present (in all ways) but unable to act until the game finishes loading.

I think one dilemma Blizzard has here is that they want you to able to do things even if not all the textures are loaded, etc.  For example, after jumping in I can run around an Orgimmar in which most entities are only shadow blobs on the ground, the mailbox doesn't exist, etc - for a little while until my computer finishes loading.  This is actually slightly useful, because I can head to the mailbox or the auction house or do other things in the few seconds while my client gets updated (from the local hard disk and/or the server.)

So allowing the client to do things before the game is done loading seems to be a design decision.

And if you allow the clients to do things when the world is not done loading on the client, then you must also allow the world to affect the client at that time (else run the risk of abuse.)

We can add to that the difficulty of deciding when the world IS done loading.  Maybe the client never knows when the world is done loading because that is not a well defined state.  If I haven't loaded the textures for the Jade Ooze, should the client not send "ready" just because there *could be* Jade Oozes around?  How about the Sulfuras textures -- there *could* be somebody around wielding Sulfuras.  This isn't a show-stopper, but it's not a trivial question to resolve.

Much nicer code-wise to simply rely on dynamic on-demand loading, though that does have side-effects with regard to synchronization.  I'm sure Blizzard also likes dynamic loading for crossing zones so that there isn't a loading-lag ...
[right][snapback]108507[/snapback][/right]


I guess Blizzard decided that control of the clients movement would tax the servers too much (figuring out where the hero is in a 3d world when climbing hills etc.)

It does seem cruel to kill by falling though.

A samilar problem: Gadgetzan teleport sometimes leaves me a hundred feet in the air. If this happens, I usually load dead and never even get to see myself falling (or get a chance to slow-fall or use a parachute cloak etc).
Reply
#27
Jarulf,Apr 28 2006, 04:47 AM Wrote:Ehh, not sure what you mean. What you have is a situation were your character is not at all in the game yet. It is completely the same as if you were not loged in at all, the difference only being that your client is loading nessecary graphics and sound (and whatever else it needs to initiate). From the games perspective (the server) and the other players perspective, you are not in any way there, not processed, not shown, not anything. At most the game has you on a hold and in the status of (here I will insert this new player as soon as I get the "go" signal from the client that it is ready. This as oposed to today, when the server waits for basically the same but at another point, not caring if the client is ready or not.
[right][snapback]108456[/snapback][/right]

I think things are fine as-is. While I don't experience your problems (I'm a Protection Warrior, and I'm designed to stay alive an extremely long time, especially PvE-style; even if I do lag while loading, chances are very high that I will be able to survive it, even if it's more than one mob beating on me), I can see where you're coming from.

However, adding something akin to the Ice Block-type thing that was previously mentioned, or other such things, have too much potential for abuse and I'd rather not place my ability to play solely in the hands of the frequently unstable servers.

If we went with the Ice Block idea (frozen in place until you attempt to use a skill or move), you could have an entire 40-man raid corpse-drag their way to, say, Magni, log out (ALT+F4?), then log in. Wait for everyone to load in, kill the debuff, kill Magni, high-five Blizzard.

You could also easily do this with anything that isn't in an instance (Kazzak, Azuregos, the four greenies, etc.)
ArrayPaladins were not meant to sit in the back of the raid staring at health bars all day, spamming heals and listening to eight different classes whine about buffs.[/quote]
The original Heavy Metal Cow™. USDA inspected, FDA approved.
Reply
#28
Jarulf,Apr 27 2006, 07:11 AM Wrote:Yes, perhaps I was unclear, the problem IS that the client load the envirnment arround you but puts you INTO the game before it has loaded it.
[right][snapback]108359[/snapback][/right]

No, you were clear. I wasn't.

I was referring to your computer being fed the information on what's around you in the world -- like other players, mobs, non-static openable objects. I'm not sure how you can put a hold on dropping you into the world while the server's telling you that Grok the Orc Shaman is 40 feet away from you when, by the time it's done telling you that, Grok's now... NOT 40 feet away from you.

I'm pretty sure that the "fast" load -- the first 80% of the bar, as you noted -- is your computer preparing to play the game, and the slow part is your computer loading the information I described in the previous paragraph. (Why am I pretty sure? That last 20% isn't slow if I load into, say, a cleared instance, or the Deeprun Tram. It's interminably slow if I load into Ironforge.)
Darian Redwin - just some dude now
Reply
#29
I had started to write a very long post touching on things such as how/when stuff is loaded, but after thinking it through, I think there is a much easier way to clarify what I see as a problem and what I want.

Problem: The world/server starts interacting with my character, before the client allows me to interact with my character. That is, stuff happens to me while I can't issue, for example, a run command to try to get away from it.

Solution: Allow the client to interact with the character as soon as the server starts to do the same.

Comment: This is actually completely unrelated to when or how much of the graphics and other world states are loaded or not and you are already allowed to interact with your character while not all graphics for example is loaded which is obvious to anyone logging in into a major town such as Ogrimar.

That is all and my point. There is really no issue of abuse here since I am not saying I want to allow the client to interact with the world before the world is allowed to do so. I want it to happen at the same time. Since the opposite happens now, I suggested that the world at least wait for a "go, the client now allows the player to issue commands and interact". Someone said, you could block such a command and miraculously somehow still interact with the world while the world just ignored you. How would that be possible? Until the server gets the ok, there is no extra information going either to or from the client, the same "go, I am ready" is the signal that allows the server to send new info as well as accepting input from the client about the player. If you want to really bend over, have ANY command or info submitted from the client about the character also in addition mean such a "OK, I am ready" and have the server start interacting with you.


So yes, one can argue that there is not an easy way to have everything loaded before your interaction starts (although even that is something I don't agree to), but at least load as much as possible and then have the client and the server start acting at the same time and continue loading as needed. I just want to control my character as soon as the world starts to interact with it, regardless of if all graphics is loaded or not although it is desirable to have all graphics loaded as well (which is not an impossibility).



MongoJerry,Apr 28 2006, 06:33 PM Wrote:But isn't it the loading of the info on the world that causes the load-in problem in the first place?  It would seem that the info on the world would have to be sent to the client first before the character gets dropped into it.
[right][snapback]108478[/snapback][/right]

No, most of the "info" are static one, such as graphics about the world itself that can surely be loaded before you need to get ANY information from the server. You may argue that the client doesn't have a list of all typical monsters in a region, well, send such info then, like "you are in Barrens, so it is a good idea to load graphics for lions, hyenas, lightning dinosaurs and so on".

It is obvious that the game can allow you to interact without all graphics is loaded, for example when you log into a town. A said above, do the same in other places so that you can for example issue a run or attack command while the client continue to load the extra special graphics and other info needed so that at least you don't just stand there with a monster hitting at you while you are shown a loading screen and can't even issue a "run" command.

Pantalaimon,Apr 28 2006, 07:49 PM Wrote:I believe he's pointing out the potential for abuse, which unfortunately should probably be considered when takling about any potential fix.  Like dozer said, if someone could cleverly figure out a way to stop the packet from being sent to the server that says "okay, I'm loaded, make me mortal again" then one could potentially be invulnerable indefinitely.

Edit: Also, I think he's talking the solution where you simply add an ice-block type buff to your character, making him invulnerable but unable to act while you load, not your solution where the character does not appear in the game until you are fully loaded.
[right][snapback]108486[/snapback][/right]

You are not supposed to be "invulnerable", you are not supposed to be in the game at all! In addition, even if you want the character in the game in some sort of such in-between state, it would mean nothing since the server would not send you any information at all and you can't send any information either. So yes, you could argue that you can stay invulnerable for ever but it would give you nothing. it is like claiming I have actually inserted your character here on my computer, in an invulnerable state. What can you do? Can you somehow snoop on what I have here on it? Of course not since I am not telling you yet.

As for the "ice block" type solution or whatever, that is really irrelevant, if you want to show the rest of the world a character in ice-block or whatever, fine, it doesn't change a thing since the player in the ice block will not receive any information, nor be able to issue any commands and so on. It seems a bit pointless to add any "ice block" or whatever though since it would serve no purpose and is just complicating stuff. I think it is more of a suggestion from someone who did not understand my problem nor the solution to it.

TheWesson,Apr 29 2006, 12:43 AM Wrote:We can add to that the difficulty of deciding when the world IS done loading.  Maybe the client never knows when the world is done loading because that is not a well defined state.  If I haven't loaded the textures for the Jade Ooze, should the client not send "ready" just because there *could be* Jade Oozes around?  How about the Sulfuras textures -- there *could* be somebody around wielding Sulfuras.  This isn't a show-stopper, but it's not a trivial question to resolve.


Sure, that might be a problem, of knowing when all graphics is loaded but then that comes as part of the solution to make it aware. If you really want to stretch it, of course the client knows when the graphics is loaded, or it would not know what to load to start with. Different parts of the client might not know though, but that is easy, add some communication or state info that they all have access to. In addition, the client doesn't have to have all graphics loaded or even know when it is. What the client needs to know "and perfectly well knows" is, when does it start receiving input from the player and when does it start to render the world to show (as opposed to showing a loading screen) regardless of if all textures are loaded or not. That is the "ready" I want for the client to tell the server. When the server gets that ready and not before, it will have the world start interacting with your character and at the very same time, the server will start sending your client information, not before.

So yes, if the client start rending the world and accept input from the player, then yes it is ready regardless of if it has loaded the ooze graphics or not. The exact placement or action of any nearby ooze is of course received starting from that onwards and is sent constantly, just as it is when you play normally when you are constantly feed information about stuff around you, the important things is not if the ooze graphics is loaded or not, but if you can interact and issue commands when you receive for example information that an ooze is hitting you. As it is now, you aren't even told (well possibly by the sound) and when you are, you might already be dead and can't do anything.



Artega,Apr 29 2006, 11:47 PM Wrote:If we went with the Ice Block idea (frozen in place until you attempt to use a skill or move), you could have an entire 40-man raid corpse-drag their way to, say, Magni, log out (ALT+F4?), then log in.  Wait for everyone to load in, kill the debuff, kill Magni, high-five Blizzard.

You could also easily do this with anything that isn't in an instance (Kazzak, Azuregos, the four greenies, etc.)
[right][snapback]108554[/snapback][/right]


Apart from me not suggesting any special ice cube nor anything remotely close to what you talk about (see above), I really don't understand anything of what you say here, what is your abuse really about? Do note, you can't interact AT ALL, with the game unless it can interact with you. Seems like you are feeling about some sort of synchronization abuse in that everyone should log in at exactly the same time, is that it? Otherwise I don't understand you. That can be done basically right now as well although the people with slow computers will not be able to start acting back until a bit later than everyone else, which in itself is what I complain about, the world acting and the players not being able to.

Darian,May 1 2006, 03:29 PM Wrote:I was referring to your computer being fed the information on what's around you in the world -- like other players, mobs, non-static openable objects.  I'm not sure how you can put a hold on dropping you into the world while the server's telling you that Grok the Orc Shaman is 40 feet away from you when, by the time it's done telling you that, Grok's now... NOT 40 feet away from you.


You are not going to be fed ANYTHING until your client says it is ready at which time you are not only started to get the information feed, the world will also start acting and affecting you. Do note that sending the information about monsters around you and what they do is not something taking seconds, that type of information is constantly going on all the time while you play, there is no need for any extra 5 second "update" only at log in when the exact same thing is constantly done in split second time continuously as you play.
There are three types of people in the world. Those who can count and those who can't.
Reply
#30
Jarulf,May 2 2006, 02:25 AM Wrote:Problem: The world/server starts interacting with my character, before the client allows me to interact with my character. That is, stuff happens to me while I can't issue, for example, a run command to try to get away from it.

Solution: Allow the client to interact with the character as soon as the server starts to do the same.

[right][snapback]108655[/snapback][/right]

Yep. It is certainly not 'fair' for the world to be acting on you when you are completely powerless to act on the world.

I don't know why Blizzard hasn't fixed this.

Supposing the client sends a signal to the server, "I am ready to act". The server waits until *it* is ready to act (to have the world affect the character) and then sends the client a signal, "show the world now and start accepting input". (To avoid abuse, the server will not accept input from the client until the server knows that the server is ready.)

all that remains is implementation ...
Reply
#31
TheWesson,May 2 2006, 07:48 PM Wrote:Yep.  It is certainly not 'fair' for the world to be acting on you when you are completely powerless to act on the world.

I don't know why Blizzard hasn't fixed this.

Supposing the client sends a signal to the server, "I am ready to act".  The server waits until *it* is ready to act (to have the world affect the character) and then sends the client a signal, "show the world now and start accepting input".  (To avoid abuse, the server will not accept input from the client until the server knows that the server is ready.)

all that remains is implementation ...
[right][snapback]108745[/snapback][/right]

And if your computer loads the world faster than the server sends the packet that allows you to interact with the world? Just sit there for however long it takes the game to sort it all out?

I don't see the problem with the way things are now. You have a hearthstone; use it. If it's in an inconvienent place (say, UC when you're on Kalimdor), then that's just how things go. I know I've had my hearth set to TB while I'm in Eastern Kingdoms, or UC when I'm tromping around in Un'goro; if you choose to log out in the wild (emergency, urgent need to bio break, sudden hunger pang, whatever), you should accept the possibility that you might be getting munched on before you log out (if you killed the game with ALT+F4) or before you regain control when you log back in.

It would be great if it were possible for the game to be fair in that way, but the servers are laggy enough as it is, and I'm not willing to sit for 30 seconds after everything is ready because the server is busily sending those same instructions to hundreds or thousands of other people in addition to its other duties. Now, if Blizzard wanted to buy new server farms expressly for the purpose, we might be getting somewhere :)
ArrayPaladins were not meant to sit in the back of the raid staring at health bars all day, spamming heals and listening to eight different classes whine about buffs.[/quote]
The original Heavy Metal Cow™. USDA inspected, FDA approved.
Reply
#32
Artega,May 3 2006, 06:41 AM Wrote:And if your computer loads the world faster than the server sends the packet that allows you to interact with the world?  Just sit there for however long it takes the game to sort it all out?

Huh? FOr your information, the sevrer allready has the world loaded, so it is hard for you to have to wait for the server. In such a case, there is really no problem, that is what happenes allready. Your client will wait for the server to contact you. It is allready like that, you can't play unless you have contact with the server so obviously you have to sit and wait for the server. That is not what we talk about, we talk about when the client has not finnished loading yet, it should not ask the server for being able to start gaming.


Artega,May 3 2006, 06:41 AM Wrote:I don't see the problem with the way things are now.  You have a hearthstone; use it.  If it's in an inconvienent place (say, UC when you're on Kalimdor), then that's just how things go.

So I need to plan all my game time on a 1 hour cool down thing PLUS losing the ability to have the hearth stone at somewhat convenient places, alternatively add 10-20 minutes extra travell time each time I game?

In addition I need to make sure I always have spare time in case there is any situation were connection is interupted, for example due to crash of either server or client or other computer problems?

In the 1 hour after using a hearthstone I should suspend all my other life activities so I can avoid having a problem in the game that is trivial to fix?

I don't know about you but sure, if I spent my entire life playing WoW I oculd see that there is no problem. However, as I have mentioned there HAS been occations with problems for me, so obviously at least one person playing the game has such a problem. Are you claiming I am the only one?

Besides, the problem still exists even if you log in and out of town, especially on a PvP server were other players would be able to interact with your character before you can interact with them or the game in any way. So no, using the hearthstone doesn't solve the problem, at most it moves the problem to another place. It is like solving one of the symptoms instead of the cause of the problem, which is trivial to do really.

Artega,May 3 2006, 06:41 AM Wrote:  I know I've had my hearth set to TB while I'm in Eastern Kingdoms, or UC when I'm tromping around in Un'goro; if you choose to log out in the wild (emergency, urgent need to bio break, sudden hunger pang, whatever), you should accept the possibility that you might be getting munched on before you log out (if you killed the game with ALT+F4) or before you regain control when you log back in.

So you say that it is a deliberate decision of the Blizzard game designers that if you have a computer or other situation that mean your client can't load the game fast enough, you should accept that you die?

Besides, if you are really supposed to always return to a town when you end playing, why noty have the game automatically put you in nearest town when you log back in?


Artega,May 3 2006, 06:41 AM Wrote:It would be great if it were possible for the game to be fair in that way, but the servers are laggy enough as it is, and I'm not willing to sit for 30 seconds after everything is ready because the server is busily sending those same instructions to hundreds or thousands of other people in addition to its other duties.  Now, if Blizzard wanted to buy new server farms expressly for the purpose, we might be getting somewhere :)
[right][snapback]108784[/snapback][/right]

Huh? This is a CLIENT issue, not a server issue. It won't affect the servers at all, on the contrary if you want to get picky, the server can in some cases start acting on your character a bit later than it does today. No idea what makes you think YOU have to wait 30 seconds to play the game just because I want my client to send the "go" signal slightly later than it does today. They are two completely unrelated issues.

In addition, you seem to sugest it is impossible for the game to synchronize when a client and a server are both ready to start playing. Guess what, almost everything else in the game is synchronized in such a way.
There are three types of people in the world. Those who can count and those who can't.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)