I made a Typing Of The Dead TAS, chapter by chapter, and uploaded the videos to youtube.
The goal was to get 0 typing errors and no damage in very hard difficulty.
I used a program created by me that identifies text on screen and types at 300 words per minute with 100% accuracy REAL-TIME; I didn't use hourglass or any similar program to rewind or slow-down time. But since it's still a Windows game, I'm posting it here.
Here's the playlist with all chapters. I hope you enjoy it (make sure you watch it in 720p60fps).
Link to video
Joined: 8/14/2009
Posts: 4089
Location: The Netherlands
Uhh....
http://www.youtube.com/Noxxa
<dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects.
<Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits
<adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.
If by scripted you mean if I know the texts that are going to come up and when, no. I just execute my program, minimize it, run the game and record it. It's a program that can play the game by itself in real-time; it takes screenshots every frame and identifies the text that's on them. Then it simulates key presses.
So yeah, it's tool-assisted.
Keep in mind that "Tool Assisted" can be any number of tools. A script like this is certainly a tool that wouldn't be permissible in a standard speedrun.
That's why I didn't make a submission, but thought that it would be interesting to show it, as it's still tool-assisted.
Sure. I made the program in Java. By pressing F5 you turn the tool on/off.
When the tool is on, the program basically does the following inside a while loop:
-Take a 640x480 screenshot (the resolution of the game)
-Search for green/yellow/red pixels, which are the colors of the bounding boxes where text is found. Then, find vertical and horizontal black lines; that means there's a bounding box.
-Make a subimage of the image inside the bounding box and make sure there isn't "gibberish" (colors that aren't used by text, random small groups of pixels, etc.). If there's gibberish, discard the text. Otherwise, apply contrast and make the subimage binary (only black and white pixels).
-Using a character separation algorithm, obtain character by character from the subimage, and store each one as a 20x20 subimage.
-Compare each subimage with a list of images that represent each character. Each comparison returns a number between 0 and 1. The higher the number, the highter the probability the image is a certain character. The comparison is simple: check if the white pixels of both images are in the same places. Each obtained character is added to an empty string.
-When there's no more subimages, simulate keypresses from the string like the pseudocode below shows:
int i=0;
while(i<text.length)
KeyPress(text(i))
Sleep(20)
KeyRelease(text(i))
Sleep(20)
i =i+1;
}
-Go back to step one.
Some characters need to simulate the Shift key.
The program sleeps 40 milliseconds for each character typed. A word is considered 5 characters, so that's 40x5 = 200 milliseconds per word.
In a minute we have 60/0.2 = 300 WPM.
After typing all the texts, the program sleeps like a quarter of a second (to make sure the shooting particles disappear).