RamboBones
Junior Member
Posts: 119
Registered: 08-04 |
I've had some spare time recently and since writing built demos gets boring I thought I'd make my own little doom camera program. The idea is basically you load a demo, select a point to play to, then you can walk around and take a screen shot. I used Andrey's prboom226_6 source for the modification.
All worked fine until I got really frustrated at having to close and reopen the program to go to a previous point in a replay so I made it so that it could replay the demo from the beginning up to any given point repeatedly. This works for the most part except in some longer replays such as 30uv1441 or 30nm2956 there will be a certain point in the replay where some 'random' event occurs causing the replay to desync. However it ONLY happens on the second+ replay tries and even then sometimes it will play correctly and sometimes be on any of up to 4 other replay paths as it were. Even stranger if I constantlly play the demo to the same point it'll after the second time fix itself to one particular outcome, and it'll always be the same outcome even if I run the demo to various other points and then come back.
I'm not sure how good a job I did of explaining that and I'd put up the source code / exe if I had access to it atm unfortunately away from home for a bit but that's what happens. Instead I can only give some details on the method I use. All I've done is modify the D_DoDoomLoop to stop at the tic I request and then goes into a 'call D_Display' only loop so I can walk around, then it will either exit or call D_DoLoadGame to reload the replay and then play to the next tic I've requested. I'm guessing that prboom isn't compatible for playing multiple demos in a single running, but it'd be really cool if I could fix this unfortunately I simply have NO idea how such a weird bug could come about. I know something must be carrying over since the last run since you can repeatedly go to the same point and get the same either right or wrong result but go one tic further and you've got something that could be rather different.
|