Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import slippi
- import json
- gTheirs = slippi.Game("C:/Users/julbe/Documents/Slippi/desync/replays/replays/Game_20210508T160828.slp")
- gMine = slippi.Game("C:/Users/julbe/Documents/Slippi/desync/replaysMySide/Game_20210508T230826.slp")
- # m = min(len(gTheirs.frames),len(gMine.frames))
- #
- # positionsTheirs = [gTheirs.frames[i].ports[1].leader.pre.position for i in range(m)]
- # positionsMine = [gMine.frames[i].ports[1].leader.pre.position for i in range(m)]
- #
- # stickTheirs = [gTheirs.frames[i].ports[1].leader.pre.joystick for i in range(m)]
- # stickMine = [gMine.frames[i].ports[1].leader.pre.joystick for i in range(m)]
- #
- # desyncedPos = [i for i in range(len(positionsTheirs)) if positionsMine[i] != positionsTheirs[i]]
- # desyncedStick = [i for i in range(m) if stickMine[i] != stickTheirs[i]]
- from slippi.parse import parse
- from slippi.parse import ParseEvent
- framesTheirs=[]
- handlers = {ParseEvent.FRAME: framesTheirs.append}
- parse('C:/Users/julbe/Documents/Slippi/desync/replays/replays/Game_20210508T160828.slp', handlers)
- framesMine=[]
- handlers = {ParseEvent.FRAME: framesMine.append}
- parse("C:/Users/julbe/Documents/Slippi/desync/replaysMySide/Game_20210508T230826.slp", handlers)
- maxIndexTheirs = 0
- definitiveFramesTheirs={}
- for frame in framesTheirs:
- if frame.index > maxIndexTheirs:
- maxIndexTheirs = frame.index+124
- definitiveFramesTheirs[frame.index+124] = frame
- maxIndexMine = 0
- definitiveFramesMine={}
- for frame in framesMine:
- if frame.index > maxIndexMine:
- maxIndexMine = frame.index+124
- definitiveFramesMine[frame.index+124] = frame
- framesListMine={}
- for frame in framesMine:
- if frame.index+124 not in framesListMine:
- framesListMine[frame.index+124]=[]
- framesListMine[frame.index+124].append(frame)
- frameIndexesMine = [frame.index+124 for frame in framesMine]
- m = min(maxIndexMine,maxIndexTheirs)-1
- f_positionsTheirs = [definitiveFramesTheirs[i].ports[1].leader.pre.position for i in range(1,maxIndexTheirs)]
- f_positionsMine = [definitiveFramesMine[i].ports[1].leader.pre.position for i in range(1,maxIndexMine)]
- f_stickTheirs = [definitiveFramesTheirs[i].ports[1].leader.pre.joystick for i in range(1,maxIndexTheirs)]
- f_stickMine = [definitiveFramesMine[i].ports[1].leader.pre.joystick for i in range(1,maxIndexMine)]
- f_cstickTheirs = [definitiveFramesTheirs[i].ports[1].leader.pre.cstick for i in range(1, maxIndexTheirs)]
- f_cstickMine = [definitiveFramesMine[i].ports[1].leader.pre.cstick for i in range(1, maxIndexMine)]
- f_preTheirs = [definitiveFramesTheirs[i].ports[1].leader.pre for i in range(1, maxIndexTheirs)]
- f_preMine = [definitiveFramesMine[i].ports[1].leader.pre for i in range(1, maxIndexMine)]
- f_desyncedPos = [i+1 for i in range(m) if f_positionsMine[i] != f_positionsTheirs[i]]
- f_desyncedStick = [i+1 for i in range(m) if f_stickMine[i] != f_stickTheirs[i]]
- f_desyncedCStick = [i+1 for i in range(m) if f_cstickMine[i] != f_cstickTheirs[i]]
- f_desyncedPre = [i+1 for i in range(m) if f_preMine[i] != f_preTheirs[i]]
- m_stickTheirs = [definitiveFramesTheirs[i].ports[0].leader.pre.joystick for i in range(1, maxIndexTheirs)]
- m_stickMine = [definitiveFramesMine[i].ports[0].leader.pre.joystick for i in range(1, maxIndexMine)]
- m_cstickTheirs = [definitiveFramesTheirs[i].ports[0].leader.pre.cstick for i in range(1, maxIndexTheirs)]
- m_cstickMine = [definitiveFramesMine[i].ports[0].leader.pre.cstick for i in range(1, maxIndexMine)]
- m_desyncedStick = [i+1 for i in range(m) if m_stickMine[i] != m_stickTheirs[i]]
- m_desyncedCStick = [i+1 for i in range(m) if m_cstickMine[i] != m_cstickMine[i]]
- #########################################
- # Split logs into games
- def parseLogs(logsLines):
- """08:44:787 Core\HW\EXI_DeviceSlippi.cpp:2662 W[SLIPPI]: Frame 4193 player 0 X 0 21712 256 2"""
- """10:24:906 Core\Slippi\SlippiNetplay.cpp:444 I[SLIPPI_ONLINE]: [Netplay] Received selections from opponent with player idx 1"""
- # Split into games
- games = [[]]
- for line in logsLines:
- if u"Core\HW\EXI_DeviceSlippi.cpp:2662 W[SLIPPI]: Frame 1 " in line:
- games.append([])
- else:
- games[-1].append(line)
- return games
- logsMine = open("C:/Users/julbe/OneDrive/TAAQ-Desktop/PyCharmProjects/logsComp/mine.log", 'r')
- logsMineLines = logsMine.readlines()
- gamesMine = parseLogs(logsMineLines)
- logsTheirs = open("C:/Users/julbe/OneDrive/TAAQ-Desktop/PyCharmProjects/logsComp/theirs.log", 'r')
- logsTheirsLines = logsTheirs.readlines()
- gamesTheirs = parseLogs(logsTheirsLines)
- # for i in range(27):
- # with open("C:/Users/julbe/OneDrive/TAAQ-Desktop/PyCharmProjects/logsComp/games/mineGame"+str(i)+".log",'w+') as fileMine:
- # for line in gamesMine[i]:
- # fileMine.write(line)
- # for i in range(27):
- # with open("C:/Users/julbe/OneDrive/TAAQ-Desktop/PyCharmProjects/logsComp/games/theirsGame"+str(i)+".log",'w+') as fileTheirs:
- # for line in gamesTheirs[i]:
- # fileTheirs.write(line)
- # Seek differences in inputs
- import os
- def investigate(folderStr):
- # Obtain both frame lists
- directory = os.fsencode(folderStr)
- framesPacks = []
- for file in os.listdir(directory):
- filename = os.fsdecode(file)
- if filename.endswith(".slp"):
- print(filename)
- frames = []
- handlers = {ParseEvent.FRAME: frames.append}
- try:
- parse(folderStr+"/"+filename, handlers)
- except:
- print("error")
- framesPacks.append(frames)
- return framesPacks
- replayFolder = "replayComp2"
- framesPacksMine = investigate("C:/Users/julbe/OneDrive/TAAQ-Desktop/PyCharmProjects/"+replayFolder+"/mine")
- framesPacksTheirs = investigate("C:/Users/julbe/OneDrive/TAAQ-Desktop/PyCharmProjects/"+replayFolder+"/theirs")
- definitiveFramesMine = []
- definitiveFramesTheirs = []
- stickTheirs0 = []
- stickMine0 = []
- stickTheirs1 = []
- stickMine1 = []
- desyncedStick0 = []
- desyncedStick1 = []
- # 26
- for i in range(16):
- maxIndexMine = 0
- definitiveFramesMine.append({})
- definitiveFramesTheirs.append({})
- for frame in framesPacksMine[i]:
- if frame.index > maxIndexMine:
- maxIndexMine = frame.index+123
- definitiveFramesMine[i][frame.index+123] = frame
- maxIndexTheirs = 0
- for frame in framesPacksTheirs[i]:
- if frame.index > maxIndexTheirs:
- maxIndexTheirs = frame.index + 123
- definitiveFramesTheirs[i][frame.index + 123] = frame
- stickTheirs0.append([definitiveFramesTheirs[i][j].ports[0].leader.pre.joystick for j in range(maxIndexTheirs)])
- stickMine0.append([definitiveFramesMine[i][j].ports[0].leader.pre.joystick for j in range(maxIndexMine)])
- stickTheirs1.append([definitiveFramesTheirs[i][j].ports[1].leader.pre.joystick for j in range(maxIndexTheirs)])
- stickMine1.append([definitiveFramesMine[i][j].ports[1].leader.pre.joystick for j in range(maxIndexMine)])
- m = min(maxIndexMine, maxIndexTheirs)
- desyncedStick0.append([j for j in range(m) if stickMine0[i][j] != stickTheirs0[i][j]])
- desyncedStick1.append([j for j in range(m) if stickMine1[i][j] != stickTheirs1[i][j]])
- # desyncedStick0
- # [[], [76, 77], [], [], [], [], [], [], [], [45, 46, 47, 55, 57, 58, 59], [], [], [], [54, 55, 56, 57, 60, 61, 62], [57, 58, 59, 72, 73, 74], [], [12074], [], [], [], [], [], [], [], [], []]
- # desyncedStick1
- # [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [77], [], [], [], [42, 43, 45, 49, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73], [4848], [], [], [], [], [], []]
- # desyncedStick1[20]
- # []
- # desyncedStick1[21]
- # []
- # desyncedStick1[19]
- # [4848]
- # stickTheirs1[19][4848-1:4848+2]
- # [(-0.99, 0.00), (-0.99, 0.00), (-0.99, 0.00)]
- # stickMine1[19][4848-1:4848+2]
- # [(-0.99, 0.00), (0.00, 0.00), (-0.99, 0.00)]
- #index 19 -> game "20"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement