Saved games

Laurent.DESNOGUES at esterel-technologies.com Laurent.DESNOGUES at esterel-technologies.com
Wed Jan 9 05:17:34 EST 2002


I have taken a quick look at how games are saved and why they failed to
be reloaded.  Some function pointers are written to the file and so any
new gamei386.so will fail to reload a saved games.

   There are two workarounds for this:

     1. instead of saving the address, save a string providing the
        function name instead of its address;  when reloading, use
        dlsym;  there are two ways to implement that:

          a. when you update the field, on top of storing in game
             structures the pointer to the function, store also a
             pointer to a string which will be saved;  problem:
             this needs to be done everywhere, so it's a no-no!
          b. when saving, translate the function address to a
             string;  problem:  we need to have the value returned
             by dlopen when loading gamei386.so.

     2. write a utility which given a saved game, the gamei386.so
        which saved it and the new gamei386.so, will translate the
        pointers;  problems:  saved game need to be translated with
        an external tool;  there will be an offset due to dynamic
        linking (not so sure about that).

I tend to favor 1.b.

   Any comments welcome, especially since I only spent half an hour
looking at the problem and I surely missed something...


               Laurent





More information about the quake2 mailing list