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?
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.
źródło
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.
źródło