mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
improve jitter handle and fix item pickup desync spam
This commit is contained in:
parent
f59348808d
commit
df8aca4cbe
5 changed files with 33 additions and 20 deletions
|
|
@ -1293,21 +1293,25 @@ class MarbleWorld extends Scheduler {
|
|||
advanceTimeState.ticks = ourLastMoveTime;
|
||||
|
||||
// if (marbleNeedsPrediction & (1 << Net.clientId) > 0) { // Only for our clients pls
|
||||
// if (qm != null) {
|
||||
// if (qm != null) {
|
||||
// var mvs = qm.powerupStates.copy();
|
||||
for (pw in marble.level.powerUps) {
|
||||
// var val = mvs.shift();
|
||||
// if (pw.lastPickUpTime != val)
|
||||
// Console.log('Revert powerup pickup: ${pw.lastPickUpTime} -> ${val}');
|
||||
pw.lastPickUpTime = powerupPredictions.getState(pw.netIndex);
|
||||
// Console.log('Revert powerup pickup: ${pw.lastPickUpTime} -> ${val}');
|
||||
|
||||
if (pw.pickupClient != -1 && marbleNeedsPrediction & (1 << pw.pickupClient) > 0)
|
||||
pw.lastPickUpTime = powerupPredictions.getState(pw.netIndex);
|
||||
}
|
||||
var huntMode:HuntMode = cast this.gameMode;
|
||||
if (@:privateAccess huntMode.activeGemSpawnGroup != null) {
|
||||
for (activeGem in @:privateAccess huntMode.activeGemSpawnGroup) {
|
||||
huntMode.setGemHiddenStatus(activeGem, gemPredictions.getState(activeGem));
|
||||
var g = @:privateAccess huntMode.gemSpawnPoints[activeGem].gem;
|
||||
if (g != null && g.pickUpClient != -1 && marbleNeedsPrediction & (1 << g.pickUpClient) > 0)
|
||||
huntMode.setGemHiddenStatus(activeGem, gemPredictions.getState(activeGem));
|
||||
}
|
||||
}
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
ackLag = ourQueuedMoves.length;
|
||||
|
|
|
|||
|
|
@ -369,6 +369,9 @@ class HuntMode extends NullMode {
|
|||
|
||||
@:privateAccess level.playGui.incrementPlayerScore(packet.clientId, packet.scoreIncr);
|
||||
}
|
||||
if (this.level.isMultiplayer && Net.isClient) {
|
||||
gem.pickUpClient = @:privateAccess marble.connection == null ? Net.clientId : @:privateAccess marble.connection.id;
|
||||
}
|
||||
}
|
||||
|
||||
function setupGems() {
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class MoveManager {
|
|||
var maxMoves = 45;
|
||||
|
||||
var serverTargetMoveListSize = 3;
|
||||
var serverMaxMoveListSize = 5;
|
||||
var serverMaxMoveListSize = 8;
|
||||
var serverAvgMoveListSize = 3.0;
|
||||
var serverSmoothMoveAvg = 0.15;
|
||||
var serverMoveListSizeSlack = 1.0;
|
||||
|
|
@ -179,12 +179,12 @@ class MoveManager {
|
|||
&& queuedMoves.length < serverTargetMoveListSize
|
||||
&& 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;
|
||||
}
|
||||
// serverAbnormalMoveCount++;
|
||||
// if (serverAbnormalMoveCount > 3) {
|
||||
// serverTargetMoveListSize += 1;
|
||||
// if (serverTargetMoveListSize > serverMaxMoveListSize)
|
||||
// serverTargetMoveListSize = serverMaxMoveListSize;
|
||||
// }
|
||||
// Send null move
|
||||
return null;
|
||||
}
|
||||
|
|
@ -196,14 +196,14 @@ class MoveManager {
|
|||
queuedMoves.pop();
|
||||
}
|
||||
serverAvgMoveListSize = serverTargetMoveListSize;
|
||||
serverAbnormalMoveCount++;
|
||||
if (serverAbnormalMoveCount > 3) {
|
||||
serverTargetMoveListSize -= 1;
|
||||
if (serverTargetMoveListSize < serverDefaultMinTargetMoveListSize)
|
||||
serverTargetMoveListSize = serverDefaultMinTargetMoveListSize;
|
||||
} else {
|
||||
serverAbnormalMoveCount = 0;
|
||||
}
|
||||
// serverAbnormalMoveCount++;
|
||||
// if (serverAbnormalMoveCount > 3) {
|
||||
// serverTargetMoveListSize -= 1;
|
||||
// if (serverTargetMoveListSize < serverDefaultMinTargetMoveListSize)
|
||||
// serverTargetMoveListSize = serverDefaultMinTargetMoveListSize;
|
||||
// } else {
|
||||
// serverAbnormalMoveCount = 0;
|
||||
// }
|
||||
}
|
||||
}
|
||||
if (queuedMoves.length == 0) {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ class Gem extends DtsObject {
|
|||
public var pickedUp:Bool;
|
||||
|
||||
public var netIndex:Int;
|
||||
public var pickUpClient:Int = -1;
|
||||
|
||||
var gemColor:String;
|
||||
|
||||
|
|
@ -76,6 +77,7 @@ class Gem extends DtsObject {
|
|||
|
||||
override function reset() {
|
||||
this.pickedUp = false;
|
||||
this.pickUpClient = -1;
|
||||
this.setOpacity(1);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,10 @@ abstract class PowerUp extends DtsObject {
|
|||
pickupTicks = pickupPacket.serverTicks;
|
||||
}
|
||||
|
||||
if (level.isMultiplayer && Net.isClient) {
|
||||
pickupClient = @:privateAccess marble.connection != null ? @:privateAccess marble.connection.id : Net.clientId;
|
||||
}
|
||||
|
||||
this.lastPickUpTime = timeState.currentAttemptTime;
|
||||
if (this.autoUse)
|
||||
this.use(marble, timeState);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue