Prediction aside, everything on the client is always out of sync by the same amount. Not necessarily so in our rocket's case.
Joel R. wrote: > Tom Edwards Wrote: "I realised earlier today > however that what I'm trying to do is a bad idea no matter how I handle > it, because if either the client or the server ever started to choke on > some frames the rockets risk going out of sync." > > > Your going to be out-of-sync regardless unless you forward predict the > rocket based on the latency. > > > > On Tue, Sep 15, 2009 at 8:36 AM, Joel R. <joelru...@gmail.com> wrote: > > >> Prediction doesn't stop the server from sending you updates, because if >> your clientside values go out of range you have set, it snaps to the >> server's values. >> >> >> On Tue, Sep 15, 2009 at 8:02 AM, Andrew Armstrong >> <and...@mammoth.com.au>wrote: >> >> >>> I have not played with the game SDK before (just for server plugins), but >>> surely client side prediction can step in here and you can relax how often >>> you send updates? >>> >>> If the client received the origin, direction and velocity of the rocket, >>> client side prediction would take care of movnig the projectile fine (like >>> player movements). >>> >>> Can you maybe make it client side predicted (is there a flag? how do >>> players >>> and other entities auto predict?) and just relax how often you send >>> updates, >>> given that the rocket won't be changing direction/velocity? >>> >>> - Andrew >>> >>> -----Original Message----- >>> From: hlcoders-boun...@list.valvesoftware.com >>> [mailto:hlcoders-boun...@list.valvesoftware.com] On Behalf Of Tom Edwards >>> Sent: Tuesday, 15 September 2009 8:28 PM >>> To: Discussion of Half-Life Programming >>> Subject: Re: [hlcoders] Optimising projectile bandwidth >>> >>> Thanks Joel, that sounds like it would work. I realised earlier today >>> however that what I'm trying to do is a bad idea no matter how I handle >>> it, because if either the client or the server ever started to choke on >>> some frames the rockets risk going out of sync. >>> >>> It might be possible to overcome that issue, but only by writing a lot >>> of fairly low-level code: I can only assume that Valve's existing code >>> all assumes that the origin is being transmitted if the position of an >>> entity is in any way important. >>> >>> Oh well. It was worth thinking about. :-) >>> >>> Joel R. wrote: >>> >>>> It's kind of tricky to do something like this. >>>> >>>> I recommend using a server-side only rocket entity that has >>>> >>> TransmitState >>> >>>> disabled. Then use a *reliable* UserMessage with the Origin and >>>> >>> Velocity >>> >>>> attached and sent to all players. When a player receives this >>>> >>> information, >>> >>>> create a clientside only entity of this rocket and duplicate the way the >>>> server moves the rocket in a straight line. Use PhysicsSimulate to move >>>> your rocket through the world, think functions are time based and not >>>> >>> very >>> >>>> efficient for this. >>>> >>>> There is a way to do it using the network tables of a client/server >>>> >>> entity >>> >>>> but you still have to deal with entity creation which is a lot of >>>> >>> useless >>> >>>> data in itself. It gets really hacky though since you have to manage >>>> stopping the transmitting and letting the client take over, but it still >>>> uses the origin that the server has for PVS culling, so yea it gets ugly >>>> really fast. >>>> >>>> >>>> >>>> On Mon, Sep 14, 2009 at 6:15 AM, Tom Edwards >>>> >>> <t_edwa...@btinternet.com>wrote: >>> >>>> >>>>> I have a simple rocket entity that travels in a straight line until it >>>>> hits something and explodes. Since the rocket travels in straight lines >>>>> at a constant speed all that the client needs to know is its starting >>>>> position and angles, but I'm having trouble getting the engine to only >>>>> network that particular data. Nothing I've tried works: >>>>> >>>>> * Standard CBaseAnimating entity >>>>> o Sends m_flSimulationTime and m_vecOrigin in every update, >>>>> which together create 11 bytes of useless data per rocket. >>>>> If 16 players at cl_updaterate 30 each have one rocket in >>>>> the air, that's 844.8Kb/s leaving the server*, none of it >>>>> useful in any way. Standard entities also run into the >>>>> interp problem I was talking about the other week. >>>>> * CBaseAnimating with SendPropExclude on m_flSimulationTime and >>>>> m_vecOrigin >>>>> o Rocket never appears on the client, even though I set the >>>>> AbsOrigin there with a backdoor variable. >>>>> * CBaseAnimating with UpdateTransmitState() logic >>>>> o Rocket disappears from client when transmission stops. Grr! >>>>> * Temporary entity >>>>> o Unreliable, start to be dropped if more than 32 are in a >>>>> single update. Clearly a bad idea. >>>>> >>>>> The only method I've not tried yet is a networked dummy entity that >>>>> spawns non-networked rockets at both ends (which would pretty much be a >>>>> reliable temp ent). Since the client isn't supposed to spawn its own >>>>> entities I don't hold much hope for this approach either. >>>>> >>>>> What on earth can I do here? Give up would be one option I suppose... >>>>> >>>>> * Okay, PVS culling would help. But still... >>>>> >>>>> >>>>> _______________________________________________ >>>>> To unsubscribe, edit your list preferences, or view the list archives, >>>>> please visit: >>>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders >>>>> >>>>> >>>>> >>>>> >>>> _______________________________________________ >>>> To unsubscribe, edit your list preferences, or view the list archives, >>>> >>> please visit: >>> >>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders >>>> >>>> >>>> >>>> >>> _______________________________________________ >>> To unsubscribe, edit your list preferences, or view the list archives, >>> please visit: >>> http://list.valvesoftware.com/mailman/listinfo/hlcoders >>> >>> >>> >>> _______________________________________________ >>> To unsubscribe, edit your list preferences, or view the list archives, >>> please visit: >>> http://list.valvesoftware.com/mailman/listinfo/hlcoders >>> >>> >>> > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, please > visit: > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > > _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders