projectile hits player

Проверку Game.localPlayer.id != playerId нет необходимости выполнять при каждом перемещении снаряда, её можно выполнить один раз до строчки
var unsubscribe = this.position.onValue(function(v) {
т.к. при перемещении снаряда значение Game.localPlayer.id != playerId не изменяется. 
А ещё лучше вычислить это значение до вызова new Projectile и передать туда это значение вместо playerId.