Thursday, May 9, 2013
Summary
Working on LTP v1.1 patch all day! Or, at least, the program that makes the patch? Yeah. It has been a fun ride making my own patching system, but, in the end, I think it was worth it
I had a really nice surprise today when I finished the patch generator (note: this is different from the diff algorithm that I've been talking about, because the actual patch is a collection of diffs with versioning information and other bookkeeping stuff). Well, at that point, I didn't think I was finished: I had not yet coded the part that handles the resource archive. I thought I would need a specific mechanism for handling it, because of the encoding scheme and the fact that a different patching software totally failed to compress it. But I ran it through the patcher just for kicks and giggles. It only took about 10 seconds, which was the first red flag in my mind, since diffing a 177MB file with a blocksize of 16 bytes should probably be prohibitively expensive, especially since I didn't do much fanciness at all in my algorithm. Then when I saw that the output patch file was only 3MB, I
knew something was wrong, since I hadn't even written the special resource handler yet. Oh well, worth a shot...
...but as it turns out, those weren't lies...it actually worked
Far better than I was expecting. When I ran the patch and realized that it did exactly what it was supposed to, I was seriously confused. After I revisited my resource archive code, I had yet another surprise: there was actually no reason that the encoding scheme would prohibit good differential compression. Hooray!! No special logic needed after all!!! But this happiness has still left me confused about how the diff only takes 10 seconds, and why the other program took so much longer and failed so badly on this archive?? Oh well. Don't ask questions
The last bit to wrap up is the updater, which I am working on right now, which applies the patch. This is turning out to be a little more annoying than anticipated, because I forgot that the updater can't use the same DLL that it is trying to update
Duh Josh. So I have to write a program that doesn't use that DLL, which requires a few structural changes in the LT library. But nothing impossible.
Anyway, I'm very happy that the v1.1 update will only clock in at a few megs
I regret that I haven't been able to figure out any of the crashing issues yet...but it's really stumping me that I can't reproduce them. Luckily, this update will ship with some much better reporting information that should allow me to debug crashes far more effectively.
PS ~ I figured out where fractals fit into LT!!! More to come on that in the future...but I'm very excited, as I think that this particular fractal that I've been playing with recently is a
perfect fit for a particular graphical effect
I knew that sudden obsession would pay off!
Hour Tally
Coding: 6.01
Internet: 4.14
Testing: 0.43
Total Logged Time: 10.58