I'm developing a mod for a closed source game, which rewrites the netcode and game state handling systems to use GGPO.
Working on the state save/load systems, I'm noticing a lot of issues dealing with Havok (this game uses Havok 2015). When i load from a saved game state and try to step to the next frame, sometimes I'll get a crash in a function trying to handle a Havok struct. I believe my issue may be that I'm corrupting internal Havok state in some way. Currently i just ignore Havok structs, and just save/restore the pointers to them in the game structs, which not only doesn't fully work for accurately saving state, but also causes these crashes.
While there does exist a WorldSnapshot and WorldSnapshot_Load feature in Havok, it doesn't save/restore the HkpWorld in-place, meaning i would have to manually reconnect all the pointers to Havok structures the game is using, which seems near impossible.
Basically, I'm interested in how other Havok based games handle rollback, since i assume the state inside Havok structures has to be updated on rollback due to it containing position and hitbox data. Do they save and restore the entire HkpWorld? Does modern Havok have better methods to saving and loading specific Havok state? On rollback do they re-create the Havok structures from the game state?