Pl/SimpleTime

From FlightGear wiki
Jump to navigation Jump to search

Przegląd

Funkcja "simple time" stara się zapewnić, aby połączone sesje multiplayer FlightGeara miały spójne i płynnie zmieniające się animacje, niezależnie od liczby klatek na sekundę czy opóźnień sieciowych między nimi.

Na przykład podczas tankowania w trybie multiplayer, każdy pilot będzie widział tę samą względną pozycję obydwu samolotów.

Używanie "simple time"

"Simple time" można włączyć w oknie dialogowym "Tryb czasu" z menu Plik -> Tryb czasu lub z wiersza poleceń za pomocą: --prop:bool:/sim/time/simple-time/enabled=true.

Opcja ta nie ma żadnych ustawień konfiguracyjnych.

Jak to działa?

Gdy używany jest "simple time", FlightGear zawsze dołącza do pakietów sieciowych czas UTC danego komputera. Znaczniki czasu otrzymanych pakietów zawsze będą nieco w przeszłości z powodu opóźnień w sieci, więc samoloty w trybie multiplayer są pozycjonowane przy użyciu ekstrapolacji, czyli przewidywania, gdzie będą "teraz" na podstawie tego, gdzie były jakiś czas temu, używając informacji o prędkości samolotu, także zawartej w pakietach sieciowych.

Tak więc przy uruchomionych wielu instancjach FlightGeara, tak długo jak ich zegary są zsynchronizowane z dokładnością do kilku dziesiątych sekundy (zazwyczaj za pomocą protokołu NTP (Network Time Protocol), który jest standardowym sposobem ustawiania przez komputery zegarów zgodnie z globalnym standardem), a opóźnienia sieciowe nie przekraczają kilku dziesiątych sekundy, każdy pilot będzie widział spójny widok wszystkich samolotów.

Radzenie sobie z pakietami multiplayer, które nie używają "simple time"

Jeśli korzystamy z "simple time", ale czasy pakietów danego samolotu multiplayer nie mieszczą się w granicach sekundy lub dwóch od naszego czasu UTC, zakładamy, że samolot nie używa "simple time". Wówczas stosujemy wygładzoną wersję różnicy czasu jako kompensacji (zakładając w zasadzie zerowe opóźnienie sieci). W ten sposób samolot innego pilota sesji multiplayer, będzie się nam wydawał poruszać płynnie, ale obaj piloci prawdopodobnie nie będą widzieć samolotów w takich samych położeniach.

Rejestrator lotu

Jeśli używany jest "simple time", to nagrania lotu również będą zawierać czas UTC, zarówno dla samolotu użytkownika, jak i innych samolotów multiplayer, o ile nagranie zostało wykonane za pomocą menu Plik -> Rejestrator lotu. W ten sposób nagranie może odtworzyć oryginalną pozycję słońca itd.

Testowanie

Funkcję "simple time" można przetestować za pomocą skryptu flightgear/scripts/python/recordreplay.py.

Więcej informacji

Szczegóły można znaleźć w: flightgear/docs-mini/README-simple-time.md

Zobacz także instrukcję dla funkcji "Real time", która jest bardziej konfigurowalnym systemem, rozwiązującym niektóre z tych samych problemów.