Network water missing on client
by CdnGater · in Torque Game Engine Advanced · 07/02/2008 (12:33 pm) · 3 replies
I have found an issue and am not sure how to fix it yet.
I take the stock tgea 1.7.1.
I start one instance the Stronghold demo and enable multiplayer when creating the server.
I start another instance of the Stronghold demo and join the first one as a client.
The water shows up on the server/client but does NOT show up on the stand alone client.
Has anyone ran across this before?
I have put console messages in the rendering loops and I DO see the messages, I am thinking its a shader issue, but have not found it yet.
Thanks.
EDIT:
I have found that the Client NetConnection::HandleConnectionMessage in netGost.cpp is not receiving the message ReadyForNormalGhosts yet the Server NetConnection::HandleConnectionMessage does. This is what is suppose to trigger the creating of the vertex buffer on the client. With the vertex buffer missing, the water is missing.
I take the stock tgea 1.7.1.
I start one instance the Stronghold demo and enable multiplayer when creating the server.
I start another instance of the Stronghold demo and join the first one as a client.
The water shows up on the server/client but does NOT show up on the stand alone client.
Has anyone ran across this before?
I have put console messages in the rendering loops and I DO see the messages, I am thinking its a shader issue, but have not found it yet.
Thanks.
EDIT:
I have found that the Client NetConnection::HandleConnectionMessage in netGost.cpp is not receiving the message ReadyForNormalGhosts yet the Server NetConnection::HandleConnectionMessage does. This is what is suppose to trigger the creating of the vertex buffer on the client. With the vertex buffer missing, the water is missing.
#2
What I did was, in sim\netGhost.cpp is in void NetConnection::handleConnectionMessage(U32 message, U32 sequence, U32 ghostCount) move NetConnection::smGhostAlwaysDone.trigger(); from
to
08/16/2008 (7:45 pm)
I also see this happening. I made a change which appears to fix it but I haven't thoroughly tested it to see if anything else is effected by this change.What I did was, in sim\netGhost.cpp is in void NetConnection::handleConnectionMessage(U32 message, U32 sequence, U32 ghostCount) move NetConnection::smGhostAlwaysDone.trigger(); from
[b]case ReadyForNormalGhosts:[/b]
if(sequence != mGhostingSequence)
return;
Con::executef(this, "onGhostAlwaysObjectsReceived");
Con::printf("Ghost Always objects received.");
[b]NetConnection::smGhostAlwaysDone.trigger();[/b]
mGhosting = true;
for(i = 0; i < mGhostFreeIndex; i++)
{
if(mGhostArray[i]->flags & GhostInfo::ScopedEvent)
mGhostArray[i]->flags &= ~(GhostInfo::Ghosting | GhostInfo::ScopedEvent);
}
break;to
[b]case GhostAlwaysDone:[/b]
mGhostingSequence = sequence;
// ok, all the ghost always objects are now on the client... but!
// it's possible that there were some file load errors...
// if so, we need to indicate to the server to restart ghosting, after
// we download all the files...
sv.ghost = NULL;
mGhostAlwaysSaveList.push_back(sv);
if(mGhostAlwaysSaveList.size() == 1)
loadNextGhostAlwaysObject(true);
[b]NetConnection::smGhostAlwaysDone.trigger();[/b]
break;
#3
I restored the NetConnection::smGhostAlwaysDone.trigger(); line back to the ReadyForNormalGhosts case and also put it into the GhostAlwaysDone case (as I demonstrated above) and everything works from what I can see.
08/20/2008 (6:41 am)
My "fix" above apparently did have some negative consequences. While water re-appeared in a dedicated client / server environment, groundCover failed to work.I restored the NetConnection::smGhostAlwaysDone.trigger(); line back to the ReadyForNormalGhosts case and also put it into the GhostAlwaysDone case (as I demonstrated above) and everything works from what I can see.
Torque Owner Tim Tebow