game-state-sync
Tools for keeping clients in sync with server game state
Installing
npm install game-state-sync
Example usage
Same process
var gss = require('game-state-sync');
var server = new gss.reliable.Server();
var client = new gss.reliable.Client();
server.on('sendData', (data) => {
client.emit('data', data);
});
client.on('sendData', (data) => {
server.emit('data', data);
});
client.on('newState', (state) => {
console.log(state);
});
server.publish({ number: 42 });
TCP
Server
var net = require('net');
var ndjson = require('ndjson');
var gss = require('game-state-sync');
net.createServer((socket) => {
var stringify = ndjson.stringify();
var parse = ndjson.parse();
stringify.pipe(socket).pipe(parse);
var server = new gss.reliable.Server();
server.on('sendData', (data) => {
stringify.write(data);
});
parse.on('data', (data) => {
server.emit('data', data);
});
var counter = 1;
setInterval(() => {
server.publish({ number: counter++ });
}, 1000);
})
.listen(22000)
Client
var net = require('net');
var ndjson = require('ndjson');
var gss = require('game-state-sync');
var stringify = ndjson.stringify();
var parse = ndjson.parse();
var socket = net.connect(22000, 'localhost');
stringify.pipe(socket).pipe(parse);
var client = new gss.reliable.Client();
client.on('sendData', (data) => {
stringify.write(data);
});
parse.on('data', (data) => {
client.emit('data', data);
});
client.on('newState', (state) => {
console.log(state);
});