Lafazar: I would be interested how you do this. I guess you make some sort of character recognition?
Didn't make one, just used Google's open-source Tesseract software.
It was really quite painless.
I enabled the debug menu by going to data\scripts\menus\english and replacing release.msc with debug.msc. Make a copy somewhere so you can restore it lateron.
I used VirtualDub to capture the video, but pretty much anything will do. Just make sure that the quality is good. I captured a 1680x1050 (my screen's native resolution) video using FFDShow's MJPEG codec at quality level 99. Don't worry about the video becoming too big... we don't need a high frame rate, 4FPS will be more than enough. The whole tour that yesterday's map was based on (the second one) ended up at about 2GB. You may have to set the capture mode to GDI to get VirtualDub to capture the game instead of your desktop, but that's really all there is to do.
Start capturing, open Shadow Man and go to the Extra/Debug Display options menu to enable the stats. Load the level that you want to map and just start running around. When you're done, close ShadowMan and stop the capture in VirtualDub.
Leave capture mode and re-open your video file. We need to clean the images a bit. Start by editing the video so that only gameplay-video remains. Go to video filters and add a null transform, greyscale and threshold filter.
User cropping on the null transform so that only the stuff after "CM Pos : " remains. In my case that means setting it to 206,96,674,906 , but this will naturally be different if you're using a different resolution.
Set the threshold at 88% and you should get a black image with white coordinates, nothing else. There may be a few broken frames when there's something behind the text that's really bright, but the sanity checks lateron will catch that.
Go to export image sequence and export in any format you like, just make sure that the minimum number of digits is high enough to hold the frame number of all frames.
Now, the text in the images was a bit thin, so I send the images through Paint Shop Pro's batch processor. This may not be necessary, depending on your resolution though. What will be necessary though, is converting the images to TIFFs so that tesseract can read them.
To make the text fatter, I blured the image using a GaussianBlur with radius 1.51. I then enhanced the contrast using a ColorAdjustCurves filter with mapping 42->0 and 56->255
No matter how you do it, after batch processing, you should end up with a bunch of TIFs.
Grab a portable release from
http://code.google.com/p/tesseract-ocr/downloads/list and just extract it any place you like.
To use it to convert your TIFs you'll need a simple little batch file. Just open up your text editor and paste this. Save it as shadowocr.cmd to your tesseract directory. Obviously, if you're using a different path than me (shadman\ below the tesseract folder in my case) to store your images, you'll have to adjust that:
http://dest.at/sm/shadman.cmd Also, create a file test.ini in the tesseract directory and add this:
http://dest.at/sm/test.ini Now, run the batch file. You should end up with a file shadowman.txt that has all the coordinates in it.
Now you need my little script... it's not terribly exciting and badly written, but it works.
Save the following code as as plot.html and open it up in Firefox. It should work in any half-decent browser, but I haven't tested it yet. Open shadowcoords.txt and copy the content. Paste it to the textarea of plot.html and hit plot. You should get a map.
http://dest.at/sm/plot.html