Ukryć dane gry przed graczem?

13

Pracuję nad moją pierwszą grą (C ++) i chcę użyć projektu opartego na komponentach. Ostatnio dużo o tym czytałem, a wczoraj zdecydowałem, że chcę przechowywać dane obiektów w zewnętrznych plikach JSON, aby zapewnić większą elastyczność i łatwość dostępu.

Potem przyszło mi do głowy, że pozostawienie tych plików w drzewie katalogów gry pozwoli graczom bardzo łatwo modyfikować wszystko, co tylko zechce.

Nie martwię się o pokazanie kodu programistom, ponieważ gra będzie open source, ale obawiam się, że niedoświadczony gracz może przerwać grę lub przynajmniej zepsuć zabawę.

Czy coś brakuje? Jakie są zasady ukrywania danych gier (w grach open source)? Czy to normalne, aby wszystko było dostępne dla każdego?

Jeśli nie, jaki jest dobry sposób na ukrycie danych?

Marco Giancotti
źródło
3
Zwykle możliwość modyfikowania gry jest funkcją, a nie błędem, szczególnie w przypadku gier dla jednego gracza.
jprete,
8
Naprawdę nie zawracałbym sobie głowy. Lepiej poświęć swój czas na stworzenie dobrej gry. =)
Jari Komppa,
1
Jestem skłonny myśleć, że (prawie) każdy, kto pobiera grę typu open source, wie wystarczająco dużo, by w rzeczywistości cieszyć się majstrowaniem przy danych gry i przerywaniem jej gry. Jeśli to dobra gra, zobaczysz wiki wyjaśniającą twój format JSON w mgnieniu oka!
Nevermind

Odpowiedzi:

33

Jeśli gracze majstrują i psują zabawę, powiedziałbym, że to ich problem. Dla majsterkowiczów połowa zabawy to patrzenie, co się psuje.

To tak, jakby się martwić, że gracze użyją kodu oszukiwającego w trybie boga, i martwić się, że gracz nie zostanie zakwestionowany.

Nie zrobiłbym nic więcej niż umieszczenie tych plików konfiguracyjnych w pliku zip (co prawdopodobnie powinieneś zrobić i tak w celu załadowania czasu) i upewnienie się, że Twój kod może z łatwością obsługiwać uszkodzone dane.

Tetrad
źródło
20

Obawiam się, że niedoświadczony gracz może przerwać grę lub przynajmniej zepsuć zabawę.

Jeśli wtrącają się w dane gry, uważają to za „zabawne”. Nie musisz ich przed tym chronić. W końcu dane komponentu encji raczej nie są spoilerem. Może gdybyś miał tam dane dialogu lub misji, byłby to problem, ale prawdopodobnie nie. Większość graczy nie wie nawet, gdzie szukać tego rodzaju rzeczy, nie wspominając o celowym ich przeszukiwaniu lub edytowaniu.

Radzę spakować i zmienić nazwę rozszerzenia pliku. Pozwoli to uniknąć przypadkowego wyglądu, ale nie będzie Ci trudno pracować. Do pracy z plikami możesz użyć czegoś takiego jak PhysicsFS .

Kylotan
źródło
5
Tak. Pamiętam grę w Colonization na Amiga. Parametry jednostek były przechowywane w prostym pliku tekstowym ze standardowym txtrozszerzeniem. Po dość dużej ilości gier zdecydowałem, że utrudnię grę, dostosowując te parametry. Później podzieliłem się tymi ustawieniami z przyjaciółmi. Było fajnie ...
liori,
3

Możesz przechowywać dane zaszyfrowane przy użyciu symetrycznego schematu szyfrowania (AES), ale nie ma to sensu: oprogramowanie jest typu open source , dzięki czemu każdy może odczytać klucz, a tym samym odszyfrować dane. To po prostu „powstrzyma” zwykłego gracza od oszukiwania.

Byłoby to trochę bezcelowe nawet w projektach zamkniętych, ponieważ znalezienie klucza do pliku binarnego jest dość łatwe.

Masz dwie możliwości:

  1. po prostu zostaw rzeczy niezaszyfrowane (ale przynajmniej zbierz skrót md5 każdego pliku, abyś mógł sprawdzić go w czasie wykonywania pod kątem uszkodzeń w dystrybucji twojej gry);
  2. przejdź do źródła zamkniętego , zaszyfruj dane (tajnym odwracalnym algorytmem wieloetapowym, takim jak odwrócenie łańcucha + zamiana bajtów + xor ze stałym ciągiem itp.), a następnie zaszyfruj wszystko za pomocą AES. Odzyskanie danych będzie trudniejsze dla każdego. O wiele trudniej.
gd1
źródło
1
Nawet twoja metoda zamkniętego źródła nie jest wcale taka trudna. Ci sami ludzie, którzy rutynowo łamią schematy stosowane do ochrony przed kopiowaniem, prawdopodobnie również mogą to złamać. Główną różnicą jest to, że nie będą zawracać sobie głowy.
jprete,
@jprete: na pewno. To tylko kwestia czasu, ale czas ma krytyczne znaczenie dla ludzi, więc utrudnienie i nieopłacalność czasami wystarczy.
gd1,
3

Zostawiłbym to. Istnieje ogromna społeczność modów i gracze lubią zmieniać / modyfikować gry. Jeśli coś złamią, to na nich. Zawsze mogą ponownie zainstalować.

Ułatwia także pracę innym programistom.

użytkownik697111
źródło