mirror of
https://github.com/genxium/DelayNoMore
synced 2024-12-26 19:58:56 +00:00
Minor fix.
This commit is contained in:
parent
69f0ddc171
commit
d773b57299
@ -1073,17 +1073,19 @@ func (pR *Room) getOrPrefabInputFrameDownsync(inputFrameId int32) *battle.InputF
|
|||||||
}
|
}
|
||||||
|
|
||||||
j2 := j - 1
|
j2 := j - 1
|
||||||
if 0 <= pR.LastAllConfirmedInputFrameId && j2 >= pR.LastAllConfirmedInputFrameId {
|
|
||||||
j2 = pR.LastAllConfirmedInputFrameId
|
|
||||||
}
|
|
||||||
tmp2 := pR.InputsBuffer.GetByFrameId(j2)
|
tmp2 := pR.InputsBuffer.GetByFrameId(j2)
|
||||||
if nil != tmp2 {
|
if nil != tmp2 {
|
||||||
prevInputFrameDownsync := tmp2.(*battle.InputFrameDownsync)
|
prevInputFrameDownsync := tmp2.(*battle.InputFrameDownsync)
|
||||||
for i, _ := range currInputFrameDownsync.InputList {
|
for i, _ := range currInputFrameDownsync.InputList {
|
||||||
currInputFrameDownsync.InputList[i] = (prevInputFrameDownsync.InputList[i] & uint64(15)) // Don't predict attack input!
|
currInputFrameDownsync.InputList[i] = prevInputFrameDownsync.InputList[i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for i, _ := range currInputFrameDownsync.InputList {
|
||||||
|
// Don't predict "btnA & btnB"!
|
||||||
|
currInputFrameDownsync.InputList[i] = (currInputFrameDownsync.InputList[i] & uint64(15))
|
||||||
|
}
|
||||||
|
|
||||||
pR.InputsBuffer.Put(currInputFrameDownsync)
|
pR.InputsBuffer.Put(currInputFrameDownsync)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
File diff suppressed because one or more lines are too long
@ -440,7 +440,7 @@
|
|||||||
"array": [
|
"array": [
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
216.50635094610968,
|
216.6771387800957,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -142,15 +142,27 @@ cc.Class({
|
|||||||
currSelfInput = null;
|
currSelfInput = null;
|
||||||
const joinIndex = self.selfPlayerInfo.JoinIndex;
|
const joinIndex = self.selfPlayerInfo.JoinIndex;
|
||||||
const existingInputFrame = self.recentInputCache.GetByFrameId(inputFrameId);
|
const existingInputFrame = self.recentInputCache.GetByFrameId(inputFrameId);
|
||||||
const previousInputFrameDownsyncWithPrediction = self.getCachedInputFrameDownsyncWithPrediction(inputFrameId - 1);
|
const previousInputFrameDownsync = self.recentInputCache.GetByFrameId(inputFrameId - 1);
|
||||||
previousSelfInput = (null == previousInputFrameDownsyncWithPrediction ? null : previousInputFrameDownsyncWithPrediction.InputList[joinIndex - 1]);
|
previousSelfInput = (null == previousInputFrameDownsync ? null : previousInputFrameDownsync.InputList[joinIndex - 1]);
|
||||||
if (null != existingInputFrame) {
|
if (null != existingInputFrame) {
|
||||||
// This could happen upon either [type#1] or [type#2] forceConfirmation, where "refRenderFrame" is accompanied by some "inputFrameDownsyncs". The check here also guarantees that we don't override history
|
// This could happen upon either [type#1] or [type#2] forceConfirmation, where "refRenderFrame" is accompanied by some "inputFrameDownsyncs". The check here also guarantees that we don't override history
|
||||||
console.log(`noDelayInputFrameId=${inputFrameId} already exists in recentInputCache: recentInputCache=${self._stringifyRecentInputCache(false)}`);
|
console.log(`noDelayInputFrameId=${inputFrameId} already exists in recentInputCache: recentInputCache=${self._stringifyRecentInputCache(false)}`);
|
||||||
return [previousSelfInput, existingInputFrame.InputList[joinIndex - 1]];
|
return [previousSelfInput, existingInputFrame.InputList[joinIndex - 1]];
|
||||||
}
|
}
|
||||||
|
|
||||||
const prefabbedInputList = (null == previousInputFrameDownsyncWithPrediction ? new Array(self.playerRichInfoDict.size).fill(0) : previousInputFrameDownsyncWithPrediction.InputList.slice());
|
const lastAllConfirmedInputFrame = self.recentInputCache.GetByFrameId(self.lastAllConfirmedInputFrameId);
|
||||||
|
const prefabbedInputList = new Array(self.playerRichInfoDict.size).fill(0);
|
||||||
|
// the returned "gopkgs.NewInputFrameDownsync.InputList" is immutable, thus we can only modify the values in "prefabbedInputList"
|
||||||
|
for (let k in prefabbedInputList) {
|
||||||
|
if (null != previousInputFrameDownsync) {
|
||||||
|
prefabbedInputList[k] = previousInputFrameDownsync.InputList[k];
|
||||||
|
}
|
||||||
|
if (0 <= self.lastAllConfirmedInputFrameId && inputFrameId - 1 > self.lastAllConfirmedInputFrameId) {
|
||||||
|
prefabbedInputList[k] = lastAllConfirmedInputFrame.InputList[k];
|
||||||
|
}
|
||||||
|
// Don't predict "btnA & btnB"!
|
||||||
|
prefabbedInputList[k] = (prefabbedInputList[k] & 15);
|
||||||
|
}
|
||||||
currSelfInput = self.ctrl.getEncodedInput(); // When "null == existingInputFrame", it'd be safe to say that the realtime "self.ctrl.getEncodedInput()" is for the requested "inputFrameId"
|
currSelfInput = self.ctrl.getEncodedInput(); // When "null == existingInputFrame", it'd be safe to say that the realtime "self.ctrl.getEncodedInput()" is for the requested "inputFrameId"
|
||||||
prefabbedInputList[(joinIndex - 1)] = currSelfInput;
|
prefabbedInputList[(joinIndex - 1)] = currSelfInput;
|
||||||
while (self.recentInputCache.EdFrameId <= inputFrameId) {
|
while (self.recentInputCache.EdFrameId <= inputFrameId) {
|
||||||
@ -584,7 +596,7 @@ cc.Class({
|
|||||||
const jsMeleeBulletsArr = [];
|
const jsMeleeBulletsArr = [];
|
||||||
for (let k in pbRdf.meleeBullets) {
|
for (let k in pbRdf.meleeBullets) {
|
||||||
const pbBullet = pbRdf.meleeBullets[k];
|
const pbBullet = pbRdf.meleeBullets[k];
|
||||||
const jsBullet = gopkgs.NewMeleeBullet(pbBullet.battleLocalId, pbBullet.startupFrames, pbBullet.activeFrames, pbBullet.recoveryFrames, pbBullet.recoveryFramesOnBlock, pbBullet.recoveryFramesOnHit, pbBullet.hitStunFrames, pbBullet.blockStunFrames, pbBullet.releaseTriggerType, pbBullet.damage, pbBullet.offenderJoinIndex, pbBullet.offenderPlayerId, pbBullet.pushback, pbBullet.hitboxOffset, pbBullet.selfMoveforwardX, pbBullet.selfMoveforwardY, pbBullet.hitboxSizeX, pbBullet.hitboxSizeY);
|
const jsBullet = gopkgs.NewMeleeBulletJs(pbBullet.battleLocalId, pbBullet.startupFrames, pbBullet.activeFrames, pbBullet.recoveryFrames, pbBullet.recoveryFramesOnBlock, pbBullet.recoveryFramesOnHit, pbBullet.hitStunFrames, pbBullet.blockStunFrames, pbBullet.releaseTriggerType, pbBullet.damage, pbBullet.offenderJoinIndex, pbBullet.offenderPlayerId, pbBullet.pushback, pbBullet.hitboxOffset, pbBullet.selfMoveforwardX, pbBullet.selfMoveforwardY, pbBullet.hitboxSizeX, pbBullet.hitboxSizeY);
|
||||||
jsMeleeBulletsArr.push(jsBullet);
|
jsMeleeBulletsArr.push(jsBullet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1066,22 +1078,6 @@ othersForcedDownsyncRenderFrame=${JSON.stringify(othersForcedDownsyncRenderFrame
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getCachedInputFrameDownsyncWithPrediction(inputFrameId) {
|
|
||||||
const self = this;
|
|
||||||
const inputFrameDownsync = self.recentInputCache.GetByFrameId(inputFrameId); // "battle.InputFrameDownsync" in "jsexport"
|
|
||||||
if (null != inputFrameDownsync && inputFrameId > self.lastAllConfirmedInputFrameId) {
|
|
||||||
const lastAllConfirmedInputFrame = self.recentInputCache.GetByFrameId(self.lastAllConfirmedInputFrameId);
|
|
||||||
if (null != lastAllConfirmedInputFrame) {
|
|
||||||
for (let i = 0; i < inputFrameDownsync.InputList.length; ++i) {
|
|
||||||
if (i == (self.selfPlayerInfo.JoinIndex - 1)) continue;
|
|
||||||
inputFrameDownsync.InputList[i] = (lastAllConfirmedInputFrame.InputList[i] & 15); // Don't predict attack input!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return inputFrameDownsync;
|
|
||||||
},
|
|
||||||
|
|
||||||
rollbackAndChase(renderFrameIdSt, renderFrameIdEd, collisionSys, collisionSysMap, isChasing) {
|
rollbackAndChase(renderFrameIdSt, renderFrameIdEd, collisionSys, collisionSysMap, isChasing) {
|
||||||
const self = this;
|
const self = this;
|
||||||
let prevLatestRdf = null,
|
let prevLatestRdf = null,
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
},
|
},
|
||||||
"encryptJs": true,
|
"encryptJs": true,
|
||||||
"excludeScenes": [
|
"excludeScenes": [
|
||||||
"368b10b6-88fc-423c-9fcd-545d9fc673bd"
|
"8491a86c-bec9-4813-968a-128ca01639e0"
|
||||||
],
|
],
|
||||||
"fb-instant-games": {},
|
"fb-instant-games": {},
|
||||||
"includeSDKBox": false,
|
"includeSDKBox": false,
|
||||||
|
@ -68,7 +68,7 @@
|
|||||||
"shelter_z_reducer",
|
"shelter_z_reducer",
|
||||||
"shelter"
|
"shelter"
|
||||||
],
|
],
|
||||||
"last-module-event-record-time": 1671346284377,
|
"last-module-event-record-time": 1672287736326,
|
||||||
"simulator-orientation": false,
|
"simulator-orientation": false,
|
||||||
"simulator-resolution": {
|
"simulator-resolution": {
|
||||||
"height": 640,
|
"height": 640,
|
||||||
|
@ -542,7 +542,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
|
|||||||
}
|
}
|
||||||
if landedOnGravityPushback {
|
if landedOnGravityPushback {
|
||||||
thatPlayerInNextFrame.InAir = false
|
thatPlayerInNextFrame.InAir = false
|
||||||
if currPlayerDownsync.InAir && 0 > currPlayerDownsync.VelY {
|
if currPlayerDownsync.InAir && 0 >= currPlayerDownsync.VelY {
|
||||||
// fallStopping
|
// fallStopping
|
||||||
thatPlayerInNextFrame.VelX = 0
|
thatPlayerInNextFrame.VelX = 0
|
||||||
thatPlayerInNextFrame.VelY = 0
|
thatPlayerInNextFrame.VelY = 0
|
||||||
|
Loading…
Reference in New Issue
Block a user