Jak wdrożyć oparty na hasłach system zapisywania w stylu retro?


20

Jak mam stworzyć system haseł do gry dla jednego gracza, takiej jak w starszych grach konsolowych?

Na przykład Mega Man X oszczędza pracę, podając serię liczb, które możesz wprowadzić później, aby załadować swój zapis.


3
Nie rób tego, co zrobił Donkey Kong (NES) - co pozwala ci zaoszczędzić na kartridżu, ale NIE ZACHOWAJ LICZBY ŻYĆ - abyś miał mnóstwo żyć z pierwszego poziomu (jak 24), oszczędzaj, idź do łóżka, OBUDŹ W GÓRĘ Z 3 - Nienawidzę tego
Alec Teal

10
Uwaga pedantyczna: system haseł nie zapisuje stanu gry, ładuje predefiniowany .
Lilienthal,

5
@Lilienthal niekoniecznie. Być może jest to po prostu „zrzut” stanu zmiennych, tasowany deterministycznym algorytmem dwukierunkowym.
o0 ”.

2
@Lohoris Tak, jeśli masz wystarczającą entropię w swoim haśle, możesz uznać go za rodzaj zapisanego stanu, który jest wystarczająco blisko, aby przypominać bieżące gry. W końcu oba wymagają sposobu eksportowania i importowania stanu gry. Jednak entropia wymagana dla czegokolwiek przypominającego prawdziwy zapis (dokładna lokalizacja / punkt kontrolny, życie, zabici wrogowie, liczba amunicji, ...) wymagałaby zarówno bardzo długiego hasła, jak i bardzo złożonego algorytmu. W przypadkach, w których decyzja o użyciu haseł do zapisanych gier ma sens (jeśli w ogóle istnieją), maksyma powinna być prawdziwa.
Lilienthal

3
@AlecTeal Co dokładnie może być „głupie”? Oceniam hasło w stosunku do ilości danych przechowywanych we współczesnych grach, gdzie są one zdecydowanie nieodpowiednie dla zdecydowanej większości.
Lilienthal

Odpowiedzi:


32

Najpierw opisz stan gry (a raczej aspekty stanu, który chcesz zapisać). W przypadku gry w stylu Mega Man możesz śledzić, który z bossów na poziomie końcowym zabiłeś, liczbę ulepszeń podobnych do zbiorników energii i tak dalej.

Spakuj wszystkie te dane w polu bitowym, to znaczy przypisz odpowiednią liczbę bitów do każdej wartości:

  • Zabity boss 1 (jeden bit)
  • Zabity boss 2 (jeden bit)
  • Zabity boss 3 (jeden bit)
  • Zabity boss 4 (jeden bit)
  • Zbiorniki energii ( x 5 razem) (3 bity)
  • Odblokowano niektóre osiągnięcia (jeden bit)

Nasz przykład ma w sumie 8 bitów, co oznacza, że ​​pojedynczy znak może reprezentować hasło. W praktyce gra prawdopodobnie będzie miała więcej stanu, a zatem będzie wymagała większej liczby bitów, a tym samym większej liczby postaci. Jak zauważono w komentarzach tutaj i gdzie indziej w tym pytaniu, to podejście działa w przypadku gier „retro” lub innych gier, w których rozmiar przechwyconego stanu gry jest rozsądny. Poza pewnym punktem możesz odkryć, że złożoność haseł niezbędnych do zakodowania twojego stanu jest zbyt duża.

Aby zmniejszyć prawdopodobieństwo przypadkowej obserwacji złamania hasła, możesz zmienić układ bitów, aby wprowadzić fałszywe bity (które nie mają wpływu na stan gry, ale które sprawiają, że hasło wygląda inaczej, gdy interpretujesz wszystkie bity jako postacie) lub biegniesz poprzez jakąś odwracalną operację przypominającą skrót, mieszanie bitów tak, aby wszystkie bity „zabitego pudełka X ” nie znajdowały się obok siebie, powodując, że odpowiadające hasła stanu sekwencyjnego wyglądały zupełnie inaczej, lub wprowadzały wartości sum kontrolnych.

Jeśli się rozejrzysz, znajdziesz sporo informacji na temat systemów używanych w niektórych najpopularniejszych grach z hasłem:

Możesz przeczytać o nich dla dodatkowej inspiracji.


4
Pamiętaj, aby upewnić się, że hasło „zapisz stan” jest łatwe do wpisania i najlepiej jednoznaczne (np. Użyj „0” lub „O”, ale nie jedno i drugie).
minnmass

4
@minnmass punkty bonusowe, jeśli domyślnie przekonwertujesz podobne znaki na swój standard, więc wpisanie „O” zamiast „0” nadal przekłada się na „0”.

8
@ NPSF3000 Ponieważ w tym przypadku „hasło” nie jest miarą uwierzytelnienia; „hasło” jest samym nośnikiem pamięci.
Schilcote,

6
@ NPSF3000, jeśli pytanie nie jest dla ciebie jasne, musisz ponownie przeczytać pytanie lub zapoznać się z materiałem tła.
hobbs

2
@ NPSF3000 OP wyraźnie mówi „Retro Style” i powołuje się na Megamana, co nie jest dwuznaczne. Dowiedz się o temacie, zrozum, że nie ma to związku z bezpieczeństwem, i przestań próbować bronić tego, co zaczęło się jako uczciwa i wybaczalna ignorancja.
MickLH

3

Te gry uratowały tylko stan, w który wierzę. Hasło odnosi się tylko do poziomu do załadowania. Wystarczy użyć słownika dla czegoś takiego.

Jeśli jest to trochę bardziej skomplikowane, jak posiadanie określonej broni lub wzmacniacza, możesz zaszyfrować stan za pomocą krótkiego (ale wystarczająco długiego) kodu skrótu.

Ale zdecydowanie radzę ci tego nie używać. Hasło szybko rozprzestrzeni się w Internecie i wkrótce wszyscy wygrali twoją grę.


9
Hasła rozprzestrzeniające się w Internecie mogą być dobre. Oszukiwanie może być świetną zabawą, a w grze dla jednego gracza gracze oszukują samych siebie.
Anko,

@Anko Tak, nie lubię oszukiwać i ledwo to zrobiłem, więc jestem stronniczy. Ale z własnego doświadczenia moje gry gromadziłyby kurz o wiele szybciej i wcześniej, kiedy oszukiwałem drogę.
Madmenyo,

„... po prostu odnosi się do poziomu do załadowania.” Zdecydowanie nie we wszystkich przypadkach. Niektóre hasła odnoszą się również do bossów, zabitych, zdobywanych ulepszeń itp. Po drugie, doradzanie, że hasło można rozpowszechniać, to jedno - problem w naszym hiperłączonym świecie. Mówienie, że opcje oszukiwania powinny zostać usunięte, ponieważ TY nie lubisz oszukiwania, to coś innego. To, co lubisz, nie jest dokładnie tym, co lubią inni. Nie chodzi o to, co lubisz, ale o konsumenta . Oszukiwanie / skróty są ważną opcją - szczególnie w grach dla jednego gracza.
WernerCD

@ WernerCD po pierwsze mówię o bardziej złożonych systemach. Po prostu zaczynam od prostego systemu haseł. NIE żądam niczego. Po drugie, nie mówię nic o oszukiwaniu w odpowiedzi. Po prostu daję odpowiedź BIASED na komentarz, a nawet mówię, że jestem stronniczy i zdaję sobie sprawę z tego, że nie lubię tego. Ale jeśli nikt nie powie, co mu się podoba lub nie, skąd miałbyś wiedzieć, co lubią inni? Nadal uważam, że taki system to odpowiedni czas, a oszukiwanie w 21 wieku odbywa się inaczej. Następnym razem powinieneś przeczytać uważniej, zanim napiszesz taki komentarz IMHO.
Madmenyo,

Jeśli masz zapisane gry, ludzie również będą je udostępniać.
Dewi Morgan

1

Cóż, możesz w zasadzie zrobić to w ten sposób:

Bossy zabite = 7

Ilość monet = 36

Ma miecz = 0 (nie)

Ma serce = 1 (tak)

Obecny poziom = 6

Obecny świat = 9

Zdrowie = 100

Kod = 7V36R0A1T6O9A100

Zasadniczo każda litera oddzielna Rodzaje


-3

Podczas gdy rozwiązania takie jak system znak-stan Josha Petrie mają zalety (mały rozmiar zapisu, działa na wszystkich kopiach gry), łączą projekt gry i system stanu, aby być nieodłącznym elementem systemu haseł. Każda zmiana hasła lub stanu lub projektu i cały system się rozpada.

O wiele prostszym rozwiązaniem byłoby zbudowanie systemu składowania jak zwykle i po prostu dodanie systemu haseł ponad górą. Może to być tak proste, jak zapisanie hasła w składowaniu (być może podwojenie nazwy pliku) i sprawdzenie go pod obciążeniem, lub tak złożone, jak użycie jednej z wielu bibliotek szyfrowania (co jest dość trywialne).


Wydaje się, że istnieje pewne zamieszanie wokół tej odpowiedzi.

1) Op poprosił po prostu o hasło, które pozwoli im załadować zapis ... nie ma wymogu, aby hasło było zapisaniem.

2) Wiele gier ma obecnie duże zapotrzebowanie na miejsce do zapisania, właśnie zbudowaliśmy system szybkiego zapisywania / ładowania, który produkował 10 MB plików ... na quiz! System składowania Josha Petrie , choć ważny, jest bardzo ograniczony - gdy tylko system sklepu stanie się nietrywialny, hasła będą musiały mieć ogromną długość, aby zachować wszystkie istotne dane.

Na przykład, co się stanie, jeśli będzie 30 bossów? 20 osiągnięć? Czy jesteśmy w połowie osiągnięcia? Na jakim jest poziomie? Ile bitów odkładamy na zdrowie, życie, monety, PD? Co jeśli migawka nie ma stanu pomiędzy poziomami ... ale w połowie poziomu - pozycje gracza, wrogów, pocisków, zniszczonego / zmienionego terenu nagle składają się na wiele stanów, które należy zapisać.

Dla perspektywy, zakładając 30 znaków alfabetu i 10 literowe hasło, mamy około 50 bitów informacji do przechowywania. Często zdarza się, że gra / silnik używa do 320 bitów tylko do przechowywania pozycji, obrotu i skalowania pojedynczego obiektu. Jasne, możesz wykonywać wszelkiego rodzaju sztuczki optymalizacyjne, aby robić więcej za mniej ... ale ostatecznie tracisz czas poświęcony na zabawę w grę - jedna z najgorszych optymalizacji, jakie możesz zrobić.


3
Myślę, że problemem tutaj, a także z twoim komentarzem powyżej, jest to, że bezpieczeństwo kryptograficzne nie ma na celu zapisania stanu gry jako kawałków w haśle. Hasła skomponowane w taki sposób są łatwo odwracalne, ale trudno odgadnąć skróty i nic więcej. Z tego samego powodu nie powoduje to nieuzasadnionego połączenia w sposób, w jaki sobie wyobrażasz; jeśli stan gry staje się mniej lub bardziej skomplikowany, podobnie jest z hashem (który unieważnia poprzednie skróty), ale system działa równie dobrze przed i po.
Seth Battin

@Seth Battin ”nie powoduje to nadmiernego sprzężenia w sposób, w jaki sobie wyobrażasz„ Och, fajnie! Tak więc gra, nad którą teraz pracuję, miała zapisany plik w megabajtach ... wszystko, co muszę zrobić, to zrobić podstawowe zaciemnienie i wyświetlić go na ekranie i voila! Mamy teraz idealnie dobry system haseł?
NPSF3000,

3
Wygląda na to, że Twoja gra nie jest odpowiednia dla tej metody.
Seth Battin

@ NPSF3000 Jaki jest sens haseł w tym przypadku? Jeśli ma to uniemożliwić innym osobom korzystającym z tego samego komputera korzystanie z zapisanych gier bez pozwolenia, dlaczego nie mieć loginu do gry z nazwą użytkownika / hasłem? Jeśli ma określić, jakiego zapisu chcą, jest to „identyfikator zapisanej gry”, a nie hasło, i prawdopodobnie powinien być bardziej przyjazny. W tej chwili, jeśli dobrze cię przeczytam, potrzebujesz innego, nieokreślonego przez użytkownika hasła za każdym razem, gdy ładują nowy zapis? DLACZEGO? Jaką użyteczną korzyść to daje komukolwiek?
Dewi Morgan

1
@DewiMorgan Nie wymagam niczego, odpowiadam jedynie na pytanie operacyjne: „Jak mógłbym stworzyć system haseł do gry dla jednego gracza? Na przykład Mega Man X oszczędza pracę, podając ci liczbę cyfr które możesz wprowadzić później, aby załadować swój zapis ”. Moje rozwiązanie to robi, bez łączenia systemu składowania i systemu haseł. Najczęściej głosowana odpowiedź ma te same wady co moja, z tym, że wymaga zaprojektowania całej gry, aby pasowała do metody.
NPSF3000,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.