code: function GarageServer(socketio, options) {
      var namespace = '/garageserver.io';
  
      this.socketPath = namespace;
      this.io = socketio;
      this.clientSidePrediction = options.clientSidePrediction;
      this.registerSocketEvents(options);
      this.game = new garageServerGame(options, function (state, region) {
          if (!region) {
              socketio.of(namespace).emit('u' ,state);
          } else {
              socketio.of(namespace).in(region).emit('u' ,state);
          }
      });
  }
docs: /*
  options = {
  stateInterval: 45,
  logging: true,
  clientSidePrediction: true,
  interpolation: true,
  interpolationDelay: 100,
  smoothingFactor: 0.3,
  pingInterval: 2000,
  maxUpdateBuffer: 120,
  maxHistorySecondBuffer: 1000,
  worldState: {},
  onPlayerConnect(callback(socket)),
  onPlayerInput(callback(socket, input)),
  onPlayerDisconnect(callback(socket)),
  onPing(callback(socket, data)),
  onEvent(callback(data))
  }
  api methods
  createGarageServer(io, options)
  start()
  stop()
  getPlayers() : [,{ id, state, [,inputs], [,{ states, executionTimes }] }]
  getEntities() :[,{ id, state, [,{ state, executionTime }] }]
  updatePlayerState(id, state)
  updateEntityState(id, state)
  addEntity(id)
  removeEntity(id)
  sendPlayerEvent(id, data)
  sendPlayersEvent(data)