Odtwarzanie jeszcze raz tego samego

0

Witam wszystkich.

Ostatnio zastanawiałem się jak rozwiązać pewien problem, a że nie jest on związany bezpośrednio z żadnym językiem programowania moje zapytanie postanowiłem umieścić tutaj.

Problem dotyczy graficznego przedstawienia tego co dzieje się w grze.

Chcemy zrobić symulację. Graficzne przedstawienie czegoś. Powiedzmy, że np. oglądamy coś i następnie chcielibyśmy to dokładnie powtórzyć.

Wyobraźmy sobie że chcemy zrobić managera biegów lekkoatletycznych (taki głupi przykład ;) )
Mamy powiedzmy zawodników na bieżni. Oglądamy jak pobiegli nasi gracze, a następnie chcielibyśmy ponownie obejrzeć ten sam wyścig.

O ile w przypadku oglądania takiego biegu na żywo nie ma problemu. Wszystkie zdarzenia losowe przeprowadzamy na bieżąco i reagujemy na to co się dzieje. O tyle w przypadku kiedy chcielibyśmy ponownie obejrzeć dany bieg potrzebowalibyśmy już zebranych jakiś danych o tym, żeby dokładnie dało się odtworzyć dany bieg.

Pytanie brzmi jak najłatwiej to zrealizować?

Pierwsze co mi przyszło do głowy to zapisywanie w plikach informacji o pozycji zawodników w kolejnych sekundach (ułamkach sekund). Nie potrafię nic lepszego wymyślić, ale chciałem Was spytać czy może jest jakieś lepsze rozwiązanie?

0

Mozna tak jak to napisales, zapisywac informacje o aktualnej sytuacji (vide wzorzec Memento), a mozna tez zapisywac wykonywane operacje (wzorzec Polecenie). W drugim wypadku zapisujesz sobie po kolei wywolywane funkcje/metody, np.

  • zawodnik1.PrzesunZawodnika(poczatek, koniec)
  • zawodnik2.PrzesunZawodnika(poczatek, koniec)
  • ...
  • zawodnik15.symulujUpadek(); //w normalnym przebiegu bylo to zdarzenie losowe

Musisz sobie przetestowac, ktory wariant jest mniej pamiecio/procesorozerny. Pierwszy to zwykle save'y z gry, rownie dobrze moglbys nagrywac filmik z sytuacji (ale wtedy ciezko o zmiane kamery na przyklad), a jak to save'y czasem zajmuja duzo, czasem malo. Drugi to instrukcja odtworzenia sytuacji, moze byc dluga.

1 użytkowników online, w tym zalogowanych: 0, gości: 1