GitHub | Documentation | Become a Patron

Timing of movement



  • Can anyone give me some advice on technical design around accepting and processing player input? I am using Unity for the client side.

    Atm I am just sending a message to the server every frame as long as a key is held down and I am just adding a value to x/y when the command arrives. Would it be better to have a short timeout between sending such messages?

    private void Update()
    {
    	if (Input.GetKey(KeyCode.LeftArrow))
    	{
    		client.Send(Msg_MoveLeft);
    	}
    
    ...
    
    movePlayer(client: Client, action: string)
    {
        if (action === "L") 
        {
            this.players[client.sessionId].x -= 0.1;
        } 
    

    How would one deal with movement speed server side? I was thinking I should collect the player's wanted actions like, move left, right, etc; and then in the "update" function, which is a setSimulationInterval callback, I would do the actual movement so that it is locked to some time interval (movement speed).


  • administrators

    Hi @plyoung,

    I think a better approach would be to send when the key is active. Activating the "left" command when the key is first pressed, and de-activating it when it's released. This would avoid sending too many messages per frame.



  • Ah yes, that would be much better. Thanks.

    My first time trying to create a "real time" multiplayer game. I've only done turn-based, in multiplayer games, before so I'm not quite sure about all the correct ways to approach this.


Log in to reply
 

Looks like your connection to Colyseus Forum was lost, please wait while we try to reconnect.