Klatka opóźnienia generatora

To również nie jest problem ze wsteczną kompatybilnością, ale sprawa pojawiała się we wczesnym dostępie. Uznaliśmy, że warto ją tutaj wyjaśnić. Generatory posiadają klatkę opóźnienia, ponieważ kiedy obiekt jest klonowany z odnośnika, potrzebuje klatki do uruchomienia zawartej logiki i sprawdzenia, czy wszystko znajduje się we właściwym stanie.

Przykład

Wyobraźmy sobie przełącznik i obracające się skrzydło. Przełącznik włącza obracające się skrzydło. Kiedy wybierzemy to urządzenie jako docelowy punkt odniesienia dla generatora, obracające się skrzydło wciąż istnieje w scenerii jako obiekt referencyjny dla generatora, ale nie jest teraz zasilane.

Kiedy generujemy obiekt, gra dosłownie klonuje działanie na punkcie odniesienia. Mamy więc teraz kopię przełącznika i obracające się skrzydło, ale jest ono wyłączone (przełącznik nie jest aktywny).

Generowanie obiektów zachodzi w klatce później niż wysyłanie sygnałów przez kod po kablach. Jeśli więc mielibyśmy pokazywać generowane obiekty na klatce, w której zostały wygenerowane, przez całą klatkę widoczne byłoby nieruchome skrzydło, a w następnej klatce – po tym, gdy sygnał z przełącznika zostałby przesłany po kablu – skrzydło zaczęłoby się obracać. Aby uniknąć tego typu problemów (i znacznie bardziej skomplikowanych, związanych z kilkoma gadżetami i osiami czasu, itp.), nie pokazujemy obiektów w pierwszej klatce, w której zostały wygenerowane. Nie generują one fizyki w tej klatce, nie uruchamiają logiki (stref uruchamiania, promieni itp.)

W drugiej klatce mamy dodatkową szczyptę sprytu – kiedy obiekt się pojawi, a generator także się porusza, zauważymy klatkę opóźnienia, ponieważ obiekt pojawi się za generatorem. Aby to skompensować, przesuwamy generowane obiekty na ostatnią chwilę, w której byłyby one wygenerowane, gdyby to generator wygenerował tę ramkę! W tym momencie na nowo przeliczane są także wszystkie prędkości.

W „Pożarze” postać w chwili śmierci traci dwa życia. To dlatego, że odradza się z emitera. Logika generowanej postaci nie może porozumieć się z pierwszą klatką, co powoduje, że system znów ją zabija.

Generowane osie czasu: Nie mamy na razie przykładów tego problemu w zawartości stworzonej przez społeczność, ale pojawiał się on u nas i jest związany z klatką opóźnienia. Najlepszego przykładu dostarczy zwizualizowanie sobie zachowania generatora.

Gadżet (np. bramka NOT) w pierwszej klatce generowanej osi czasu nie będzie niczego włączał.

Jeśli wiemy, że taki przypadek może wystąpić, najprostszą rzeczą jest zdjąć bramkę NOT z osi czasu, aby włączała każde wydarzenie logiczne, gdy tylko logika stanie się aktywna. Jeśli potrzebujemy, by ten wyzwalacz był impulsem, konieczne może być dodanie manipulatora sygnału.

Informacje w kółku

Podręcznik użytkownika Dreams jest obecnie przygotowywany. Z czasem będziemy dodawać kolejne zasoby i artykuły, a więc czekaj na aktualizacje.