AutoHotKey + Extracting Manual-timing Windows

NOTE: This is a continual work in progress, so I will be editing more in the future

One thing that becomes available to us in the PC ports of KI (both Steam and Win10) is the ability to use AutoHotKey to test things out with much more precise timing than is humanly consistently possible. I’d like to bring attention to this tool and give some starting advice on how to use it.

First off, go to autohotkey.com, download the latest version, and run it. Going to Task Manager, right clicking AutoHotkey.exe and setting priority as high as possible is also probably a good idea.

From there, you can right click the icon for options [TODO: Attach picture] and go to “Edit This Script”. AutoHotKey will generate a script file for you to edit and open it in a text editor. Paste in the following code that does H Ankle Slicer > L Triplax linker for P1-side Thunder. A semi-colon ( ; ) and anything after in a line is a comment

SetTitleMatchMode, 2 ; This lets any window that partially matches the given name get activated
#IfWinActive, Killer ; Only activate when app with "Killer" in the name is in focus

; Alternate delay to replace AutoHotKey's built in Sleep function
; Trades precision for efficiency
PreciseSleep(milliseconds)
{
	sleep_tick := A_TickCount + milliseconds
	while(A_TickCount < sleep_tick)
		continue
	return
}

; My inputs are keyboard mapped as follows
; WASD for up,left,down,right
; y,u,i,o for LP,MP,HP,3P
; h,j,k,l for LK,MK,HK,3K

RAlt::   ; Activate hot key on right Alt key

; H Ankle Slicer opener
Send, {s down} ; push down
PreciseSleep(20) ; 20ms is >1 frame delay
Send, {a down} ; push left
PreciseSleep(20)
Send, {s up} ; release down
PreciseSleep(20)
Send, {a up} {k down} ; release left and push HK
PreciseSleep(20)
Send, {k up} ; release HK
PreciseSleep(20)

; L Triplax Linker
Send, {s down}
PreciseSleep(20)
Send, {d down}
PreciseSleep(20)
Send, {s up}
PreciseSleep(20)
Send, {d up} {u down}
PreciseSleep(20)
Send, {u up}

; Uncomment this section to jump after linker to get frame advantage
;Send, {w down}
;PreciseSleep(3000)
;Send, {w up}

; Uncomment this section to get manual timing
;PreciseSleep(1000)
;Send, {y down}
;PreciseSleep(20)
;Send, {y up}

return

Save the file in the text editor then go to “Reload This Script” which will take whatever is currently saved in the text file and start using that. Every time you make a change in the file that you want to take effect, you will need to do this reload again.

One thing that I recently used this for is deriving manual windows after linkers. To do this, you will also need OBS (to record clips) and Avidemux (to frame step the clips). The procedure is as follows:

  1. Set the script to hold up after entering the linker (uncomment the relevant section in the script)
  2. Record a clip of opener > linker > first-frame jump
  3. Open this clip in and write down the timestamps of 1) the first frame of recovery in the linker 2) the first frame of pre-jump and 3) the frame where the training dummy comes out of hit stun (blue/throw hitbox returns)
  4. Set the script to try to input a manual after the linker (re-comment holding up section and uncomment the other section)
  5. Adjust the delay until it’s the shortest possible delay that gets a manual. If you get an auto-double, you’re too early. If your manual doesn’t combo or just becomes a normal after combo, you’re too late. You’ll eventually get something like 1000 ms delay gets an auto-double but 1005 ms delay gets a manual.
  6. Record a clip of doing this manual
  7. Open this clip and write down the timestamps of 1) the first frame of recovery in the linker and 2) the first frame of startup of the manual

Ok, once you have all of this, you can get the on-hit frame advantage of the linker with timestamps from the first video:
(timestamp of first frame of jump - timestamp of exiting hit stun) * 60

You can get the window to input the manual with:
((timestamp of exiting hit stun - timestamp of first frame of recovery from first video) -
(timestamp of first frame of manual startup - timestamp of first frame of recovery from second video)) * 60

5 Likes