It’s needed to make a recording self-sufficient and independent from save files. At the moment, user should make following sequence of actions to playback loaded game:
- choose game
- select playback record
- press “Playback” button
- in pop up dialog box select is it need to load from savegame.
- if loading from savegame choosed, show load game dialog
After I implement this feature, 4th and 5th steps will be removed. Also, will be sufficient only recording file to playback the gameplay. Will not be necessary to share save file.
At first glance, it’s easy to implement this feature: just current save file during the recording and give it to
engine during the playback. But it’s not so easy to do, using the current engine API.
First of all, every function related to saving and loading works only with slot numbers and save files name generation is different for each engine, so our function can’t get filename of current save. I’ve tried to solve this by adding the virtual funtion getSaveFileName to engine class. Anyway, this function is in every engine in different forms: somewhere it part of loading function, somewhere it’s separate function, but it exists in any engine. So, i think it’s a good idea to make an unificated interface for it.
Next issue is to load savefile from recording. As I said above, we can load savefiles only by their slot number. There was to ways to solve it: write procedure which loads game state from given stream or create some virtual slot used only for recordings. First way requires to large code rewriting, so we chosen second.
I’ve almost implemented it, and now I’m doing testing and fixing a bugs. Hope to show a demo soon.