move sync??

This commit is contained in:
RandomityGuy 2024-01-30 00:59:47 +05:30
parent 015588feb0
commit 43181b687c
3 changed files with 7 additions and 3 deletions

View file

@ -1725,6 +1725,7 @@ class Marble extends GameObject {
var moveId = 65535; var moveId = 65535;
if (!this.controllable && this.connection != null && Net.isHost) { if (!this.controllable && this.connection != null && Net.isHost) {
var nextMove = this.connection.moveManager.getNextMove(); var nextMove = this.connection.moveManager.getNextMove();
// trace('Moves left: ${@:privateAccess this.connection.moveManager.queuedMoves.length}');
if (nextMove == null) { if (nextMove == null) {
var axis = getMarbleAxis()[1]; var axis = getMarbleAxis()[1];
var innerMove = new Move(); var innerMove = new Move();

View file

@ -1058,7 +1058,7 @@ class MarbleWorld extends Scheduler {
var ackLag = @:privateAccess Net.clientConnection.moveManager.queuedMoves.length; var ackLag = @:privateAccess Net.clientConnection.moveManager.queuedMoves.length;
var mvStored = null; var mvStored = null;
if (!lastMoves.ourMoveApplied) if (!lastMoves.ourMoveApplied)
mvStored = Net.clientConnection.moveManager.acknowledgeMove(ourLastMove.move.id); mvStored = Net.clientConnection.moveManager.acknowledgeMove(ourLastMove.move.id, timeState);
else else
return; return;

View file

@ -35,8 +35,9 @@ class MoveManager {
var nextMoveId:Int; var nextMoveId:Int;
var lastMove:NetMove; var lastMove:NetMove;
var lastAckMoveId:Int = -1; var lastAckMoveId:Int = -1;
var ackRTT:Int = -1;
static var maxMoves = 45; var maxMoves = 45;
public function new(connection:ClientConnection) { public function new(connection:ClientConnection) {
queuedMoves = []; queuedMoves = [];
@ -153,7 +154,7 @@ class MoveManager {
} }
} }
public function acknowledgeMove(m:Int) { public function acknowledgeMove(m:Int, timeState:TimeState) {
if (m == 65535 || m == -1) if (m == 65535 || m == -1)
return null; return null;
if (m <= lastAckMoveId) if (m <= lastAckMoveId)
@ -168,6 +169,8 @@ class MoveManager {
if (m == queuedMoves[0].id) { if (m == queuedMoves[0].id) {
delta = queuedMoves[0].id - lastAckMoveId; delta = queuedMoves[0].id - lastAckMoveId;
mv = queuedMoves.shift(); mv = queuedMoves.shift();
ackRTT = timeState.ticks - mv.timeState.ticks;
maxMoves = Std.int(ackRTT * 1.5);
} }
lastAckMoveId = m; lastAckMoveId = m;
return mv; return mv;