Currently I have setup BePU as an Authoritative Server and running it at 60FPS. When my character is near 0,0 - 50,50 I update no problem every 100ms (sending 10 updates a second to client).... Once my Character hits 100,100 BePu is only updating him once every 200ms... when he hits 200,200 its around 300-400ms. Is there a reason for this? If so is there a setting I can set to stop this from happening? I'm extreme new to this so any help would be great.
Here is my code for the Space:
Code: Select all
//Create 4 Threads
_parallelLooper = new ParallelLooper();
_parallelLooper.AddThread();
_parallelLooper.AddThread();
_parallelLooper.AddThread();
_parallelLooper.AddThread();
//Create World
_space = new Space(_parallelLooper)
{
ForceUpdater = {Gravity = new Vector3(0, -9.81f, 0)},
TimeStepSettings = {TimeStepDuration = 1f/60f},
};
//Setup World
//Make Characters Not Collide With Characters
var collisionPair = new CollisionGroupPair(_charactersCollisionGroup, _charactersCollisionGroup);
CollisionRules.CollisionGroupRules.Add(collisionPair, CollisionRule.NoBroadPhase);
Code: Select all
public void Run(object threadContext)
{
var timer = new Stopwatch();
timer.Start();
_isRunning = true;
while (_isRunning)
{
//Sleep If No Players
if (_region.NumberOfPlayers <= 0)
{
Thread.Sleep(1000);
timer.Restart();
continue;
}
//Sleep for X Amount of Time To Save Processer
var sleepTime = (int) ((1000f / 60f) - timer.Elapsed.Milliseconds);
if (sleepTime > 0)
{
Thread.Sleep(sleepTime);
}
var updateTime = timer.Elapsed;
timer.Restart();
Update(updateTime);
}
}
private void Update(TimeSpan elapsed)
{
lock (this)
{
_space.Update();
}
}
My Character:
Code: Select all
//Create Spawn Point
var spawnPoint = new Vector3(obj.Position.X, obj.Position.Y, obj.Position.Z);
//Create Character Controller
var characterController = new CharacterController(spawnPoint, CharacterHeight, CharacterHeight - 0.6f, CharacterWidth, 0);
characterController.Body.CollisionInformation.CollisionRules.Group = _charactersCollisionGroup;
//Set Character Controller
physicsObject.CharacterController = characterController;
//Add To World
_space.Add(characterController);
--James