würd ich auch so machen wie hopfel
beim restart würde ich das level laden und aufbauen (wenn nötig). anschließend setze ich die spielvariablen und -objekte auf einen Default-Wert. danach beginnt das spiel für den spieler.
beim speichern des spiels (wofür die funktionen ja vorgesehen sind) gibts bei mir zwei arten, wie man es lösen kann.
1.) wenn das inventar gespeichert werden und der player an einer bestimmten stelle, wie dem leveleingang oder einem checkpoint, beginnen soll (wie im spiel banjo-kazooie), verfahre ich wie oben, nur das ich das inventar (und alles andere was ich speichern will) in eine datei schreibe und beim laden wieder auslese.
2.) wenn das speichern/laden wie ein snapshot funktionieren soll (also so als hätte mans nie unterbrochen), reicht in den meisten fällen game_save/load. dennoch ist man mit ner selbstgeschriebenen lösung flexibler. da sollte man mal aufwand/nutzen abwägen