The problem still remains of what to save, the engine can't know what is important and what is not.
I've been toying with the idea of a save-game Lua module for a while now but haven't started it yet (got distracted by the GitHub revolution
). The basic idea is to have scripts register their persistent data with the module and specify save triggers, either periodically or on player death/level change etc. The module would then save the registered data and reload it at the appropriate point. For example my pickuppables script would register the data structure it uses to store details about what the player has previously carried and which objects can no longer be carried (because they have served their purpose already) then if the player saves the game and reloads later this data is restored by the module prior to the pickuppables script initialisation.
Well that's the idea anyhow, not quite worked out all the implementation details yet though.
Been there, done that, got all the T-Shirts!