Przechowywanie danych potrzebnych do programu/gry

Chciałbym się dowiedzieć w jaki sposób są przechowywane np w grach wyniki gracza. Gracz po ponownym włączeniu może kontynuować swoją poprzednią grę a więc dane np wyniki jakie gracz dotychczas osiągną są przechowywane mimo zamykania gry. Mógłby mi ktoś wytłumaczyć na czym to polega, jak się przechowuje potrzebne do gry/programu dane?

Tak samo, jak wszystkie inne dane: zapisuje się w pliku/plikach.

  1. W jakich plikach najczęściej się przechowuje takie dane?

  2. W jakich plikach najbezpieczniej przechowywać dane tak aby użytkownik nie miał do nich dostępu?

Dyskowych :wink: http://asawicki.info/productions/artykuly/strukturyd_formatyp.php5

Umieszczonych w miejscu, do którego użytkownik nie ma dostępu, lub zaszyfrowanych kluczem, do którego użytkownik nie ma dostępu :stuck_out_tongue:

Nigdy nie robiłeś backup-u save-ów? Przez konwencję, najczęściej są to pliki .dat/.sav zawierające strumień bajtów. Aczkolwiek np. Europa Universalis używa tekstowego zapisu do JSON. W zasadzie to bez znaczenia ważne, byś mógł na ich podstawie odtworzyć dane, a jakie będzie rozszerzenie i format to sprawa czwartorzędna.

 

Nie da się. Jeśli save jest trzymany lokalnie, to co byś z tym nie robił i tak będzie się dało to zmodyfikować. W najbardziej hardkorowych przypadkach wystarczy wpiąć tracer wywołań i wstrzelić się z własną funkcją tuż po odkodowaniu danych (użycia klucza szyfrującego) - jeśli chodzi o odczyt i analogicznie tuż przed zapisem i można je dowolnie modyfikować. Nie da się stworzyć 100% mechanizmu zabezpieczającego po stronie klienckiej. Jedyne wyjście, to takie, jak jest np. w battle.net czy grach mmo. Save postaci trzymany jest na serwerze, tylko tak można uzyskać 100% pewności, że ktoś go nie zmodyfikuje. Użytkownik po prostu nie ma do niego dostępu, tylko pewien protokół komunikacji definiujący zbiór możliwości poza które nie może wyjść i tylko tak może wpływać na zmiany.