Compare commits

..

No commits in common. "5ae970673a10c84d551bfdcf3f133cd55dcbb3ec" and "8970c7e3350bbe6db165ca50ae91dff88ef07c18" have entirely different histories.

7 changed files with 20 additions and 44 deletions

View File

@ -1,5 +1,4 @@
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine;
namespace AxiReplay namespace AxiReplay
{ {
@ -24,7 +23,7 @@ namespace AxiReplay
/// <summary> /// <summary>
/// 网络数据队列 /// 网络数据队列
/// </summary> /// </summary>
public Queue<ReplayStep> mNetReplayQueue { get; private set; } = new Queue<ReplayStep>(); Queue<ReplayStep> mNetReplayQueue = new Queue<ReplayStep>();
/// <summary> /// <summary>
/// 当前数据 /// 当前数据
/// </summary> /// </summary>
@ -46,11 +45,9 @@ namespace AxiReplay
mCurrReplay.FrameStartID = int.MinValue; mCurrReplay.FrameStartID = int.MinValue;
bNetInit = false; bNetInit = false;
} }
public void InData(ReplayStep inputData, int ServerFrameIdx, uint ServerForwardCount) public void InData(ReplayStep inputData, int ServerFrameIdx)
{ {
mRemoteForwardCount = (int)ServerForwardCount;
mNetReplayQueue.Enqueue(inputData); mNetReplayQueue.Enqueue(inputData);
Debug.Log($"InData=>{inputData.FrameStartID} QCount = >{mNetReplayQueue.Count}");
mRemoteFrameIdx = inputData.FrameStartID; mRemoteFrameIdx = inputData.FrameStartID;
if (!bNetInit) if (!bNetInit)
{ {
@ -93,8 +90,7 @@ namespace AxiReplay
{ {
bool result; bool result;
inputDiff = false; inputDiff = false;
//if (targetFrame == mNextReplay.FrameStartID && targetFrame <= mRemoteFrameIdx && mNetReplayQueue.Count > 0) if (targetFrame == mNextReplay.FrameStartID && targetFrame <= mRemoteFrameIdx && mNetReplayQueue.Count > 0)
if (targetFrame == mNextReplay.FrameStartID && targetFrame <= mRemoteFrameIdx && mNetReplayQueue.Count >= mRemoteForwardCount)
{ {
//当前帧追加 //当前帧追加
mCurrClientFrameIdx = targetFrame; mCurrClientFrameIdx = targetFrame;
@ -129,23 +125,13 @@ namespace AxiReplay
int skip = 0; int skip = 0;
if (mDiffFrameCount > short.MaxValue) skip = 0; if (mDiffFrameCount > short.MaxValue) skip = 0;
else if (moreNum <= mRemoteForwardCount) skip = 0; else if (moreNum <= 1) skip = 0;
else if (moreNum <= mRemoteForwardCount + 2) skip = 0; else if (moreNum <= 3) skip = 2;
else if (moreNum <= mRemoteForwardCount + 5) skip = 1; else if (moreNum <= 6) skip = 2;
else if (moreNum <= mRemoteForwardCount + 6) skip = 2; else if (moreNum <= 20) skip = moreNum / 2; //20帧以内平滑跳帧数
else if (moreNum <= mRemoteForwardCount + 20) skip = moreNum / 2; //20帧以内平滑跳帧数
else skip = moreNum;//完全追上 else skip = moreNum;//完全追上
return skip; return skip;
//int skip = 0;
//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; //var frameGap = mDiffFrameCount;
//if (frameGap > 10000) return 0; //if (frameGap > 10000) return 0;
//if (frameGap <= 2) skip = 0; //if (frameGap <= 2) skip = 0;

View File

@ -46,7 +46,6 @@ namespace MAME.Core
Thread.Sleep(20); Thread.Sleep(20);
State.loadstate_callback.Invoke(sr); State.loadstate_callback.Invoke(sr);
Mame.postload(); Mame.postload();
mameMainMotion.ResetFreameIndex();
Thread.Sleep(20); Thread.Sleep(20);
Mame.paused = false; Mame.paused = false;
} }

View File

@ -289,15 +289,6 @@ namespace MAME.Core
} }
} }
public void ResetFreameIndex()
{
Mame.paused = true;
Thread.Sleep(20);
Video.screenstate.frame_number = 0;
Thread.Sleep(20);
Mame.paused = false;
}
private void itemSelect() private void itemSelect()
{ {
switch (Machine.sBoard) switch (Machine.sBoard)

View File

@ -262,9 +262,9 @@ RectTransform:
m_Father: {fileID: 3471319444171359701} m_Father: {fileID: 3471319444171359701}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1} m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1} m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 2.8257446, y: -46.19702} m_AnchoredPosition: {x: 454.963, y: -46.19702}
m_SizeDelta: {x: -33.109863, y: 70.007} m_SizeDelta: {x: 871.1646, y: 70.007}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3471319444327146580 --- !u!222 &3471319444327146580
CanvasRenderer: CanvasRenderer:
@ -296,10 +296,10 @@ MonoBehaviour:
m_Calls: [] m_Calls: []
m_FontData: m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 18 m_FontSize: 41
m_FontStyle: 0 m_FontStyle: 0
m_BestFit: 0 m_BestFit: 0
m_MinSize: 1 m_MinSize: 10
m_MaxSize: 107 m_MaxSize: 107
m_Alignment: 0 m_Alignment: 0
m_AlignByGeometry: 0 m_AlignByGeometry: 0

View File

@ -163,6 +163,8 @@ public class UMAME : MonoBehaviour, IEmuCore
} }
void Update() void Update()
{ {
mFPS.text = ($"fpsv {mUniVideoPlayer.videoFPS.ToString("F2")} fpsa {mUniSoundPlayer.audioFPS.ToString("F2")}");
if (!bInGame) if (!bInGame)
return; return;
@ -174,15 +176,13 @@ public class UMAME : MonoBehaviour, IEmuCore
} }
mUniVideoPlayer.ApplyFilterEffect(); mUniVideoPlayer.ApplyFilterEffect();
mUniVideoPlayer.ApplyScreenScaler(); mUniVideoPlayer.ApplyScreenScaler();
mFPS.text = ($"fpsv {mUniVideoPlayer.videoFPS.ToString("F2")} fpsa {mUniSoundPlayer.audioFPS.ToString("F2")} ,Idx:{App.roomMgr.netReplay?.mCurrClientFrameIdx},RIdx:{App.roomMgr.netReplay?.mRemoteFrameIdx},RForward:{App.roomMgr.netReplay?.mRemoteForwardCount} ,RD:{App.roomMgr.netReplay?.mRemoteForwardCount} ,D:{App.roomMgr.netReplay?.mDiffFrameCount} ,Q:{App.roomMgr.netReplay?.mNetReplayQueue.Count}");
} }
//是否跳帧,单机无效 //是否跳帧,单机无效
void FixEmulatorFrame() void FixEmulatorFrame()
{ {
var skipFrameCount = App.roomMgr.netReplay.GetSkipFrameCount(); var skipFrameCount = App.roomMgr.netReplay.GetSkipFrameCount();
if (skipFrameCount > 0) App.log.Debug($"SKIP FRAME : {skipFrameCount} ,CF:{App.roomMgr.netReplay.mCurrClientFrameIdx},RFIdx:{App.roomMgr.netReplay.mRemoteFrameIdx},RForward:{App.roomMgr.netReplay.mRemoteForwardCount} ,queue:{App.roomMgr.netReplay.mNetReplayQueue.Count}"); if (skipFrameCount > 0) App.log.Debug($"SKIP FRAME : {skipFrameCount}");
for (var i = 0; i < skipFrameCount; i++) for (var i = 0; i < skipFrameCount; i++)
if (!PushEmulatorFrame()) if (!PushEmulatorFrame())
break; break;

View File

@ -327,7 +327,7 @@ namespace AxibugEmuOnline.Client.Manager
{ {
UserDataBase newplayer = App.user.GetUserByUid(newJoin); UserDataBase newplayer = App.user.GetUserByUid(newJoin);
string newplayerName = newplayer != null ? newplayer.NickName : "Player"; string newplayerName = newplayer != null ? newplayer.NickName : "Player";
OverlayManager.PopTip($"[{newplayer.NickName}]进入房间"); OverlayManager.PopTip($"[{newplayer}]进入房间");
Eventer.Instance.PostEvent(EEvent.OnOtherPlayerJoinRoom, newJoin); Eventer.Instance.PostEvent(EEvent.OnOtherPlayerJoinRoom, newJoin);
} }
@ -527,7 +527,7 @@ namespace AxibugEmuOnline.Client.Manager
TestAllData = msg.InputData; TestAllData = msg.InputData;
App.log.Debug($"ServerFrameID->{msg.ServerFrameID} FrameID->{msg.FrameID} ClientFrame->{netReplay.mCurrClientFrameIdx} InputData->{msg.InputData}"); App.log.Debug($"ServerFrameID->{msg.ServerFrameID} FrameID->{msg.FrameID} ClientFrame->{netReplay.mCurrClientFrameIdx} InputData->{msg.InputData}");
} }
netReplay.InData(new ReplayStep() { FrameStartID = (int)msg.FrameID, InPut = msg.InputData }, (int)msg.ServerFrameID, msg.ServerForwardCount); netReplay.InData(new ReplayStep() { FrameStartID = (int)msg.FrameID, InPut = msg.InputData }, (int)msg.ServerFrameID);
} }
public void SendScreen(byte[] RenderBuffer) public void SendScreen(byte[] RenderBuffer)

View File

@ -83,7 +83,7 @@ namespace AxibugEmuOnline.Client.Network
{ {
//抛出网络数据 //抛出网络数据
//网络线程直接抛 //网络线程直接抛
if (CMDID <= (int)CommandID.CmdPong) if (CMDID == (int)CommandID.CmdPing || CMDID == (int)CommandID.CmdPong)
NetMsg.Instance.PostNetMsgEvent(CMDID, ERRCODE, data); NetMsg.Instance.PostNetMsgEvent(CMDID, ERRCODE, data);
else//加入队列,主线程来取 else//加入队列,主线程来取
NetMsg.Instance.EnqueueNesMsg(CMDID, ERRCODE, data); NetMsg.Instance.EnqueueNesMsg(CMDID, ERRCODE, data);