Zależnie od rozmiaru gry potrzebujesz trzech rzeczy. 1) Pobrania wszystkich istotnych informacji o stanie gry. 2)zakodowania ich. 3) zapisania.
1) Można to zrobić karkołomnie Singletonem czy innymi środkami wątpliwej jakości. Ja lubię kod składający się z możliwie niezależnych elementów, więc uważam że najlepiej będzie zaimplementować w każdej klasie (player/entity/game/world czy co tam masz) przechowującej informacje, funkcji zwracającej, w postaci najlepiej stringa, wszystko co warto zapisać. Następnie, gdy każdy obiekt zwróci co potrzebne, konkatenacja to jednego stringa i przesłanie do funkcji zapisz.
2 i 3) Pole do popisu. Było już o odwracaniu ASCII, ale możliwości jest wiele. Nawet zastosowanie szyfru opartego na liczbach pierwszych, jeżeli masz zamiar zrobić bardzo trudny do modyfikacji save. Poleciłbym Ci jednak coś względnie prostego i co zmusi Cię do pisania ciekawego kodu. Np. rozdzielenie poszczególnych danych w stringu kropkami, zamienienie na ascii dzięki czemu powstałby rząd liczb. Następnie po kolei konwertować na zapis binarny, zamiast 1 powiedzmy losowe liczby parzyste zamiast zer nieparzyste, i do pliku. Wczytywanie analogicznie tylko w odwrotnej kolejności. Kropki pozwoliłby określić gdzie kończy się jedna informacja a zaczyna następna.
Największy problem sprawi Ci zapewne zebranie tego, co potrzebne z obiektów gry. O tym jak save ma działaś warto pomyśleć już na początku pisania.
Serdecznie proszę o wybaczenie walorów językowych, ale piszę żeby powstrzymać się od zaśnięcia....