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.
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.
Odpowiedzi:
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:
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.
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ę.
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ć.