mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
somewhat better jitter handling
This commit is contained in:
parent
afc80769c5
commit
568d6c0fac
2 changed files with 24 additions and 3 deletions
|
|
@ -1811,14 +1811,18 @@ class Marble extends GameObject {
|
||||||
var nextMove = this.connection.getNextMove();
|
var nextMove = this.connection.getNextMove();
|
||||||
// trace('Moves left: ${@:privateAccess this.connection.moveManager.queuedMoves.length}');
|
// trace('Moves left: ${@:privateAccess this.connection.moveManager.queuedMoves.length}');
|
||||||
if (nextMove == null) {
|
if (nextMove == null) {
|
||||||
var axis = getMarbleAxis()[1];
|
var axis = moveMotionDir != null ? moveMotionDir : getMarbleAxis()[1];
|
||||||
var innerMove = new Move();
|
var innerMove = lastMove;
|
||||||
innerMove.d = new Vector(0, 0);
|
if (innerMove == null) {
|
||||||
|
innerMove = new Move();
|
||||||
|
innerMove.d = new Vector(0, 0);
|
||||||
|
}
|
||||||
move = new NetMove(innerMove, axis, timeState, recvServerTick, 65535);
|
move = new NetMove(innerMove, axis, timeState, recvServerTick, 65535);
|
||||||
} else {
|
} else {
|
||||||
move = nextMove;
|
move = nextMove;
|
||||||
moveMotionDir = nextMove.motionDir;
|
moveMotionDir = nextMove.motionDir;
|
||||||
moveId = nextMove.id;
|
moveId = nextMove.id;
|
||||||
|
lastMove = move.move;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (move == null && !this.controllable) {
|
if (move == null && !this.controllable) {
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,8 @@ class MoveManager {
|
||||||
var serverAvgMoveListSize = 3.0;
|
var serverAvgMoveListSize = 3.0;
|
||||||
var serverSmoothMoveAvg = 0.15;
|
var serverSmoothMoveAvg = 0.15;
|
||||||
var serverMoveListSizeSlack = 1.0;
|
var serverMoveListSizeSlack = 1.0;
|
||||||
|
var serverDefaultMinTargetMoveListSize = 3;
|
||||||
|
var serverAbnormalMoveCount = 0;
|
||||||
|
|
||||||
public var stall = false;
|
public var stall = false;
|
||||||
|
|
||||||
|
|
@ -168,6 +170,13 @@ class MoveManager {
|
||||||
if (serverAvgMoveListSize < serverTargetMoveListSize - serverMoveListSizeSlack
|
if (serverAvgMoveListSize < serverTargetMoveListSize - serverMoveListSizeSlack
|
||||||
&& queuedMoves.length < serverTargetMoveListSize
|
&& queuedMoves.length < serverTargetMoveListSize
|
||||||
&& queuedMoves.length != 0) {
|
&& queuedMoves.length != 0) {
|
||||||
|
serverAvgMoveListSize = Math.max(Std.int(serverAvgMoveListSize + serverMoveListSizeSlack + 0.5), queuedMoves.length);
|
||||||
|
serverAbnormalMoveCount++;
|
||||||
|
if (serverAbnormalMoveCount > 3) {
|
||||||
|
serverTargetMoveListSize += 1;
|
||||||
|
if (serverTargetMoveListSize > serverMaxMoveListSize)
|
||||||
|
serverTargetMoveListSize = serverMaxMoveListSize;
|
||||||
|
}
|
||||||
// Send null move
|
// Send null move
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
@ -179,6 +188,14 @@ class MoveManager {
|
||||||
queuedMoves.pop();
|
queuedMoves.pop();
|
||||||
}
|
}
|
||||||
serverAvgMoveListSize = serverTargetMoveListSize;
|
serverAvgMoveListSize = serverTargetMoveListSize;
|
||||||
|
serverAbnormalMoveCount++;
|
||||||
|
if (serverAbnormalMoveCount > 3) {
|
||||||
|
serverTargetMoveListSize -= 1;
|
||||||
|
if (serverTargetMoveListSize < serverDefaultMinTargetMoveListSize)
|
||||||
|
serverTargetMoveListSize = serverDefaultMinTargetMoveListSize;
|
||||||
|
} else {
|
||||||
|
serverAbnormalMoveCount = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (queuedMoves.length == 0) {
|
if (queuedMoves.length == 0) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue