From c7e66e5f5e3c323c8f53e1e17ff31d3389e4cc3d Mon Sep 17 00:00:00 2001 From: Jeremiah Billmann Date: Wed, 17 Jul 2013 21:45:00 -0400 Subject: [PATCH] Resolved #19 --- src/server/controllers/entitycontroller.js | 5 +++-- src/server/controllers/playercontroller.js | 6 +++--- src/server/entities/entity.js | 5 +++-- src/server/entities/player.js | 4 ++-- src/server/garageserver.io.js | 3 +++ src/server/garageservergame.js | 4 ++-- 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/server/controllers/entitycontroller.js b/src/server/controllers/entitycontroller.js index c6a14dd..11f12d8 100644 --- a/src/server/controllers/entitycontroller.js +++ b/src/server/controllers/entitycontroller.js @@ -2,8 +2,9 @@ var entity = require('../entities/entity'); exports = module.exports = EntityController; -function EntityController () { +function EntityController (maxHistorySecondBuffer) { this.entities = []; + this.maxHistorySecondBuffer = maxHistorySecondBuffer; } EntityController.prototype = { @@ -19,7 +20,7 @@ EntityController.prototype = { }); if (!entityFound) { - newEntity = new entity(id); + newEntity = new entity(id, this.maxHistorySecondBuffer); this.entities.push(newEntity); } return newEntity; diff --git a/src/server/controllers/playercontroller.js b/src/server/controllers/playercontroller.js index 64b3803..ceff25e 100644 --- a/src/server/controllers/playercontroller.js +++ b/src/server/controllers/playercontroller.js @@ -3,8 +3,8 @@ var entityController = require('./entitycontroller'), exports = module.exports = PlayerController; -function PlayerController () { - entityController.call(this); +function PlayerController (maxHistorySecondBuffer) { + entityController.call(this, maxHistorySecondBuffer); } PlayerController.prototype = Object.create(entityController.prototype); @@ -21,7 +21,7 @@ PlayerController.prototype.add = function (client) { }); if (!playerFound) { - newPlayer = new player(client); + newPlayer = new player(client, this.maxHistorySecondBuffer); this.entities.push(newPlayer); } return newPlayer; diff --git a/src/server/entities/entity.js b/src/server/entities/entity.js index 8992eb3..8578e97 100644 --- a/src/server/entities/entity.js +++ b/src/server/entities/entity.js @@ -2,10 +2,11 @@ var history = require('./history'); exports = module.exports = Entity; -function Entity (id) { +function Entity (id, maxHistorySecondBuffer) { this.state = {}; this.sequence = 1; this.id = id; + this.maxHistorySecondBuffer = maxHistorySecondBuffer; this.stateHistory = []; } @@ -19,7 +20,7 @@ Entity.prototype = { var minTime, spliceTo = 0, newHistory = new history(state, executionTime); this.stateHistory.push(newHistory); - minTime = this.stateHistory[this.stateHistory.length - 1].executionTime - 1000; + minTime = this.stateHistory[this.stateHistory.length - 1].executionTime - this.maxHistorySecondBuffer; for (var i = 0; i < this.stateHistory.length; i ++) { if (this.stateHistory[i].executionTime > minTime) { diff --git a/src/server/entities/player.js b/src/server/entities/player.js index 2d795ea..38c1186 100644 --- a/src/server/entities/player.js +++ b/src/server/entities/player.js @@ -2,8 +2,8 @@ var entity = require('./entity'); exports = module.exports = Player; -function Player (client) { - entity.call(this, client.id); +function Player (client, maxHistorySecondBuffer) { + entity.call(this, client.id, maxHistorySecondBuffer); this.client = client; this.inputs = []; } diff --git a/src/server/garageserver.io.js b/src/server/garageserver.io.js index d865a65..6894d40 100644 --- a/src/server/garageserver.io.js +++ b/src/server/garageserver.io.js @@ -9,6 +9,8 @@ options = { interpolationDelay: 100, smoothingFactor: 0.3, pingInterval: 2000, + maxUpdateBuffer: 120, + maxHistorySecondBuffer: 1000, worldState: {}, onPlayerConnect: function (socket), onPlayerInput: function (socket, input), @@ -53,6 +55,7 @@ GarageServer.prototype.registerSocketEvents = function (options) { interpolationDelay: options.interpolationDelay ? options.interpolationDelay : 100, pingInterval: options.pingInterval ? options.pingInterval : 2000, clientSidePrediction: options.clientSidePrediction ? options.clientSidePrediction : false, + maxUpdateBuffer: options.maxUpdateBuffer ? options.maxUpdateBuffer : 120, worldState: options.worldState ? options.worldState : {} }); self.onPlayerConnect(socket, options); diff --git a/src/server/garageservergame.js b/src/server/garageservergame.js index 9f55540..039c720 100644 --- a/src/server/garageservergame.js +++ b/src/server/garageservergame.js @@ -4,12 +4,12 @@ var playerController = require('./controllers/playercontroller'), exports = module.exports = GarageServerGame; function GarageServerGame(options, broadcastCallback) { - this.playerController = new playerController(); - this.entityController = new entityController(); this.options = options; this.startTime = 0; this.stateInterval = options.stateInterval ? options.stateInterval : 45; this.stateIntervalId = 0; + this.playerController = new playerController(this.options.maxHistorySecondBuffer ? this.options.maxHistorySecondBuffer : 1000); + this.entityController = new entityController(this.options.maxHistorySecondBuffer ? this.options.maxHistorySecondBuffer : 1000); this.broadcastCallback = broadcastCallback; }