So, I've been busy recently making a little linux patcher in perl for SoD. Because of intrinsic differences in the way the OS's work, even if the patcher made for Windows COULD work, it wouldn't really, because of what I like to call "spheres of influence." basically the patcher wouldn't have permission to change files!
I've gotten most of the base code out of the way, the patcher runs in --repatch-all and in --nopatch modes right now. It's got a built-in hang catcher. There is one small difficulty in a loop never resolving to false if you leave the game before logging on fully, i'm trying to figure out how to fix this
I still need to implement the standard --patch mode, which will handle the md5's.
My patcher is ONLY for POSIX compatible OS's, which include linux, bsd, unix, fedora, etc. whether or not all POSIX systems can handle the game, I don't know, I only use linux. Because of the intrinsic differences between Windows and POSIX I'm not even considering replacing the Windows patcher. If you've got Windows, just get the darned .NET runtimes already!
The present features of my patcher:
- Repatch-all mode, which just downloads every file in the files.txt except the "sod" ones, since those are eqw and the sod windows patcher, which can't run in windows.
- Run mode, which starts the game in a forked process and then keeps an eye on it so that it can run the next mode if it detects a hang.
- Anti-hang catcher, which kills off the forked process if it hangs.
- Cleanup routine, which runs after the game is killed, either by user action, or by the Anti-hang catcher. It moves the new.files.txt dloaded from the patch files to files.txt so that when run in normal patch mode, files.txt and new.files.txt can be compared. It also runs the xgamma tool to make sure gamma is at a "normal" level.
- Nopatch mode, which skips the patching step completely and just runs the game with the Anti-hang catcher and cleanup routine, making playing a little less hassle and a little more fun.
Features not yet implemented:
- standard Patch mode. This has about as much code involved in it as the rest of the patcher combined, if I'm judging correctly. It may be less, but it'll still take me a little while.
Everyone loves screenies!
I've gotten most of the base code out of the way, the patcher runs in --repatch-all and in --nopatch modes right now. It's got a built-in hang catcher. There is one small difficulty in a loop never resolving to false if you leave the game before logging on fully, i'm trying to figure out how to fix this
I still need to implement the standard --patch mode, which will handle the md5's.
My patcher is ONLY for POSIX compatible OS's, which include linux, bsd, unix, fedora, etc. whether or not all POSIX systems can handle the game, I don't know, I only use linux. Because of the intrinsic differences between Windows and POSIX I'm not even considering replacing the Windows patcher. If you've got Windows, just get the darned .NET runtimes already!
The present features of my patcher:
- Repatch-all mode, which just downloads every file in the files.txt except the "sod" ones, since those are eqw and the sod windows patcher, which can't run in windows.
- Run mode, which starts the game in a forked process and then keeps an eye on it so that it can run the next mode if it detects a hang.
- Anti-hang catcher, which kills off the forked process if it hangs.
- Cleanup routine, which runs after the game is killed, either by user action, or by the Anti-hang catcher. It moves the new.files.txt dloaded from the patch files to files.txt so that when run in normal patch mode, files.txt and new.files.txt can be compared. It also runs the xgamma tool to make sure gamma is at a "normal" level.
- Nopatch mode, which skips the patching step completely and just runs the game with the Anti-hang catcher and cleanup routine, making playing a little less hassle and a little more fun.
Features not yet implemented:
- standard Patch mode. This has about as much code involved in it as the rest of the patcher combined, if I'm judging correctly. It may be less, but it'll still take me a little while.
Everyone loves screenies!

