Sto cercando di creare un gioco in multiplayer in tempo reale su node.js con framework espresso e libreria socket.io. Ma non riesco a rendere la mia logica lato server indipendente dalle interazioni con il client. Voglio che il client interagisca solo quando io (logica lato server) voglio ma non riesco a essere in grado di farlo. Ad esempio:
Voglio 2 utenti a inizia a giocare. Devo innanzitutto inizializzare il gioco, come impostare l'ambiente, le variabili e tutto il resto .. tutto in un separato, chiamiamolo: The Game Logic. Solo allora posso "consentire" ai client di interagire.
Ma come dovrei continuare con la mia logica di gioco quando il mio evento socket.on
sta "chiamando i colpi"?
Con socket.io devi definire trigger come
io.sockets.on('connection', function(socket) {
socket.on('event', function(data) {
//supposed this is fired when client hits an "interact with X" button
});
}
Tutta la mia logica sembra dipendere da questi trigger. Volevo solo che il client fosse in grado di attivare quell'evento quando voglio (dopo aver impostato il gioco env etc), ma definendolo in questo modo, separato dalla mia logica di gioco, crea problemi come come faccio a trasferire il controllo di esecuzione da socket alla mia logica di gioco ? E anche se ci riuscissi, c'è tutto il problema del "chiamare i colpi" del cliente. Non ho quindi alcun controllo quando il cliente potrebbe voler interagire.
Qualche consiglio che dovrei fare?