Devo sincronizzare il movimento di più giocatori su Internet e sto cercando di capire il modo più sicuro per farlo.
Il gioco è basato su tessere, puoi muoverti solo in 4 direzioni e ogni mossa sposta lo sprite di 32px (nel corso del tempo ovviamente). Ora, se semplicemente inviassi questa azione di spostamento al server, che la trasmetterebbe a tutti i giocatori, mentre il tasto walk viene tenuto premuto, per continuare a camminare, devo prendere questo comando successivo, inviarlo al server, e per tutti i clienti, in tempo, o il movimento non sarà più regolare. L'ho visto in altri giochi e può diventare brutto abbastanza velocemente, anche senza ritardi. Quindi mi chiedo se questa è anche un'opzione praticabile. Questo sembra un ottimo metodo per giocatore singolo, dato che è facile, diretto (basta fare la prossima azione di movimento in tempo e aggiungerla a un elenco), e puoi facilmente aggiungere il movimento del mouse (facendo clic su un riquadro), per aggiungere un percorso a una coda, che è stato seguito.
L'altra cosa che mi è venuta in mente è stata l'invio delle informazioni che qualcuno ha iniziato a muoversi in una direzione, e ancora una volta si è fermato o ha cambiato la direzione, insieme alla posizione, in modo che lo sprite appaia nella posizione corretta, o piuttosto in modo che la posizione può essere riparata se è sbagliata. Questo (si spera) dovrebbe creare problemi solo se qualcuno è davvero in ritardo, nel qual caso è prevedibile. Per far funzionare tutto ciò, avrei bisogno di una sorta di coda, in cui i cambi di direzione in entrata e le cose vengono salvate, quindi lo sprite sa dove andare, dopo che il movimento corrente alla tessera successiva è terminato. Questo potrebbe effettivamente funzionare, ma sembra un po 'complicato. Anche se potrebbe essere l'unico modo per farlo, senza il rischio di balbettare. Se viene ricevuto un arresto o un cambio di direzione sul lato client, esso " viene salvato in una coda e il carattere continua a spostarsi sulle coordinate specificate, prima di fermarsi o cambiare direzione. Se il nuovo comando arriva troppo tardi, ci sarà anche la balbuzie ovviamente ...
Sto facendo fatica a decidere un metodo e non sono ancora riuscito a trovare esempi per questo. Il mio problema principale è mantenere fluido il movimento delle tessere, motivo per cui altri argomenti riguardanti la sincronizzazione dei movimenti basati su pixel non aiutano troppo.
Qual è il modo "standard" per farlo?