diff --git a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs index 0db022f..dbf5a0f 100644 --- a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs +++ b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs @@ -14,6 +14,10 @@ namespace AxiReplay /// 服务器远端当前帧 /// public int mRemoteFrameIdx { get; private set; } + /// + /// 服务器远端当前提前量 + /// + public int mRemoteForwardCount { get; private set; } /// /// Remote 2 Client Frame Gap /// @@ -110,19 +114,27 @@ namespace AxiReplay public int GetSkipFrameCount() { - var frameGap = mDiffFrameCount; - if (frameGap > 10000) return 0; - int skip = 0; - - if (frameGap <= 2) skip = 0; - if (frameGap > 2 && frameGap < 6) skip = 1 + 1; - else if (frameGap > 7 && frameGap < 12) skip = 2 + 1; - else if (frameGap > 13 && frameGap < 20) skip = 3 + 1; - else skip = frameGap - 2; - - + //本地队列差异高于服务器提前量的值 + int moreNum = mDiffFrameCount - mRemoteForwardCount; + if (mDiffFrameCount > short.MaxValue) skip = 0; + else if (moreNum <= 1) skip = 0; + else if (moreNum <= 3) skip = 2; + else if (moreNum <= 6) skip = 2; + else if (moreNum <= 20) skip = moreNum / 2; //20帧以内,平滑跳帧数 + else skip = moreNum;//完全追上 return skip; + + //var frameGap = mDiffFrameCount; + //if (frameGap > 10000) return 0; + //if (frameGap <= 2) skip = 0; + //if (frameGap > 2 && frameGap < 6) skip = 1 + 1; + //else if (frameGap > 7 && frameGap < 12) skip = 2 + 1; + //else if (frameGap > 13 && frameGap < 20) skip = 3 + 1; + //else skip = frameGap - 2; + + + //return skip; } } } diff --git a/AxibugEmuOnline.Client/Assets/Script/App.cs b/AxibugEmuOnline.Client/Assets/Script/App.cs index cf88d71..b970a42 100644 --- a/AxibugEmuOnline.Client/Assets/Script/App.cs +++ b/AxibugEmuOnline.Client/Assets/Script/App.cs @@ -104,7 +104,7 @@ namespace AxibugEmuOnline.Client.ClientCore yield break; int platform = 0; - bool bTest = true; + bool bTest = false; if (bTest) { yield return null; diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs index aff4956..dae7063 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs @@ -25,6 +25,9 @@ namespace AxibugEmuOnline.Client private void Start() { + //رմֱͬ + QualitySettings.vSyncCount = 0; + //Ϊ60֡ Application.targetFrameRate = 60; VideoProvider.NesEmu = this; AudioProvider.NesEmu = this; diff --git a/AxibugEmuOnline.Client/Assets/Script/Protobuf/ProtobufAxibugEmuOnline.cs b/AxibugEmuOnline.Client/Assets/Script/Protobuf/ProtobufAxibugEmuOnline.cs index 55073cb..20101a4 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Protobuf/ProtobufAxibugEmuOnline.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Protobuf/ProtobufAxibugEmuOnline.cs @@ -66,60 +66,61 @@ namespace AxibugProtobuf { "Zm8iSwoVUHJvdG9idWZfU2NyZW5uX0ZyYW1lEg4KBlJvb21JRBgBIAEoBRIP", "CgdGcmFtZUlEGAIgASgFEhEKCVJhd0JpdG1hcBgDIAEoDCJJCiNQcm90b2J1", "Zl9Sb29tX1NpbmdsZVBsYXllcklucHV0RGF0YRIPCgdGcmFtZUlEGAEgASgN", - "EhEKCUlucHV0RGF0YRgCIAEoDSJkCidQcm90b2J1Zl9Sb29tX1N5bl9Sb29t", - "RnJhbWVBbGxJbnB1dERhdGESDwoHRnJhbWVJRBgBIAEoDRIRCglJbnB1dERh", - "dGEYAiABKAQSFQoNU2VydmVyRnJhbWVJRBgDIAEoDSJVChRQcm90b2J1Zl9S", - "b29tX0NyZWF0ZRIRCglHYW1lUm9tSUQYASABKAUSEwoLR2FtZVJvbUhhc2gY", - "AiABKAkSFQoNSm9pblBsYXllcklkeBgDIAEoBSJZChlQcm90b2J1Zl9Sb29t", - "X0NyZWF0ZV9SRVNQEjwKDFJvb21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1Z1By", - "b3RvYnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iNwoSUHJvdG9idWZfUm9v", - "bV9Kb2luEg4KBlJvb21JRBgBIAEoBRIRCglQbGF5ZXJOdW0YAiABKAUiVwoX", - "UHJvdG9idWZfUm9vbV9Kb2luX1JFU1ASPAoMUm9vbU1pbmlJbmZvGAEgASgL", - "MiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyIlChNQ", - "cm90b2J1Zl9Sb29tX0xlYXZlEg4KBlJvb21JRBgBIAEoBSIqChhQcm90b2J1", - "Zl9Sb29tX0xlYXZlX1JFU1ASDgoGUm9vbUlEGAEgASgFImEKIVByb3RvYnVm", - "X1Jvb21fTXlSb29tX1N0YXRlX0NoYW5nZRI8CgxSb29tTWluaUluZm8YASAB", - "KAsyJi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9Sb29tX01pbmlJbmZvIkUK", - "G1Byb3RvYnVmX1Jvb21fV2FpdFN0ZXBfUkVTUBIQCghXYWl0U3RlcBgBIAEo", - "BRIUCgxMb2FkU3RhdGVSYXcYAiABKAwiPwonUHJvdG9idWZfUm9vbV9Ib3N0", - "UGxheWVyX1VwZGF0ZVN0YXRlUmF3EhQKDExvYWRTdGF0ZVJhdxgBIAEoDCIu", - "CixQcm90b2J1Zl9Sb29tX0hvc3RQbGF5ZXJfVXBkYXRlU3RhdGVSYXdfUkVT", - "UCIcChpQcm90b2J1Zl9Sb29tX1BsYXllcl9SZWFkeSIqChhQcm90b2J1Zl9S", - "b29tX0dldF9TY3JlZW4SDgoGUm9vbUlEGAEgASgFIlMKHVByb3RvYnVmX1Jv", - "b21fR2V0X1NjcmVlbl9SRVNQEg4KBlJvb21JRBgBIAEoBRIPCgdGcmFtZUlE", - "GAIgASgFEhEKCVJhd0JpdG1hcBgDIAEoDCJmChJQcm90b2J1Zl9HYW1lX01h", - "cmsSDQoFUm9tSUQYASABKAUSDQoFc3RhdGUYAiABKAUSMgoMUGxhdGZvcm1U", - "eXBlGAMgASgOMhwuQXhpYnVnUHJvdG9idWYuUGxhdGZvcm1UeXBlIlwKF1By", - "b3RvYnVmX0dhbWVfTWFya19SRVNQEg0KBVJvbUlEGAEgASgFEjIKDFBsYXRm", - "b3JtVHlwZRgCIAEoDjIcLkF4aWJ1Z1Byb3RvYnVmLlBsYXRmb3JtVHlwZSr+", - "BAoJQ29tbWFuZElEEg4KCkNNRF9ERUZBVUwQABIMCghDTURfUElORxABEgwK", - "CENNRF9QT05HEAISDgoJQ01EX0xPR0lOENEPEhgKE0NNRF9VU0VSX09OTElO", - "RUxJU1QQuBcSEgoNQ01EX1VTRVJfSk9JThDXFxITCg5DTURfVVNFUl9MRUFW", - "RRDYFxIaChVDTURfVVNFUl9TVEFURV9VUERBVEUQ2RcSGAoTQ01EX01vZGlm", - "eV9OaWNrTmFtZRCdGBIcChdDTURfVXBkYXRlX1NlbGZVc2VySW5mbxCmGBId", - "ChhDTURfVXBkYXRlX090aGVyVXNlckluZm8QqBgSEAoLQ01EX0NIQVRNU0cQ", - "oR8SEgoNQ01EX1Jvb21fTGlzdBCJJxIZChRDTURfUm9vbV9MaXN0X1VwZGF0", - "ZRCKJxIYChNDTURfUm9vbV9HZXRfU2NyZWVuEJMnEhQKD0NNRF9Sb29tX0Ny", - "ZWF0ZRDtJxISCg1DTURfUm9vbV9Kb2luEPEnEhMKDkNNRF9Sb29tX0xlYXZl", - "EPInEiIKHUNNRF9Sb29tX015Um9vbV9TdGF0ZV9DaGFuZ2VkEPYnEhYKEUNN", - "RF9Sb29tX1dhaXRTdGVwENEoEicKIkNNRF9Sb29tX0hvc3RQbGF5ZXJfVXBk", - "YXRlU3RhdGVSYXcQ1CgSGgoVQ01EX1Jvb21fUGxheWVyX1JlYWR5ENgoEiAK", - "G0NNRF9Sb29tX1NpbmdlbF9QbGF5ZXJJbnB1dBD6LhIdChhDTURfUk9PTV9T", - "WU5fUGxheWVySW5wdXQQ/y4SDwoKQ01EX1NjcmVlbhDZNhISCg1DTURfR0FN", - "RV9NQVJLEPVOKtABCglFcnJvckNvZGUSEAoMRVJST1JfREVGQVVMEAASDAoI", - "RVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAKEicKI0VSUk9S", - "X1JPT01fU0xPVF9BTFJFQURMWV9IQURfUExBWUVSEAsSIQodRVJST1JfUk9P", - "TV9DQU5UX0RPX0NVUlJfU1RBVEUQMhIfChpFUlJPUl9ST01fQUxSRUFEWV9I", - "QURfU1RBUhCTAxIcChdFUlJPUl9ST01fRE9OVF9IQURfU1RBUhCUAypACglM", - "b2dpblR5cGUSDQoJVXNlRGV2aWNlEAASDgoKVXNlQWNjb3VudBABEhQKEFVz", - "ZUhhb1l1ZUFjY291bnQQAipLCgpEZXZpY2VUeXBlEhYKEkRldmljZVR5cGVf", - "RGVmYXVsdBAAEgYKAlBDEAESCwoHQW5kcm9pZBACEgcKA0lPUxADEgcKA1BT", - "VhAEKiAKDFBsYXRmb3JtVHlwZRIHCgNBbGwQABIHCgNOZXMQASpwCg1Sb29t", - "R2FtZVN0YXRlEhIKDk5vbmVfR2FtZVN0YXRlEAASDAoIT25seUhvc3QQARIR", - "Cg1XYWl0UmF3VXBkYXRlEAISDQoJV2FpdFJlYWR5EAMSCQoFUGF1c2UQBBIQ", - "CgxJbk9ubGluZUdhbWUQBSpOChFMb2dpblJlc3VsdFN0YXR1cxIhCh1Mb2dp", - "blJlc3VsdFN0YXR1c19CYXNlRGVmYXVsdBAAEgYKAk9LEAESDgoKQWNjb3Vu", - "dEVychACQgJIAWIGcHJvdG8z")); + "EhEKCUlucHV0RGF0YRgCIAEoDSKAAQonUHJvdG9idWZfUm9vbV9TeW5fUm9v", + "bUZyYW1lQWxsSW5wdXREYXRhEg8KB0ZyYW1lSUQYASABKA0SEQoJSW5wdXRE", + "YXRhGAIgASgEEhUKDVNlcnZlckZyYW1lSUQYAyABKA0SGgoSU2VydmVyRm9y", + "d2FyZENvdW50GAQgASgNIlUKFFByb3RvYnVmX1Jvb21fQ3JlYXRlEhEKCUdh", + "bWVSb21JRBgBIAEoBRITCgtHYW1lUm9tSGFzaBgCIAEoCRIVCg1Kb2luUGxh", + "eWVySWR4GAMgASgFIlkKGVByb3RvYnVmX1Jvb21fQ3JlYXRlX1JFU1ASPAoM", + "Um9vbU1pbmlJbmZvGAEgASgLMiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZf", + "Um9vbV9NaW5pSW5mbyI3ChJQcm90b2J1Zl9Sb29tX0pvaW4SDgoGUm9vbUlE", + "GAEgASgFEhEKCVBsYXllck51bRgCIAEoBSJXChdQcm90b2J1Zl9Sb29tX0pv", + "aW5fUkVTUBI8CgxSb29tTWluaUluZm8YASABKAsyJi5BeGlidWdQcm90b2J1", + "Zi5Qcm90b2J1Zl9Sb29tX01pbmlJbmZvIiUKE1Byb3RvYnVmX1Jvb21fTGVh", + "dmUSDgoGUm9vbUlEGAEgASgFIioKGFByb3RvYnVmX1Jvb21fTGVhdmVfUkVT", + "UBIOCgZSb29tSUQYASABKAUiYQohUHJvdG9idWZfUm9vbV9NeVJvb21fU3Rh", + "dGVfQ2hhbmdlEjwKDFJvb21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1Z1Byb3Rv", + "YnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iRQobUHJvdG9idWZfUm9vbV9X", + "YWl0U3RlcF9SRVNQEhAKCFdhaXRTdGVwGAEgASgFEhQKDExvYWRTdGF0ZVJh", + "dxgCIAEoDCI/CidQcm90b2J1Zl9Sb29tX0hvc3RQbGF5ZXJfVXBkYXRlU3Rh", + "dGVSYXcSFAoMTG9hZFN0YXRlUmF3GAEgASgMIi4KLFByb3RvYnVmX1Jvb21f", + "SG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhd19SRVNQIhwKGlByb3RvYnVmX1Jv", + "b21fUGxheWVyX1JlYWR5IioKGFByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbhIO", + "CgZSb29tSUQYASABKAUiUwodUHJvdG9idWZfUm9vbV9HZXRfU2NyZWVuX1JF", + "U1ASDgoGUm9vbUlEGAEgASgFEg8KB0ZyYW1lSUQYAiABKAUSEQoJUmF3Qml0", + "bWFwGAMgASgMImYKElByb3RvYnVmX0dhbWVfTWFyaxINCgVSb21JRBgBIAEo", + "BRINCgVzdGF0ZRgCIAEoBRIyCgxQbGF0Zm9ybVR5cGUYAyABKA4yHC5BeGli", + "dWdQcm90b2J1Zi5QbGF0Zm9ybVR5cGUiXAoXUHJvdG9idWZfR2FtZV9NYXJr", + "X1JFU1ASDQoFUm9tSUQYASABKAUSMgoMUGxhdGZvcm1UeXBlGAIgASgOMhwu", + "QXhpYnVnUHJvdG9idWYuUGxhdGZvcm1UeXBlKv4ECglDb21tYW5kSUQSDgoK", + "Q01EX0RFRkFVTBAAEgwKCENNRF9QSU5HEAESDAoIQ01EX1BPTkcQAhIOCglD", + "TURfTE9HSU4Q0Q8SGAoTQ01EX1VTRVJfT05MSU5FTElTVBC4FxISCg1DTURf", + "VVNFUl9KT0lOENcXEhMKDkNNRF9VU0VSX0xFQVZFENgXEhoKFUNNRF9VU0VS", + "X1NUQVRFX1VQREFURRDZFxIYChNDTURfTW9kaWZ5X05pY2tOYW1lEJ0YEhwK", + "F0NNRF9VcGRhdGVfU2VsZlVzZXJJbmZvEKYYEh0KGENNRF9VcGRhdGVfT3Ro", + "ZXJVc2VySW5mbxCoGBIQCgtDTURfQ0hBVE1TRxChHxISCg1DTURfUm9vbV9M", + "aXN0EIknEhkKFENNRF9Sb29tX0xpc3RfVXBkYXRlEIonEhgKE0NNRF9Sb29t", + "X0dldF9TY3JlZW4QkycSFAoPQ01EX1Jvb21fQ3JlYXRlEO0nEhIKDUNNRF9S", + "b29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVhdmUQ8icSIgodQ01EX1Jvb21f", + "TXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSFgoRQ01EX1Jvb21fV2FpdFN0ZXAQ", + "0SgSJwoiQ01EX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhdxDUKBIa", + "ChVDTURfUm9vbV9QbGF5ZXJfUmVhZHkQ2CgSIAobQ01EX1Jvb21fU2luZ2Vs", + "X1BsYXllcklucHV0EPouEh0KGENNRF9ST09NX1NZTl9QbGF5ZXJJbnB1dBD/", + "LhIPCgpDTURfU2NyZWVuENk2EhIKDUNNRF9HQU1FX01BUksQ9U4q0AEKCUVy", + "cm9yQ29kZRIQCgxFUlJPUl9ERUZBVUwQABIMCghFUlJPUl9PSxABEhgKFEVS", + "Uk9SX1JPT01fTk9UX0ZPVU5EEAoSJwojRVJST1JfUk9PTV9TTE9UX0FMUkVB", + "RExZX0hBRF9QTEFZRVIQCxIhCh1FUlJPUl9ST09NX0NBTlRfRE9fQ1VSUl9T", + "VEFURRAyEh8KGkVSUk9SX1JPTV9BTFJFQURZX0hBRF9TVEFSEJMDEhwKF0VS", + "Uk9SX1JPTV9ET05UX0hBRF9TVEFSEJQDKkAKCUxvZ2luVHlwZRINCglVc2VE", + "ZXZpY2UQABIOCgpVc2VBY2NvdW50EAESFAoQVXNlSGFvWXVlQWNjb3VudBAC", + "KksKCkRldmljZVR5cGUSFgoSRGV2aWNlVHlwZV9EZWZhdWx0EAASBgoCUEMQ", + "ARILCgdBbmRyb2lkEAISBwoDSU9TEAMSBwoDUFNWEAQqIAoMUGxhdGZvcm1U", + "eXBlEgcKA0FsbBAAEgcKA05lcxABKnAKDVJvb21HYW1lU3RhdGUSEgoOTm9u", + "ZV9HYW1lU3RhdGUQABIMCghPbmx5SG9zdBABEhEKDVdhaXRSYXdVcGRhdGUQ", + "AhINCglXYWl0UmVhZHkQAxIJCgVQYXVzZRAEEhAKDEluT25saW5lR2FtZRAF", + "Kk4KEUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0U3RhdHVzX0Jh", + "c2VEZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJCAkgBYgZwcm90", + "bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.PlatformType), typeof(global::AxibugProtobuf.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -145,7 +146,7 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Update_RESP), global::AxibugProtobuf.Protobuf_Room_Update_RESP.Parser, new[]{ "UpdateType", "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Screnn_Frame), global::AxibugProtobuf.Protobuf_Screnn_Frame.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_SinglePlayerInputData), global::AxibugProtobuf.Protobuf_Room_SinglePlayerInputData.Parser, new[]{ "FrameID", "InputData" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData), global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData.Parser, new[]{ "FrameID", "InputData", "ServerFrameID" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData), global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData.Parser, new[]{ "FrameID", "InputData", "ServerFrameID", "ServerForwardCount" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Create), global::AxibugProtobuf.Protobuf_Room_Create.Parser, new[]{ "GameRomID", "GameRomHash", "JoinPlayerIdx" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Create_RESP), global::AxibugProtobuf.Protobuf_Room_Create_RESP.Parser, new[]{ "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Join), global::AxibugProtobuf.Protobuf_Room_Join.Parser, new[]{ "RoomID", "PlayerNum" }, null, null, null, null), @@ -5492,6 +5493,7 @@ namespace AxibugProtobuf { frameID_ = other.frameID_; inputData_ = other.inputData_; serverFrameID_ = other.serverFrameID_; + serverForwardCount_ = other.serverForwardCount_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -5542,6 +5544,20 @@ namespace AxibugProtobuf { } } + /// Field number for the "ServerForwardCount" field. + public const int ServerForwardCountFieldNumber = 4; + private uint serverForwardCount_; + /// + ///服务器提前量 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public uint ServerForwardCount { + get { return serverForwardCount_; } + set { + serverForwardCount_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as Protobuf_Room_Syn_RoomFrameAllInputData); @@ -5558,6 +5574,7 @@ namespace AxibugProtobuf { if (FrameID != other.FrameID) return false; if (InputData != other.InputData) return false; if (ServerFrameID != other.ServerFrameID) return false; + if (ServerForwardCount != other.ServerForwardCount) return false; return Equals(_unknownFields, other._unknownFields); } @@ -5567,6 +5584,7 @@ namespace AxibugProtobuf { if (FrameID != 0) hash ^= FrameID.GetHashCode(); if (InputData != 0UL) hash ^= InputData.GetHashCode(); if (ServerFrameID != 0) hash ^= ServerFrameID.GetHashCode(); + if (ServerForwardCount != 0) hash ^= ServerForwardCount.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -5595,6 +5613,10 @@ namespace AxibugProtobuf { output.WriteRawTag(24); output.WriteUInt32(ServerFrameID); } + if (ServerForwardCount != 0) { + output.WriteRawTag(32); + output.WriteUInt32(ServerForwardCount); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -5616,6 +5638,10 @@ namespace AxibugProtobuf { output.WriteRawTag(24); output.WriteUInt32(ServerFrameID); } + if (ServerForwardCount != 0) { + output.WriteRawTag(32); + output.WriteUInt32(ServerForwardCount); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -5634,6 +5660,9 @@ namespace AxibugProtobuf { if (ServerFrameID != 0) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ServerFrameID); } + if (ServerForwardCount != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ServerForwardCount); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -5654,6 +5683,9 @@ namespace AxibugProtobuf { if (other.ServerFrameID != 0) { ServerFrameID = other.ServerFrameID; } + if (other.ServerForwardCount != 0) { + ServerForwardCount = other.ServerForwardCount; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -5680,6 +5712,10 @@ namespace AxibugProtobuf { ServerFrameID = input.ReadUInt32(); break; } + case 32: { + ServerForwardCount = input.ReadUInt32(); + break; + } } } #endif @@ -5706,6 +5742,10 @@ namespace AxibugProtobuf { ServerFrameID = input.ReadUInt32(); break; } + case 32: { + ServerForwardCount = input.ReadUInt32(); + break; + } } } } diff --git a/AxibugEmuOnline.Server/Manager/ClientManager.cs b/AxibugEmuOnline.Server/Manager/ClientManager.cs index 8e1d724..625a404 100644 --- a/AxibugEmuOnline.Server/Manager/ClientManager.cs +++ b/AxibugEmuOnline.Server/Manager/ClientManager.cs @@ -114,11 +114,19 @@ namespace AxibugEmuOnline.Server.Manager public ClientInfo JoinNewClient(long _uid, Socket _socket) { //也许这个函数需加lock - ClientInfo cinfo = GetClientForSocket(_socket); + //ClientInfo cinfo = GetClientForSocket(_socket); + GetClientByUID(_uid, out ClientInfo cinfo, false); //如果连接还在 if (cinfo != null) { cinfo.IsOffline = false; + Socket oldsocket = cinfo._socket; + cinfo._socket = _socket; + + if (_DictSocketClient.ContainsKey(oldsocket)) + _DictSocketClient.Remove(oldsocket); + + _DictSocketClient[_socket] = cinfo; } else { diff --git a/AxibugEmuOnline.Server/Manager/RoomManager.cs b/AxibugEmuOnline.Server/Manager/RoomManager.cs index 26370b7..79038cc 100644 --- a/AxibugEmuOnline.Server/Manager/RoomManager.cs +++ b/AxibugEmuOnline.Server/Manager/RoomManager.cs @@ -105,6 +105,8 @@ namespace AxibugEmuOnline.Server } public void RoomLog(long uid, int platform, int RoomID, int RomID, RoomLogType state) { + + return; MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("RoomLog"); try { @@ -352,7 +354,7 @@ namespace AxibugEmuOnline.Server else SendRoomUpdateToAll(room.RoomID, 0); - RoomLog(_c.UID,1,room.RoomID,room.GameRomID,RoomLogType.Leave); + RoomLog(_c.UID, 1, room.RoomID, room.GameRomID, RoomLogType.Leave); } public void OnHostPlayerUpdateStateRaw(Socket sk, byte[] reqData) @@ -419,8 +421,8 @@ namespace AxibugEmuOnline.Server if (i + 1 == forwaFrame)//最后一帧 { //写入操作前、将网络波动堆积,可能造成瞬时多个连续推帧结果(最后一帧除外)立即广播,不等16msTick - if (forwaFrame > 1) - room.SynInputData(); + //if (forwaFrame > 1) + // room.SynInputData(); //推帧过程中,最后一帧才写入操作 room.SetPlayerInput(_c.RoomState.PlayerIdx, msg.FrameID, temp); @@ -592,7 +594,7 @@ namespace AxibugEmuOnline.Server /// /// 服务器提前帧数 /// - public int SrvForwardFrames { get; set; } + public uint SrvForwardFrames { get; set; } bool IsAllReady() @@ -759,6 +761,18 @@ namespace AxibugEmuOnline.Server mInputQueue.Clear(); mDictPlayerIdx2SendQueue.Clear(); + mCurrServerFrameId = 0; + mCurrInputData.all = 1; + + UpdateRoomForwardNum(); + + //服务器提前跑帧数 + for (int i = 0; i < SrvForwardFrames; i++) + TakeFrame(); + } + + public void UpdateRoomForwardNum() + { List playerlist = GetAllPlayerClientList(); double maxNetDelay = 0; for (int i = 0; i < playerlist.Count; i++) @@ -766,53 +780,87 @@ namespace AxibugEmuOnline.Server ClientInfo player = playerlist[i]; maxNetDelay = Math.Max(maxNetDelay, player.AveNetDelay); } - - mCurrServerFrameId = 0; - mCurrInputData.all = 1; - - float MustTaskFrame = 3; - - SrvForwardFrames = (int)((maxNetDelay / 0.016f) + MustTaskFrame); - AppSrv.g_Log.Debug($"服务器提前跑帧数:({maxNetDelay} / {0.016f}) + {MustTaskFrame} = {SrvForwardFrames}"); - - //服务器提前跑帧数 - for (int i = 0; i < SrvForwardFrames; i++) - TakeFrame(); + float MustTaskFrame = 1; + SrvForwardFrames = (uint)((maxNetDelay / 0.016f) + MustTaskFrame); + if (SrvForwardFrames < 2) + SrvForwardFrames = 2; + AppSrv.g_Log.Debug($"服务器提前跑帧数:Max(2,({maxNetDelay} / {0.016f}) + {MustTaskFrame}) = {SrvForwardFrames}"); } public void TakeFrame() { - mInputQueue.Enqueue((mCurrServerFrameId, mCurrInputData)); - mCurrServerFrameId++; + lock (synInputLock) + { + mInputQueue.Enqueue((mCurrServerFrameId, mCurrInputData)); + mCurrServerFrameId++; + if (mCurrServerFrameId % 60 == 0) + { + UpdateRoomForwardNum(); + } + } } ulong LastTestSend = 0; internal ulong LastTestRecv; + public List send2time = new List(); + const int SynLimitOnSec = 63; + /// /// 广播数据 /// public void SynInputData() { + List<(uint frameId, ServerInputSnapShot inputdata)> temp = null; + bool flagInitList = false; lock (synInputLock) { + double timeNow = AppSrv.g_Tick.timeNow; while (mInputQueue.Count > 0) { - (uint frameId, ServerInputSnapShot inputdata) data = mInputQueue.Dequeue(); - Protobuf_Room_Syn_RoomFrameAllInputData resp = new Protobuf_Room_Syn_RoomFrameAllInputData() + if (send2time.Count >= SynLimitOnSec) { - FrameID = data.frameId, - InputData = data.inputdata.all, - ServerFrameID = mCurrServerFrameId - }; - //if (LastTestSend != data.inputdata.all) - //{ - // LastTestSend = data.inputdata.all; - // AppSrv.g_Log.Debug($" {DateTime.Now.ToString("hh:mm:ss.fff")} SynInput=> RoomID->{RoomID} ServerFrameID->{mCurrServerFrameId} SynUIDs=>{string.Join(",", SynUIDs)} "); - //} - AppSrv.g_ClientMgr.ClientSend(SynUIDs, (int)CommandID.CmdRoomSynPlayerInput, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); - //AppSrv.g_Log.Debug($" {DateTime.Now.ToString("hh:mm:ss.fff")} SynInput=> RoomID->{RoomID} ServerFrameID->{mCurrServerFrameId} SynUIDs=>{string.Join(",", SynUIDs)} "); + //AppSrv.g_Log.Info($"{timeNow} - {send2time[0]} =>{timeNow - send2time[0]}"); + if (timeNow - send2time[0] < 1f) //最早的历史发送还在一秒之内 + break; + else + send2time.RemoveAt(0); + } + + if (!flagInitList) + { + flagInitList = true; + temp = new List<(uint frameId, ServerInputSnapShot inputdata)>(); + } + temp.Add(mInputQueue.Dequeue()); + send2time.Add(timeNow); } + //while (mInputQueue.Count > 0) + //{ + // temp.Add(mInputQueue.Dequeue()); + //} + } + + if (!flagInitList) + return; + + for (int i = 0; i < temp.Count; i++) + { + (uint frameId, ServerInputSnapShot inputdata) data = temp[i]; + + Protobuf_Room_Syn_RoomFrameAllInputData resp = new Protobuf_Room_Syn_RoomFrameAllInputData() + { + FrameID = data.frameId, + InputData = data.inputdata.all, + ServerFrameID = mCurrServerFrameId, + ServerForwardCount = this.SrvForwardFrames + }; + AppSrv.g_ClientMgr.ClientSend(SynUIDs, (int)CommandID.CmdRoomSynPlayerInput, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); + //if (LastTestSend != data.inputdata.all) + //{ + // LastTestSend = data.inputdata.all; + // AppSrv.g_Log.Debug($" {DateTime.Now.ToString("hh:mm:ss.fff")} SynInput=> RoomID->{RoomID} ServerFrameID->{mCurrServerFrameId} SynUIDs=>{string.Join(",", SynUIDs)} "); + //} } } diff --git a/AxibugEmuOnline.Server/Manager/TickManager.cs b/AxibugEmuOnline.Server/Manager/TickManager.cs index 8660e83..dcaf888 100644 --- a/AxibugEmuOnline.Server/Manager/TickManager.cs +++ b/AxibugEmuOnline.Server/Manager/TickManager.cs @@ -5,6 +5,7 @@ namespace AxibugEmuOnline.Server.Manager public class TickManager { public Stopwatch sw; + public double timeNow => sw.Elapsed.TotalSeconds; public enum TickType { Interval_16MS, diff --git a/AxibugEmuOnline.Server/Program.cs b/AxibugEmuOnline.Server/Program.cs index f18dee6..2f97104 100644 --- a/AxibugEmuOnline.Server/Program.cs +++ b/AxibugEmuOnline.Server/Program.cs @@ -30,6 +30,8 @@ namespace AxibugEmuOnline.Server AppSrv.g_Log.Info($"GameState:{room.GameState}"); AppSrv.g_Log.Info($"HostUID:{room.HostUID}"); AppSrv.g_Log.Info($"mCurrFrameId:{room.mCurrServerFrameId}"); + AppSrv.g_Log.Info($"SrvForwardFrames:{room.SrvForwardFrames}"); + AppSrv.g_Log.Info($"room.send2time.Count:{room.send2time.Count}"); AppSrv.g_Log.Info($"input all:{room.mCurrInputData.all}"); AppSrv.g_Log.Info($"input p1:{room.mCurrInputData.p1_byte}"); AppSrv.g_Log.Info($"input p2:{room.mCurrInputData.p2_byte}"); diff --git a/AxibugEmuOnline.Server/Properties/PublishProfiles/FolderProfile.pubxml.user b/AxibugEmuOnline.Server/Properties/PublishProfiles/FolderProfile.pubxml.user index 5bc7742..42024d2 100644 --- a/AxibugEmuOnline.Server/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/AxibugEmuOnline.Server/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -4,7 +4,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. --> - True|2024-11-28T11:58:55.3995125Z||;True|2024-09-14T16:39:29.4677979+08:00||;True|2024-09-14T16:38:22.2398996+08:00||;True|2024-09-13T13:39:28.9591993+08:00||;True|2024-09-12T17:48:43.1521740+08:00||;True|2024-09-12T17:43:57.0504432+08:00||;True|2024-09-12T17:19:48.6392091+08:00||;True|2024-09-12T13:38:45.0141937+08:00||;False|2024-09-12T13:37:57.6131232+08:00||;True|2024-06-28T16:25:59.3159172+08:00||;True|2024-06-28T15:30:49.8257235+08:00||; + True|2024-12-03T17:43:54.7646411Z||;True|2024-12-04T01:22:11.8117030+08:00||;True|2024-12-04T01:20:06.5770785+08:00||;True|2024-12-04T01:16:31.6391421+08:00||;True|2024-12-04T01:12:43.4697251+08:00||;True|2024-12-04T01:07:04.8333668+08:00||;True|2024-12-04T00:59:23.6611648+08:00||;True|2024-12-04T00:27:05.0229247+08:00||;True|2024-12-03T23:50:48.5712706+08:00||;True|2024-12-03T23:47:47.1095592+08:00||;True|2024-12-03T20:24:57.4098592+08:00||;True|2024-12-03T20:16:36.9886489+08:00||;True|2024-12-03T20:15:52.5482738+08:00||;True|2024-12-02T20:10:07.8192795+08:00||;True|2024-11-28T19:58:55.3995125+08:00||;True|2024-09-14T16:39:29.4677979+08:00||;True|2024-09-14T16:38:22.2398996+08:00||;True|2024-09-13T13:39:28.9591993+08:00||;True|2024-09-12T17:48:43.1521740+08:00||;True|2024-09-12T17:43:57.0504432+08:00||;True|2024-09-12T17:19:48.6392091+08:00||;True|2024-09-12T13:38:45.0141937+08:00||;False|2024-09-12T13:37:57.6131232+08:00||;True|2024-06-28T16:25:59.3159172+08:00||;True|2024-06-28T15:30:49.8257235+08:00||; \ No newline at end of file diff --git a/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs b/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs index 55073cb..20101a4 100644 --- a/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs +++ b/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs @@ -66,60 +66,61 @@ namespace AxibugProtobuf { "Zm8iSwoVUHJvdG9idWZfU2NyZW5uX0ZyYW1lEg4KBlJvb21JRBgBIAEoBRIP", "CgdGcmFtZUlEGAIgASgFEhEKCVJhd0JpdG1hcBgDIAEoDCJJCiNQcm90b2J1", "Zl9Sb29tX1NpbmdsZVBsYXllcklucHV0RGF0YRIPCgdGcmFtZUlEGAEgASgN", - "EhEKCUlucHV0RGF0YRgCIAEoDSJkCidQcm90b2J1Zl9Sb29tX1N5bl9Sb29t", - "RnJhbWVBbGxJbnB1dERhdGESDwoHRnJhbWVJRBgBIAEoDRIRCglJbnB1dERh", - "dGEYAiABKAQSFQoNU2VydmVyRnJhbWVJRBgDIAEoDSJVChRQcm90b2J1Zl9S", - "b29tX0NyZWF0ZRIRCglHYW1lUm9tSUQYASABKAUSEwoLR2FtZVJvbUhhc2gY", - "AiABKAkSFQoNSm9pblBsYXllcklkeBgDIAEoBSJZChlQcm90b2J1Zl9Sb29t", - "X0NyZWF0ZV9SRVNQEjwKDFJvb21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1Z1By", - "b3RvYnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iNwoSUHJvdG9idWZfUm9v", - "bV9Kb2luEg4KBlJvb21JRBgBIAEoBRIRCglQbGF5ZXJOdW0YAiABKAUiVwoX", - "UHJvdG9idWZfUm9vbV9Kb2luX1JFU1ASPAoMUm9vbU1pbmlJbmZvGAEgASgL", - "MiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyIlChNQ", - "cm90b2J1Zl9Sb29tX0xlYXZlEg4KBlJvb21JRBgBIAEoBSIqChhQcm90b2J1", - "Zl9Sb29tX0xlYXZlX1JFU1ASDgoGUm9vbUlEGAEgASgFImEKIVByb3RvYnVm", - "X1Jvb21fTXlSb29tX1N0YXRlX0NoYW5nZRI8CgxSb29tTWluaUluZm8YASAB", - "KAsyJi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9Sb29tX01pbmlJbmZvIkUK", - "G1Byb3RvYnVmX1Jvb21fV2FpdFN0ZXBfUkVTUBIQCghXYWl0U3RlcBgBIAEo", - "BRIUCgxMb2FkU3RhdGVSYXcYAiABKAwiPwonUHJvdG9idWZfUm9vbV9Ib3N0", - "UGxheWVyX1VwZGF0ZVN0YXRlUmF3EhQKDExvYWRTdGF0ZVJhdxgBIAEoDCIu", - "CixQcm90b2J1Zl9Sb29tX0hvc3RQbGF5ZXJfVXBkYXRlU3RhdGVSYXdfUkVT", - "UCIcChpQcm90b2J1Zl9Sb29tX1BsYXllcl9SZWFkeSIqChhQcm90b2J1Zl9S", - "b29tX0dldF9TY3JlZW4SDgoGUm9vbUlEGAEgASgFIlMKHVByb3RvYnVmX1Jv", - "b21fR2V0X1NjcmVlbl9SRVNQEg4KBlJvb21JRBgBIAEoBRIPCgdGcmFtZUlE", - "GAIgASgFEhEKCVJhd0JpdG1hcBgDIAEoDCJmChJQcm90b2J1Zl9HYW1lX01h", - "cmsSDQoFUm9tSUQYASABKAUSDQoFc3RhdGUYAiABKAUSMgoMUGxhdGZvcm1U", - "eXBlGAMgASgOMhwuQXhpYnVnUHJvdG9idWYuUGxhdGZvcm1UeXBlIlwKF1By", - "b3RvYnVmX0dhbWVfTWFya19SRVNQEg0KBVJvbUlEGAEgASgFEjIKDFBsYXRm", - "b3JtVHlwZRgCIAEoDjIcLkF4aWJ1Z1Byb3RvYnVmLlBsYXRmb3JtVHlwZSr+", - "BAoJQ29tbWFuZElEEg4KCkNNRF9ERUZBVUwQABIMCghDTURfUElORxABEgwK", - "CENNRF9QT05HEAISDgoJQ01EX0xPR0lOENEPEhgKE0NNRF9VU0VSX09OTElO", - "RUxJU1QQuBcSEgoNQ01EX1VTRVJfSk9JThDXFxITCg5DTURfVVNFUl9MRUFW", - "RRDYFxIaChVDTURfVVNFUl9TVEFURV9VUERBVEUQ2RcSGAoTQ01EX01vZGlm", - "eV9OaWNrTmFtZRCdGBIcChdDTURfVXBkYXRlX1NlbGZVc2VySW5mbxCmGBId", - "ChhDTURfVXBkYXRlX090aGVyVXNlckluZm8QqBgSEAoLQ01EX0NIQVRNU0cQ", - "oR8SEgoNQ01EX1Jvb21fTGlzdBCJJxIZChRDTURfUm9vbV9MaXN0X1VwZGF0", - "ZRCKJxIYChNDTURfUm9vbV9HZXRfU2NyZWVuEJMnEhQKD0NNRF9Sb29tX0Ny", - "ZWF0ZRDtJxISCg1DTURfUm9vbV9Kb2luEPEnEhMKDkNNRF9Sb29tX0xlYXZl", - "EPInEiIKHUNNRF9Sb29tX015Um9vbV9TdGF0ZV9DaGFuZ2VkEPYnEhYKEUNN", - "RF9Sb29tX1dhaXRTdGVwENEoEicKIkNNRF9Sb29tX0hvc3RQbGF5ZXJfVXBk", - "YXRlU3RhdGVSYXcQ1CgSGgoVQ01EX1Jvb21fUGxheWVyX1JlYWR5ENgoEiAK", - "G0NNRF9Sb29tX1NpbmdlbF9QbGF5ZXJJbnB1dBD6LhIdChhDTURfUk9PTV9T", - "WU5fUGxheWVySW5wdXQQ/y4SDwoKQ01EX1NjcmVlbhDZNhISCg1DTURfR0FN", - "RV9NQVJLEPVOKtABCglFcnJvckNvZGUSEAoMRVJST1JfREVGQVVMEAASDAoI", - "RVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAKEicKI0VSUk9S", - "X1JPT01fU0xPVF9BTFJFQURMWV9IQURfUExBWUVSEAsSIQodRVJST1JfUk9P", - "TV9DQU5UX0RPX0NVUlJfU1RBVEUQMhIfChpFUlJPUl9ST01fQUxSRUFEWV9I", - "QURfU1RBUhCTAxIcChdFUlJPUl9ST01fRE9OVF9IQURfU1RBUhCUAypACglM", - "b2dpblR5cGUSDQoJVXNlRGV2aWNlEAASDgoKVXNlQWNjb3VudBABEhQKEFVz", - "ZUhhb1l1ZUFjY291bnQQAipLCgpEZXZpY2VUeXBlEhYKEkRldmljZVR5cGVf", - "RGVmYXVsdBAAEgYKAlBDEAESCwoHQW5kcm9pZBACEgcKA0lPUxADEgcKA1BT", - "VhAEKiAKDFBsYXRmb3JtVHlwZRIHCgNBbGwQABIHCgNOZXMQASpwCg1Sb29t", - "R2FtZVN0YXRlEhIKDk5vbmVfR2FtZVN0YXRlEAASDAoIT25seUhvc3QQARIR", - "Cg1XYWl0UmF3VXBkYXRlEAISDQoJV2FpdFJlYWR5EAMSCQoFUGF1c2UQBBIQ", - "CgxJbk9ubGluZUdhbWUQBSpOChFMb2dpblJlc3VsdFN0YXR1cxIhCh1Mb2dp", - "blJlc3VsdFN0YXR1c19CYXNlRGVmYXVsdBAAEgYKAk9LEAESDgoKQWNjb3Vu", - "dEVychACQgJIAWIGcHJvdG8z")); + "EhEKCUlucHV0RGF0YRgCIAEoDSKAAQonUHJvdG9idWZfUm9vbV9TeW5fUm9v", + "bUZyYW1lQWxsSW5wdXREYXRhEg8KB0ZyYW1lSUQYASABKA0SEQoJSW5wdXRE", + "YXRhGAIgASgEEhUKDVNlcnZlckZyYW1lSUQYAyABKA0SGgoSU2VydmVyRm9y", + "d2FyZENvdW50GAQgASgNIlUKFFByb3RvYnVmX1Jvb21fQ3JlYXRlEhEKCUdh", + "bWVSb21JRBgBIAEoBRITCgtHYW1lUm9tSGFzaBgCIAEoCRIVCg1Kb2luUGxh", + "eWVySWR4GAMgASgFIlkKGVByb3RvYnVmX1Jvb21fQ3JlYXRlX1JFU1ASPAoM", + "Um9vbU1pbmlJbmZvGAEgASgLMiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZf", + "Um9vbV9NaW5pSW5mbyI3ChJQcm90b2J1Zl9Sb29tX0pvaW4SDgoGUm9vbUlE", + "GAEgASgFEhEKCVBsYXllck51bRgCIAEoBSJXChdQcm90b2J1Zl9Sb29tX0pv", + "aW5fUkVTUBI8CgxSb29tTWluaUluZm8YASABKAsyJi5BeGlidWdQcm90b2J1", + "Zi5Qcm90b2J1Zl9Sb29tX01pbmlJbmZvIiUKE1Byb3RvYnVmX1Jvb21fTGVh", + "dmUSDgoGUm9vbUlEGAEgASgFIioKGFByb3RvYnVmX1Jvb21fTGVhdmVfUkVT", + "UBIOCgZSb29tSUQYASABKAUiYQohUHJvdG9idWZfUm9vbV9NeVJvb21fU3Rh", + "dGVfQ2hhbmdlEjwKDFJvb21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1Z1Byb3Rv", + "YnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iRQobUHJvdG9idWZfUm9vbV9X", + "YWl0U3RlcF9SRVNQEhAKCFdhaXRTdGVwGAEgASgFEhQKDExvYWRTdGF0ZVJh", + "dxgCIAEoDCI/CidQcm90b2J1Zl9Sb29tX0hvc3RQbGF5ZXJfVXBkYXRlU3Rh", + "dGVSYXcSFAoMTG9hZFN0YXRlUmF3GAEgASgMIi4KLFByb3RvYnVmX1Jvb21f", + "SG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhd19SRVNQIhwKGlByb3RvYnVmX1Jv", + "b21fUGxheWVyX1JlYWR5IioKGFByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbhIO", + "CgZSb29tSUQYASABKAUiUwodUHJvdG9idWZfUm9vbV9HZXRfU2NyZWVuX1JF", + "U1ASDgoGUm9vbUlEGAEgASgFEg8KB0ZyYW1lSUQYAiABKAUSEQoJUmF3Qml0", + "bWFwGAMgASgMImYKElByb3RvYnVmX0dhbWVfTWFyaxINCgVSb21JRBgBIAEo", + "BRINCgVzdGF0ZRgCIAEoBRIyCgxQbGF0Zm9ybVR5cGUYAyABKA4yHC5BeGli", + "dWdQcm90b2J1Zi5QbGF0Zm9ybVR5cGUiXAoXUHJvdG9idWZfR2FtZV9NYXJr", + "X1JFU1ASDQoFUm9tSUQYASABKAUSMgoMUGxhdGZvcm1UeXBlGAIgASgOMhwu", + "QXhpYnVnUHJvdG9idWYuUGxhdGZvcm1UeXBlKv4ECglDb21tYW5kSUQSDgoK", + "Q01EX0RFRkFVTBAAEgwKCENNRF9QSU5HEAESDAoIQ01EX1BPTkcQAhIOCglD", + "TURfTE9HSU4Q0Q8SGAoTQ01EX1VTRVJfT05MSU5FTElTVBC4FxISCg1DTURf", + "VVNFUl9KT0lOENcXEhMKDkNNRF9VU0VSX0xFQVZFENgXEhoKFUNNRF9VU0VS", + "X1NUQVRFX1VQREFURRDZFxIYChNDTURfTW9kaWZ5X05pY2tOYW1lEJ0YEhwK", + "F0NNRF9VcGRhdGVfU2VsZlVzZXJJbmZvEKYYEh0KGENNRF9VcGRhdGVfT3Ro", + "ZXJVc2VySW5mbxCoGBIQCgtDTURfQ0hBVE1TRxChHxISCg1DTURfUm9vbV9M", + "aXN0EIknEhkKFENNRF9Sb29tX0xpc3RfVXBkYXRlEIonEhgKE0NNRF9Sb29t", + "X0dldF9TY3JlZW4QkycSFAoPQ01EX1Jvb21fQ3JlYXRlEO0nEhIKDUNNRF9S", + "b29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVhdmUQ8icSIgodQ01EX1Jvb21f", + "TXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSFgoRQ01EX1Jvb21fV2FpdFN0ZXAQ", + "0SgSJwoiQ01EX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhdxDUKBIa", + "ChVDTURfUm9vbV9QbGF5ZXJfUmVhZHkQ2CgSIAobQ01EX1Jvb21fU2luZ2Vs", + "X1BsYXllcklucHV0EPouEh0KGENNRF9ST09NX1NZTl9QbGF5ZXJJbnB1dBD/", + "LhIPCgpDTURfU2NyZWVuENk2EhIKDUNNRF9HQU1FX01BUksQ9U4q0AEKCUVy", + "cm9yQ29kZRIQCgxFUlJPUl9ERUZBVUwQABIMCghFUlJPUl9PSxABEhgKFEVS", + "Uk9SX1JPT01fTk9UX0ZPVU5EEAoSJwojRVJST1JfUk9PTV9TTE9UX0FMUkVB", + "RExZX0hBRF9QTEFZRVIQCxIhCh1FUlJPUl9ST09NX0NBTlRfRE9fQ1VSUl9T", + "VEFURRAyEh8KGkVSUk9SX1JPTV9BTFJFQURZX0hBRF9TVEFSEJMDEhwKF0VS", + "Uk9SX1JPTV9ET05UX0hBRF9TVEFSEJQDKkAKCUxvZ2luVHlwZRINCglVc2VE", + "ZXZpY2UQABIOCgpVc2VBY2NvdW50EAESFAoQVXNlSGFvWXVlQWNjb3VudBAC", + "KksKCkRldmljZVR5cGUSFgoSRGV2aWNlVHlwZV9EZWZhdWx0EAASBgoCUEMQ", + "ARILCgdBbmRyb2lkEAISBwoDSU9TEAMSBwoDUFNWEAQqIAoMUGxhdGZvcm1U", + "eXBlEgcKA0FsbBAAEgcKA05lcxABKnAKDVJvb21HYW1lU3RhdGUSEgoOTm9u", + "ZV9HYW1lU3RhdGUQABIMCghPbmx5SG9zdBABEhEKDVdhaXRSYXdVcGRhdGUQ", + "AhINCglXYWl0UmVhZHkQAxIJCgVQYXVzZRAEEhAKDEluT25saW5lR2FtZRAF", + "Kk4KEUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0U3RhdHVzX0Jh", + "c2VEZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJCAkgBYgZwcm90", + "bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.PlatformType), typeof(global::AxibugProtobuf.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -145,7 +146,7 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Update_RESP), global::AxibugProtobuf.Protobuf_Room_Update_RESP.Parser, new[]{ "UpdateType", "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Screnn_Frame), global::AxibugProtobuf.Protobuf_Screnn_Frame.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_SinglePlayerInputData), global::AxibugProtobuf.Protobuf_Room_SinglePlayerInputData.Parser, new[]{ "FrameID", "InputData" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData), global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData.Parser, new[]{ "FrameID", "InputData", "ServerFrameID" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData), global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData.Parser, new[]{ "FrameID", "InputData", "ServerFrameID", "ServerForwardCount" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Create), global::AxibugProtobuf.Protobuf_Room_Create.Parser, new[]{ "GameRomID", "GameRomHash", "JoinPlayerIdx" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Create_RESP), global::AxibugProtobuf.Protobuf_Room_Create_RESP.Parser, new[]{ "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Join), global::AxibugProtobuf.Protobuf_Room_Join.Parser, new[]{ "RoomID", "PlayerNum" }, null, null, null, null), @@ -5492,6 +5493,7 @@ namespace AxibugProtobuf { frameID_ = other.frameID_; inputData_ = other.inputData_; serverFrameID_ = other.serverFrameID_; + serverForwardCount_ = other.serverForwardCount_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -5542,6 +5544,20 @@ namespace AxibugProtobuf { } } + /// Field number for the "ServerForwardCount" field. + public const int ServerForwardCountFieldNumber = 4; + private uint serverForwardCount_; + /// + ///服务器提前量 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public uint ServerForwardCount { + get { return serverForwardCount_; } + set { + serverForwardCount_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as Protobuf_Room_Syn_RoomFrameAllInputData); @@ -5558,6 +5574,7 @@ namespace AxibugProtobuf { if (FrameID != other.FrameID) return false; if (InputData != other.InputData) return false; if (ServerFrameID != other.ServerFrameID) return false; + if (ServerForwardCount != other.ServerForwardCount) return false; return Equals(_unknownFields, other._unknownFields); } @@ -5567,6 +5584,7 @@ namespace AxibugProtobuf { if (FrameID != 0) hash ^= FrameID.GetHashCode(); if (InputData != 0UL) hash ^= InputData.GetHashCode(); if (ServerFrameID != 0) hash ^= ServerFrameID.GetHashCode(); + if (ServerForwardCount != 0) hash ^= ServerForwardCount.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -5595,6 +5613,10 @@ namespace AxibugProtobuf { output.WriteRawTag(24); output.WriteUInt32(ServerFrameID); } + if (ServerForwardCount != 0) { + output.WriteRawTag(32); + output.WriteUInt32(ServerForwardCount); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -5616,6 +5638,10 @@ namespace AxibugProtobuf { output.WriteRawTag(24); output.WriteUInt32(ServerFrameID); } + if (ServerForwardCount != 0) { + output.WriteRawTag(32); + output.WriteUInt32(ServerForwardCount); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -5634,6 +5660,9 @@ namespace AxibugProtobuf { if (ServerFrameID != 0) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ServerFrameID); } + if (ServerForwardCount != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ServerForwardCount); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -5654,6 +5683,9 @@ namespace AxibugProtobuf { if (other.ServerFrameID != 0) { ServerFrameID = other.ServerFrameID; } + if (other.ServerForwardCount != 0) { + ServerForwardCount = other.ServerForwardCount; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -5680,6 +5712,10 @@ namespace AxibugProtobuf { ServerFrameID = input.ReadUInt32(); break; } + case 32: { + ServerForwardCount = input.ReadUInt32(); + break; + } } } #endif @@ -5706,6 +5742,10 @@ namespace AxibugProtobuf { ServerFrameID = input.ReadUInt32(); break; } + case 32: { + ServerForwardCount = input.ReadUInt32(); + break; + } } } } diff --git a/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs b/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs index 55073cb..20101a4 100644 --- a/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs +++ b/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs @@ -66,60 +66,61 @@ namespace AxibugProtobuf { "Zm8iSwoVUHJvdG9idWZfU2NyZW5uX0ZyYW1lEg4KBlJvb21JRBgBIAEoBRIP", "CgdGcmFtZUlEGAIgASgFEhEKCVJhd0JpdG1hcBgDIAEoDCJJCiNQcm90b2J1", "Zl9Sb29tX1NpbmdsZVBsYXllcklucHV0RGF0YRIPCgdGcmFtZUlEGAEgASgN", - "EhEKCUlucHV0RGF0YRgCIAEoDSJkCidQcm90b2J1Zl9Sb29tX1N5bl9Sb29t", - "RnJhbWVBbGxJbnB1dERhdGESDwoHRnJhbWVJRBgBIAEoDRIRCglJbnB1dERh", - "dGEYAiABKAQSFQoNU2VydmVyRnJhbWVJRBgDIAEoDSJVChRQcm90b2J1Zl9S", - "b29tX0NyZWF0ZRIRCglHYW1lUm9tSUQYASABKAUSEwoLR2FtZVJvbUhhc2gY", - "AiABKAkSFQoNSm9pblBsYXllcklkeBgDIAEoBSJZChlQcm90b2J1Zl9Sb29t", - "X0NyZWF0ZV9SRVNQEjwKDFJvb21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1Z1By", - "b3RvYnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iNwoSUHJvdG9idWZfUm9v", - "bV9Kb2luEg4KBlJvb21JRBgBIAEoBRIRCglQbGF5ZXJOdW0YAiABKAUiVwoX", - "UHJvdG9idWZfUm9vbV9Kb2luX1JFU1ASPAoMUm9vbU1pbmlJbmZvGAEgASgL", - "MiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyIlChNQ", - "cm90b2J1Zl9Sb29tX0xlYXZlEg4KBlJvb21JRBgBIAEoBSIqChhQcm90b2J1", - "Zl9Sb29tX0xlYXZlX1JFU1ASDgoGUm9vbUlEGAEgASgFImEKIVByb3RvYnVm", - "X1Jvb21fTXlSb29tX1N0YXRlX0NoYW5nZRI8CgxSb29tTWluaUluZm8YASAB", - "KAsyJi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9Sb29tX01pbmlJbmZvIkUK", - "G1Byb3RvYnVmX1Jvb21fV2FpdFN0ZXBfUkVTUBIQCghXYWl0U3RlcBgBIAEo", - "BRIUCgxMb2FkU3RhdGVSYXcYAiABKAwiPwonUHJvdG9idWZfUm9vbV9Ib3N0", - "UGxheWVyX1VwZGF0ZVN0YXRlUmF3EhQKDExvYWRTdGF0ZVJhdxgBIAEoDCIu", - "CixQcm90b2J1Zl9Sb29tX0hvc3RQbGF5ZXJfVXBkYXRlU3RhdGVSYXdfUkVT", - "UCIcChpQcm90b2J1Zl9Sb29tX1BsYXllcl9SZWFkeSIqChhQcm90b2J1Zl9S", - "b29tX0dldF9TY3JlZW4SDgoGUm9vbUlEGAEgASgFIlMKHVByb3RvYnVmX1Jv", - "b21fR2V0X1NjcmVlbl9SRVNQEg4KBlJvb21JRBgBIAEoBRIPCgdGcmFtZUlE", - "GAIgASgFEhEKCVJhd0JpdG1hcBgDIAEoDCJmChJQcm90b2J1Zl9HYW1lX01h", - "cmsSDQoFUm9tSUQYASABKAUSDQoFc3RhdGUYAiABKAUSMgoMUGxhdGZvcm1U", - "eXBlGAMgASgOMhwuQXhpYnVnUHJvdG9idWYuUGxhdGZvcm1UeXBlIlwKF1By", - "b3RvYnVmX0dhbWVfTWFya19SRVNQEg0KBVJvbUlEGAEgASgFEjIKDFBsYXRm", - "b3JtVHlwZRgCIAEoDjIcLkF4aWJ1Z1Byb3RvYnVmLlBsYXRmb3JtVHlwZSr+", - "BAoJQ29tbWFuZElEEg4KCkNNRF9ERUZBVUwQABIMCghDTURfUElORxABEgwK", - "CENNRF9QT05HEAISDgoJQ01EX0xPR0lOENEPEhgKE0NNRF9VU0VSX09OTElO", - "RUxJU1QQuBcSEgoNQ01EX1VTRVJfSk9JThDXFxITCg5DTURfVVNFUl9MRUFW", - "RRDYFxIaChVDTURfVVNFUl9TVEFURV9VUERBVEUQ2RcSGAoTQ01EX01vZGlm", - "eV9OaWNrTmFtZRCdGBIcChdDTURfVXBkYXRlX1NlbGZVc2VySW5mbxCmGBId", - "ChhDTURfVXBkYXRlX090aGVyVXNlckluZm8QqBgSEAoLQ01EX0NIQVRNU0cQ", - "oR8SEgoNQ01EX1Jvb21fTGlzdBCJJxIZChRDTURfUm9vbV9MaXN0X1VwZGF0", - "ZRCKJxIYChNDTURfUm9vbV9HZXRfU2NyZWVuEJMnEhQKD0NNRF9Sb29tX0Ny", - "ZWF0ZRDtJxISCg1DTURfUm9vbV9Kb2luEPEnEhMKDkNNRF9Sb29tX0xlYXZl", - "EPInEiIKHUNNRF9Sb29tX015Um9vbV9TdGF0ZV9DaGFuZ2VkEPYnEhYKEUNN", - "RF9Sb29tX1dhaXRTdGVwENEoEicKIkNNRF9Sb29tX0hvc3RQbGF5ZXJfVXBk", - "YXRlU3RhdGVSYXcQ1CgSGgoVQ01EX1Jvb21fUGxheWVyX1JlYWR5ENgoEiAK", - "G0NNRF9Sb29tX1NpbmdlbF9QbGF5ZXJJbnB1dBD6LhIdChhDTURfUk9PTV9T", - "WU5fUGxheWVySW5wdXQQ/y4SDwoKQ01EX1NjcmVlbhDZNhISCg1DTURfR0FN", - "RV9NQVJLEPVOKtABCglFcnJvckNvZGUSEAoMRVJST1JfREVGQVVMEAASDAoI", - "RVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAKEicKI0VSUk9S", - "X1JPT01fU0xPVF9BTFJFQURMWV9IQURfUExBWUVSEAsSIQodRVJST1JfUk9P", - "TV9DQU5UX0RPX0NVUlJfU1RBVEUQMhIfChpFUlJPUl9ST01fQUxSRUFEWV9I", - "QURfU1RBUhCTAxIcChdFUlJPUl9ST01fRE9OVF9IQURfU1RBUhCUAypACglM", - "b2dpblR5cGUSDQoJVXNlRGV2aWNlEAASDgoKVXNlQWNjb3VudBABEhQKEFVz", - "ZUhhb1l1ZUFjY291bnQQAipLCgpEZXZpY2VUeXBlEhYKEkRldmljZVR5cGVf", - "RGVmYXVsdBAAEgYKAlBDEAESCwoHQW5kcm9pZBACEgcKA0lPUxADEgcKA1BT", - "VhAEKiAKDFBsYXRmb3JtVHlwZRIHCgNBbGwQABIHCgNOZXMQASpwCg1Sb29t", - "R2FtZVN0YXRlEhIKDk5vbmVfR2FtZVN0YXRlEAASDAoIT25seUhvc3QQARIR", - "Cg1XYWl0UmF3VXBkYXRlEAISDQoJV2FpdFJlYWR5EAMSCQoFUGF1c2UQBBIQ", - "CgxJbk9ubGluZUdhbWUQBSpOChFMb2dpblJlc3VsdFN0YXR1cxIhCh1Mb2dp", - "blJlc3VsdFN0YXR1c19CYXNlRGVmYXVsdBAAEgYKAk9LEAESDgoKQWNjb3Vu", - "dEVychACQgJIAWIGcHJvdG8z")); + "EhEKCUlucHV0RGF0YRgCIAEoDSKAAQonUHJvdG9idWZfUm9vbV9TeW5fUm9v", + "bUZyYW1lQWxsSW5wdXREYXRhEg8KB0ZyYW1lSUQYASABKA0SEQoJSW5wdXRE", + "YXRhGAIgASgEEhUKDVNlcnZlckZyYW1lSUQYAyABKA0SGgoSU2VydmVyRm9y", + "d2FyZENvdW50GAQgASgNIlUKFFByb3RvYnVmX1Jvb21fQ3JlYXRlEhEKCUdh", + "bWVSb21JRBgBIAEoBRITCgtHYW1lUm9tSGFzaBgCIAEoCRIVCg1Kb2luUGxh", + "eWVySWR4GAMgASgFIlkKGVByb3RvYnVmX1Jvb21fQ3JlYXRlX1JFU1ASPAoM", + "Um9vbU1pbmlJbmZvGAEgASgLMiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZf", + "Um9vbV9NaW5pSW5mbyI3ChJQcm90b2J1Zl9Sb29tX0pvaW4SDgoGUm9vbUlE", + "GAEgASgFEhEKCVBsYXllck51bRgCIAEoBSJXChdQcm90b2J1Zl9Sb29tX0pv", + "aW5fUkVTUBI8CgxSb29tTWluaUluZm8YASABKAsyJi5BeGlidWdQcm90b2J1", + "Zi5Qcm90b2J1Zl9Sb29tX01pbmlJbmZvIiUKE1Byb3RvYnVmX1Jvb21fTGVh", + "dmUSDgoGUm9vbUlEGAEgASgFIioKGFByb3RvYnVmX1Jvb21fTGVhdmVfUkVT", + "UBIOCgZSb29tSUQYASABKAUiYQohUHJvdG9idWZfUm9vbV9NeVJvb21fU3Rh", + "dGVfQ2hhbmdlEjwKDFJvb21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1Z1Byb3Rv", + "YnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iRQobUHJvdG9idWZfUm9vbV9X", + "YWl0U3RlcF9SRVNQEhAKCFdhaXRTdGVwGAEgASgFEhQKDExvYWRTdGF0ZVJh", + "dxgCIAEoDCI/CidQcm90b2J1Zl9Sb29tX0hvc3RQbGF5ZXJfVXBkYXRlU3Rh", + "dGVSYXcSFAoMTG9hZFN0YXRlUmF3GAEgASgMIi4KLFByb3RvYnVmX1Jvb21f", + "SG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhd19SRVNQIhwKGlByb3RvYnVmX1Jv", + "b21fUGxheWVyX1JlYWR5IioKGFByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbhIO", + "CgZSb29tSUQYASABKAUiUwodUHJvdG9idWZfUm9vbV9HZXRfU2NyZWVuX1JF", + "U1ASDgoGUm9vbUlEGAEgASgFEg8KB0ZyYW1lSUQYAiABKAUSEQoJUmF3Qml0", + "bWFwGAMgASgMImYKElByb3RvYnVmX0dhbWVfTWFyaxINCgVSb21JRBgBIAEo", + "BRINCgVzdGF0ZRgCIAEoBRIyCgxQbGF0Zm9ybVR5cGUYAyABKA4yHC5BeGli", + "dWdQcm90b2J1Zi5QbGF0Zm9ybVR5cGUiXAoXUHJvdG9idWZfR2FtZV9NYXJr", + "X1JFU1ASDQoFUm9tSUQYASABKAUSMgoMUGxhdGZvcm1UeXBlGAIgASgOMhwu", + "QXhpYnVnUHJvdG9idWYuUGxhdGZvcm1UeXBlKv4ECglDb21tYW5kSUQSDgoK", + "Q01EX0RFRkFVTBAAEgwKCENNRF9QSU5HEAESDAoIQ01EX1BPTkcQAhIOCglD", + "TURfTE9HSU4Q0Q8SGAoTQ01EX1VTRVJfT05MSU5FTElTVBC4FxISCg1DTURf", + "VVNFUl9KT0lOENcXEhMKDkNNRF9VU0VSX0xFQVZFENgXEhoKFUNNRF9VU0VS", + "X1NUQVRFX1VQREFURRDZFxIYChNDTURfTW9kaWZ5X05pY2tOYW1lEJ0YEhwK", + "F0NNRF9VcGRhdGVfU2VsZlVzZXJJbmZvEKYYEh0KGENNRF9VcGRhdGVfT3Ro", + "ZXJVc2VySW5mbxCoGBIQCgtDTURfQ0hBVE1TRxChHxISCg1DTURfUm9vbV9M", + "aXN0EIknEhkKFENNRF9Sb29tX0xpc3RfVXBkYXRlEIonEhgKE0NNRF9Sb29t", + "X0dldF9TY3JlZW4QkycSFAoPQ01EX1Jvb21fQ3JlYXRlEO0nEhIKDUNNRF9S", + "b29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVhdmUQ8icSIgodQ01EX1Jvb21f", + "TXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSFgoRQ01EX1Jvb21fV2FpdFN0ZXAQ", + "0SgSJwoiQ01EX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhdxDUKBIa", + "ChVDTURfUm9vbV9QbGF5ZXJfUmVhZHkQ2CgSIAobQ01EX1Jvb21fU2luZ2Vs", + "X1BsYXllcklucHV0EPouEh0KGENNRF9ST09NX1NZTl9QbGF5ZXJJbnB1dBD/", + "LhIPCgpDTURfU2NyZWVuENk2EhIKDUNNRF9HQU1FX01BUksQ9U4q0AEKCUVy", + "cm9yQ29kZRIQCgxFUlJPUl9ERUZBVUwQABIMCghFUlJPUl9PSxABEhgKFEVS", + "Uk9SX1JPT01fTk9UX0ZPVU5EEAoSJwojRVJST1JfUk9PTV9TTE9UX0FMUkVB", + "RExZX0hBRF9QTEFZRVIQCxIhCh1FUlJPUl9ST09NX0NBTlRfRE9fQ1VSUl9T", + "VEFURRAyEh8KGkVSUk9SX1JPTV9BTFJFQURZX0hBRF9TVEFSEJMDEhwKF0VS", + "Uk9SX1JPTV9ET05UX0hBRF9TVEFSEJQDKkAKCUxvZ2luVHlwZRINCglVc2VE", + "ZXZpY2UQABIOCgpVc2VBY2NvdW50EAESFAoQVXNlSGFvWXVlQWNjb3VudBAC", + "KksKCkRldmljZVR5cGUSFgoSRGV2aWNlVHlwZV9EZWZhdWx0EAASBgoCUEMQ", + "ARILCgdBbmRyb2lkEAISBwoDSU9TEAMSBwoDUFNWEAQqIAoMUGxhdGZvcm1U", + "eXBlEgcKA0FsbBAAEgcKA05lcxABKnAKDVJvb21HYW1lU3RhdGUSEgoOTm9u", + "ZV9HYW1lU3RhdGUQABIMCghPbmx5SG9zdBABEhEKDVdhaXRSYXdVcGRhdGUQ", + "AhINCglXYWl0UmVhZHkQAxIJCgVQYXVzZRAEEhAKDEluT25saW5lR2FtZRAF", + "Kk4KEUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0U3RhdHVzX0Jh", + "c2VEZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJCAkgBYgZwcm90", + "bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.PlatformType), typeof(global::AxibugProtobuf.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -145,7 +146,7 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Update_RESP), global::AxibugProtobuf.Protobuf_Room_Update_RESP.Parser, new[]{ "UpdateType", "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Screnn_Frame), global::AxibugProtobuf.Protobuf_Screnn_Frame.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_SinglePlayerInputData), global::AxibugProtobuf.Protobuf_Room_SinglePlayerInputData.Parser, new[]{ "FrameID", "InputData" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData), global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData.Parser, new[]{ "FrameID", "InputData", "ServerFrameID" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData), global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInputData.Parser, new[]{ "FrameID", "InputData", "ServerFrameID", "ServerForwardCount" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Create), global::AxibugProtobuf.Protobuf_Room_Create.Parser, new[]{ "GameRomID", "GameRomHash", "JoinPlayerIdx" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Create_RESP), global::AxibugProtobuf.Protobuf_Room_Create_RESP.Parser, new[]{ "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Join), global::AxibugProtobuf.Protobuf_Room_Join.Parser, new[]{ "RoomID", "PlayerNum" }, null, null, null, null), @@ -5492,6 +5493,7 @@ namespace AxibugProtobuf { frameID_ = other.frameID_; inputData_ = other.inputData_; serverFrameID_ = other.serverFrameID_; + serverForwardCount_ = other.serverForwardCount_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -5542,6 +5544,20 @@ namespace AxibugProtobuf { } } + /// Field number for the "ServerForwardCount" field. + public const int ServerForwardCountFieldNumber = 4; + private uint serverForwardCount_; + /// + ///服务器提前量 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public uint ServerForwardCount { + get { return serverForwardCount_; } + set { + serverForwardCount_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as Protobuf_Room_Syn_RoomFrameAllInputData); @@ -5558,6 +5574,7 @@ namespace AxibugProtobuf { if (FrameID != other.FrameID) return false; if (InputData != other.InputData) return false; if (ServerFrameID != other.ServerFrameID) return false; + if (ServerForwardCount != other.ServerForwardCount) return false; return Equals(_unknownFields, other._unknownFields); } @@ -5567,6 +5584,7 @@ namespace AxibugProtobuf { if (FrameID != 0) hash ^= FrameID.GetHashCode(); if (InputData != 0UL) hash ^= InputData.GetHashCode(); if (ServerFrameID != 0) hash ^= ServerFrameID.GetHashCode(); + if (ServerForwardCount != 0) hash ^= ServerForwardCount.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -5595,6 +5613,10 @@ namespace AxibugProtobuf { output.WriteRawTag(24); output.WriteUInt32(ServerFrameID); } + if (ServerForwardCount != 0) { + output.WriteRawTag(32); + output.WriteUInt32(ServerForwardCount); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -5616,6 +5638,10 @@ namespace AxibugProtobuf { output.WriteRawTag(24); output.WriteUInt32(ServerFrameID); } + if (ServerForwardCount != 0) { + output.WriteRawTag(32); + output.WriteUInt32(ServerForwardCount); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -5634,6 +5660,9 @@ namespace AxibugProtobuf { if (ServerFrameID != 0) { size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ServerFrameID); } + if (ServerForwardCount != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ServerForwardCount); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -5654,6 +5683,9 @@ namespace AxibugProtobuf { if (other.ServerFrameID != 0) { ServerFrameID = other.ServerFrameID; } + if (other.ServerForwardCount != 0) { + ServerForwardCount = other.ServerForwardCount; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -5680,6 +5712,10 @@ namespace AxibugProtobuf { ServerFrameID = input.ReadUInt32(); break; } + case 32: { + ServerForwardCount = input.ReadUInt32(); + break; + } } } #endif @@ -5706,6 +5742,10 @@ namespace AxibugProtobuf { ServerFrameID = input.ReadUInt32(); break; } + case 32: { + ServerForwardCount = input.ReadUInt32(); + break; + } } } } diff --git a/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto b/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto index 64b623b..d8f66c2 100644 --- a/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto +++ b/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto @@ -292,6 +292,7 @@ message Protobuf_Room_Syn_RoomFrameAllInputData uint32 FrameID = 1;//帧编号 uint64 InputData = 2;//所有玩家操作位运算汇总 uint32 ServerFrameID = 3;//服务器帧编号 + uint32 ServerForwardCount = 4;//服务器提前量 } message Protobuf_Room_Create