Czy pokazanie kolizji w zwolnionym tempie jest obliczeniowo relaksujące?


11

W wielu grach wyścigowych ( na przykład Burnout Paradise ), gdy zbliża się kolizja, gra automatycznie przełącza się na zwolnione tempo i kontynuuje powolną sekwencję, aż do zakończenia kolizji.

Zawsze myślałem, że to za efekty. Nie chcesz przegapić żadnej części kolizji! Ale jeden z moich znajomych niedawno zasugerował, że jest to zrobione, aby upewnić się, że w przypadku kolizji nie jest wymagana przytłaczająca szybkość przetwarzania.

Teraz myślę, że jest odwrotnie. Kiedy dochodzi do kolizji, tak wiele szczegółów jest wyświetlanych w zwolnionym tempie, jestem pewien, że na rurociągu obliczeniowym i renderingu jest narzut.

Co jest poprawne?

Czy scena w zwolnionym tempie zwiększa użycie procesora / GPU, czy zmniejsza?

Odpowiedzi:


4

Jeśli korzystasz z symulacji fizyki ze stałym czasem (tak jak powinieneś), wówczas zwolnione tempo spowoduje mniejsze obciążenie symulacji fizyki, ponieważ dla każdej klatki trzeba będzie wykonać mniej obliczeń.

Załóżmy, że korzystasz z fizyki z 200 aktualizacjami na sekundę. Na przykład. jedna aktualizacja co 0.005sekundę czasu symulacji. Podczas uruchamiania gry z 50 aktualizacjami na sekundę powodowałyby 4 aktualizacje fizyki na aktualizację renderowania. Teraz możesz uruchomić grę w zwolnionym tempie, co oznacza, że ​​spowalniasz czas symulacji. Jeśli więc gra nadal działa z szybkością 50 aktualizacji na sekundę ( 0.02sekundy czasu symulacji), ale pokazujesz świat w zwolnionym tempie (powiedzmy o połowę prędkości), to jedna klatka odpowiada 0.01sekundom czasu symulacji. Tak więc tylko 2 aktualizacje fizyki na renderowaną ramkę. Oznacza to mniej obliczeń fizycznych na renderowaną ramkę.

Więc jeśli patrzysz na to z perspektywy wykorzystania procesora na renderowaną klatkę, to zwolnione tempo jest mniej obciążające procesor (chyba że zdecydujesz się zwiększyć częstotliwość symulacji fizyki podczas zwolnionego tempa). Obciążenie GPU na ramkę jest oczywiście prawie stałe.

Jeśli pytasz o łączne obciążenie procesora / GPU na czas jednego zderzenia , to oczywiście symulacja fizyki jest taka sama, czy to w zwolnionym tempie, czy w normalnej prędkości. Obciążenie GPU będzie wyższe, ponieważ renderujesz więcej ramek.


Pierwszy akapit mówi o wyższym obciążeniu GPU. Spodziewałbym się, że obciążenie procesora graficznego będzie względnie stałe lub, mówiąc lepiej, bezpośrednio związane z liczbą klatek na sekundę (przy założeniu, że zawartość sceny się nie zmieni).
notlesh

Powiedział, że była wyższa na kolizję , ale tylko dlatego, że kolizja trwa dłużej. Jak mówi ostatnie zdanie pierwszego akapitu.
MichaelHouse

Myślę, że w przeciętnym przypadku obciążenia powinny pozostać mniej więcej takie same - kod będzie przebiegał przez te same przejścia w obu kierunkach, a zatem będzie miał około tego samego obciążenia. W szczególnych przypadkach uważam, że obciążenie procesora będzie w rzeczywistości większe w przypadku zwolnionego tempa, gdy będzie obserwowane przez cały czas trwania kolizji, ponieważ ich rozdzielczość kolizji prawdopodobnie będzie działać z pewnym czynnikiem czasu, który będzie o wiele mniejszy (zmniejszając wynikowe tłumaczenia) w zwolnionym tempie, zwiększając prawdopodobieństwo wykrycia kolizji na klatkę, co skutkuje rozdzielczością
TravisG

Nie dodam tego jako odpowiedzi, ponieważ właśnie o tym mogę teraz myśleć i nie mam danych ani rzeczywistych doświadczeń z systemami zwolnionego tempa: P
TravisG

2
@ Byte56 Pytanie brzmi: „Czy scena w zwolnionym tempie zwiększa użycie procesora / karty graficznej?” To [prawie] z pewnością oznacza użycie na czas, a nie na kolizję. Myślę więc, że odpowiedź, jeśli chodzi o GPU, jest taka, że ​​pozostaje niezmieniona. Mówię o tym tylko dlatego, że nie jest jasne, co próbuje przekazać pierwszy akapit.
notlesh

3

Jest możliwe , że może to być przypadek. Jeśli nie robisz fizyki w przypadku kolizji na GPU, oznacza to przysiad. Ale jeśli chodzi o samą fizykę ... jest to możliwe.

Jeśli symulujesz ruch wielu ciał, mają one tendencję do poruszania się w bardzo przewidywalny sposób. Siły i pola sił (tj. Grawitacja) są łatwo przewidywalne. Gdzie rzeczy się poruszają, jest szybko obliczane.

Aż do momentu, gdy jedna rzecz uderzy w drugą. Widzicie, w fizyce macie tak zwaną szczelinę czasową; jest to czas, jaki zajmuje wykonanie systemu fizyki. Jeśli przedział czasu obejmuje 1/30 sekundy (30 FPS dla aktualizacji fizyki), to każda aktualizacja fizyki przenosi obiekty o 33,3 milisekundy w przyszłość.

Gdy obiekty nie kolidują, możesz je przesunąć od początku 33,3 ms do końca. Fizyka tego jest prosta i znana od stuleci. Po prostu określasz przyspieszenie na podstawie sił siatki, przykładasz to przyspieszenie dla szczeliny czasowej do obiektu i przesuwasz je z nową prędkością (uwaga: może to być bardziej złożone, jeśli chcesz uzyskać większą dokładność).

Problem polega na zderzeniu obiektów. Nagle musisz teraz przetwarzać siły fizyczne w obrębie przedziału czasu, a nie tylko raz na początku. Jeśli obiekt zderzy się dwa lub trzy razy w ramce fizyki, to musisz wykonać kolejne obliczenia fizyki.

Jeśli masz wiele kolizji w ciągu jednego przedziału czasu, naprawdę możesz zabić swoją liczbę klatek na sekundę. Jednak prawdopodobieństwo wielokrotnych kolizji w obrębie szczeliny czasowej zmniejsza się wraz ze zmniejszaniem się wielkości szczeliny czasowej. Wysokiej klasy symulatory wyścigowe, takie jak Forza i Gran Turismo, wykorzystują swoje systemy fizyki z niesamowitą liczbą klatek na sekundę. Myślę, że jeden z nich dostaje do 300 + fps podczas aktualizacji fizyki.

Zwolnione tempo jest tego efektywnym odpowiednikiem. Poprzez zmniejszenie przedział czasu fizyki bez jednoczesnego zwiększania renderowania klatek na sekundę w celu skompensowania świat pojawia wolniej. Dlatego znacznie zmniejsza się prawdopodobieństwo wystąpienia wielu kolizji w obrębie przedziału czasu.

Biorąc to pod uwagę, wątpię, że właśnie dlatego takie gry przechodzą w zwolnione tempo. Ogólnie rzecz biorąc, jest to bardziej w stylu wizualnym i dramatycznej prezentacji. Te systemy fizyki na ogół mogą sobie z tym poradzić, pod względem wydajności.


1

Przede wszystkim dzieje się tak w celu uzyskania efektu wizualnego, a nie ze względu na wydajność.

Standardowy sposób radzenia sobie z wydajnością w ciężkich grach fizycznych polega na skalowaniu liczby obiektów, skalowaniu złożoności obiektów i majstrowaniu przy ustawieniach silnika w celu skalowania między precyzją symulacji a wydajnością. Jeśli pojawią się problemy, upuścisz to, co uważasz za najmniej znaczące funkcje.

Pamiętaj jednak, że w branży przez ostatnie ~ 15 lat branża tworzyła dość realistyczne gry samochodowe, a przy nowoczesnych komputerach nie jest tak, że trzeba je przeskakiwać do 3 kół, aby wszystko działało.

Problem:
Prawdą jest, że kolizja może powodować dodatkową pracę, ile zależy w dużej mierze od specyfiki gry, bardziej szczegółowy silnik fizyki będzie miał wiele małych kolizji między różnymi częściami, co może stanowić znaczny wzrost wymaganego obliczenia . Ale należy to wziąć pod uwagę przy skalowaniu fizyki, nie jest problemem uzyskanie dobrej fizyki, która wciąż poradziłaby sobie z niektórymi kolizjami.

Jeśli po prostu uruchomisz symulację fizyki wolniej, aby uzyskać zwolnione tempo, obciążenie spadnie proporcjonalnie. Należy jednak zauważyć, że wymagania dotyczące zwolnionego tempa i fizyki w czasie rzeczywistym są różne, możesz sobie pozwolić na mniejszą precyzję, gdy rzeczy dzieją się z prędkością wyścigową. Dopóki gracz nie zauważy, że silnik fizyki jest w błędzie, nie stanowi to dużego problemu, zwolnienie powoduje, że poślizgnięcia są znacznie łatwiejsze do złapania, a zatem zwolnione tempo wymaga większej precyzji.

Można wybrać użycie tej samej fizyki, skalowanej w celu spełnienia obu zestawów wymagań. To rozwiązanie będzie wymagało dodatkowej mocy obliczeniowej, ale jest łatwe do wdrożenia, a nowoczesne komputery są doskonale opłacalne.

Zmiana ustawień fizyki jest bardziej skomplikowana, ale może potencjalnie doprowadzić do wspaniałych kolizji, nie tylko można zwiększyć precyzję, ale można również zmienić modele fizyki samochodów na bardziej szczegółowe, które psują się w bardziej realistyczny sposób. Ten tryb powinien zużywać w przybliżeniu tyle samo czasu procesora dla fizyki, co normalny tryb, po prostu dlatego, że oba są skalowane do działania w tej samej konfiguracji minspec.

Środkowym sposobem jest użycie silnika fizyki ze zmiennym krokiem, który ogólnie zwiększy precyzję, gdy zwolnisz symulację, rozwiązując w ten sposób przynajmniej część problemu. Istnieją inne powody, dla których nie należy stosować fizyki zmiennej krok, ale zmienny krok jest wciąż dość powszechny w branży.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.