okok colpa mia non mi sono spiegato abbastanza.
Non ho alcun problema di "scattosità", dei proiettili invio solo luogo di sparo e direzione, ogni client lo fa muovere da sé.
Dei giocatori invio le coordinate ogni 3 o 5 step, e ogni client fa l'animazione di spostamento del giocatore a quelle coordinate, così ho un "ritardo controllato".
L'unico problema di questo approccio sono appunto i proiettili.
Il server fa tutti i calcoli da sé, quindi nel server il proiettile segue una certa traiettoria, e quando collide si distrugge/esplode, inviando ai clients l'informazione del fatto che si è distrutto.
Però considerato il ritardo della posizione del giocatore sussistono i seguenti problemi:
- se dico che il giocatore spara in una certa direzione la traiettoria sarà spostata del ritardo del giocatore stesso, con potenziali trapassa muri o danneggia qualcuno passando a 4 pixels di distanza
- posso far partire il proiettile dalle corrette coordinate di sparo, ma a quel punto si vedrebbero giocatori che sparano dal vuoto invece che dalla loro posizione (giustificabile con qualche effetto particellare data l'idea di base fantasy xD)
- posso correggere la posizione del giocatore in quel dato istante (ovvero annullare il ritardo nello spostamento) per poi sparare, ma questo causerebbe gente che scatta in avanti in un istante.
Tutti problemi che utilizzando una linea istantanea invece di un proiettile non sussisterebbero
Tutorials di riferimento
https://www.youtube.com/watch?v=4_bhmfhN20Y < gestione del movimento
https://www.youtube.com/watch?v=0H5DNFSXTNk < gestione client-server
Note:
il gioco si "svolge" completamente nel server. I clients ricevono variazioni nell'input e le inviano al server (così facendo il movimento del mio oggetto giocatore subisce lo stesso ritardo degli altri oggetti giocatore, 3 step)
Alcune cose che non influiscono nella matematica del gioco come le ombre dinamiche, effetti particellari vari, textures animate e la telecamera ovviamente sono gestite dai clients. Il server invece ha una grafica minimalista limitata a quello che "accade" nel gioco, ovvero tanti cerchi per giocatori, proiettili etcc etcc