Jak utworzyć funkcję Ghost Replay w grze?

19

Gdy ustawisz osobisty najlepszy czas okrążenia w grze wyścigowej na konsole, masz możliwość konkurowania ze swoim duchem.

Jak można stworzyć tę funkcję dla zwykłej gry dla jednego gracza?

Claude Keller
źródło
2
+1 Ciekawe pytanie dla początkującego gracza (ja). =)
Czy Marcouiller
Jeśli powiesz nam, co to jest za gra, możemy pomóc Ci bardziej szczegółowo.
AttackingHobo

Odpowiedzi:

10

Duchy zazwyczaj wykonuje się, wyświetlając powtórkę z poprzedniej próby. Ta powtórka jest renderowana z niemożliwą do zderzenia wersją samochodu gracza, abyś nie mógł na nią wpłynąć. Ponieważ gry wyścigowe często mają funkcję powtórek, ten rodzaj pojawia się za darmo.

Oto dobry punkt wyjścia do budowy systemu powtórek: http://www.gamasutra.com/view/feature/2029/developing_your_own_replay_system.php

Także tutaj jest wiele pytań na ten temat:

wkerslake
źródło
+1 Właśnie nauczyłem się czegoś nowego z twoją odpowiedzią, dzięki! =)
Czy Marcouiller
1

To zależy od technologii, z którą pracujesz. Dlatego nie możemy tak naprawdę omawiać najlepszego sposobu, ponieważ może on zmienić się z technologii na inną. Rażący pomysł moim zdaniem byłby następujący:

  1. Użyj bazowego magazynu danych, aby zachować swoje dane (XML, pliki cookie, baza danych, CSV, inne ...);
  2. Pracuj nad dostępem do danych do tego bazowego magazynu danych;
  3. Musisz przechowywać dane informacyjne o najlepszym wyniku gracza, więc wymagany jest identyfikator (adres e-mail, nazwa wejściowa, w przeciwnym razie ...);
  4. W ten czy inny sposób powiąż ten najlepszy wynik z identyfikatorem.

Krótko mówiąc, zakładając użycie bazy danych, moglibyśmy mieć dwie tabele:

  1. Dane użytkowników / graczy (identyfikator, adres e-mail itp.);
  2. Najlepsze dane informacyjne tablicy wyników.

Następnie możesz zapisać informacje o użytkowniku wraz z indywidualną tablicą wyników, która może, w razie potrzeby, zawierać rejestr daty i godziny określający moment osiągnięcia tego wyniku.

Mam nadzieję, że to pomaga i że poprawnie zrozumiałem pytanie. W przeciwnym razie poinformuj mnie, abym mógł odpowiednio edytować swoją odpowiedź.

Will Marcouiller
źródło
3
Myślę, że prawdopodobnie szuka mechanizmu nagrywania / odtwarzania, aby to osiągnąć. Deterministyczne środowisko gry, śledzenie zdarzeń, które zmieniają rzeczy (na przykład dane wejściowe gracza) i tym podobne są zwykle zalecanymi sposobami na to.
James
Dzięki za wkład, James! Są to rzeczy, o których nie wiem, choć moja odpowiedź to również podejście łatwe do wykonania, pokornie. Chciałbym jednak dowiedzieć się więcej na ten temat. Aha, +1 za komentarz, to uczy mnie, że istnieje inne wykonalne podejście. =) Dzięki! =)
Czy Marcouiller
jest mi bardzo przykro z powodu tego głupstwa. Nadal uczę się podstaw dzięki obu tym informacjom. Naprawdę nie mogę odpowiedzieć z odpowiednią wiedzą, ponieważ nie mam żadnych. za każdym razem, gdy próbuję pobić swój najlepszy wynik, który widzę na ekranie, widzę ducha (powtórkę) tego, jak grałem w grę, kiedy ustawiłem swój najlepszy wynik
Claude Keller
@ Czy powiesz mu informacje o tym, co można by zrobić w przypadku konfiguracji dla wielu graczy, gdy tylko on znajdzie odpowiedź na swoje pytanie dotyczące gry dla jednego gracza. Jego pytanie brzmi: jak stworzyć ducha.
AttackingHobo
@AttackingHobo: Dzięki, że mi powiedziałeś. Właściwie zorientowałem się z komentarza Jamesa na temat nagrania, a po przeczytaniu odpowiedzi wkerslake, teraz lepiej rozumiem, o co prosi OP. Poza tym masz rację mówiąc, że moja proponowana konfiguracja jest bardziej prawdopodobna do użycia w konfiguracji dla wielu graczy. Hej, wciąż się tutaj uczę i dziękuję za pozwolenie na lepszy rozwój! Tworzenie gier to dla mnie wciąż nowa sztuczka, choć jestem doświadczonym programistą. =) Dzięki za komentarz AttackingHobo! =)
Czy Marcouiller
1

Odpowiedź na to pytanie nie jest łatwa bez dodatkowych informacji na temat Twojej gry. Odpowiedź z wkerslake działa, o ile bieżąca rozgrywka z duchem nie może wpływać na determinizm zapisanych danych o duchach. Jeśli zarejestrowane dane są próbą czasową pojedynczego samochodu w środowisku statycznym, powinieneś dobrze korzystać z tej techniki.

Jednak w wielu grach z odtwarzaniem duchów, takich jak Super Meat Boy, pozycja gracza może zmienić stan poziomu i AI. Oczywiście nie możesz mieć ducha wpływającego na świat i sztuczną inteligencję, więc lepiej może po prostu nagrywać zmiany pozycji + animacji (i wszystko inne widoczne) w każdej klatce dla głównego gracza. Podczas odtwarzania po prostu renderuj ducha w bieżącej lokalizacji i klatce animacji, nie będąc na świecie. Pozwala to na odtworzenie ducha i nie wpływa na niego obecny odtwarzacz.

Lathentar
źródło