Wyszukiwanie w witrynie

Lossless Scaling natychmiast rozwiązał mój największy problem z emulacją GameCube


Nie podoba mi się, gdy stare gry są tak ograniczone, jak były dwadzieścia lat temu. Uważam, że kiedy emulujemy gry, postęp technologiczny powinien przekładać się na lepszą rozgrywkę. Niestety, tak to nie działało w moim emulatorze od długiego czasu. Na szczęście skalowanie bezstratne rozwiązało ten problem dla mnie, ale wiązało się to z pewnymi problemami.

Dlaczego ograniczenie do 30 klatek na sekundę dziś wydaje się powolne

Rzeczy się poprawiły z czasem



Obecnie łatwo jest uruchamiać gry na GameCube na nowszych komputerach. Emulatory retro gier pozwalają uruchamiać tytuły z wyższymi rozdzielczościami wewnętrznymi i pakietami tekstur. Miło jest zobaczyć swoje ulubione wspomnienia z dzieciństwa wyraźnie na nowym ekranie. Jednak szybko napotykasz duży problem, gdy zaczynasz grać. Większość gier z tamtego czasu była ograniczona do 30 klatek na sekundę.

Kiedy graliśmy na telewizorach kineskopowych, 30 klatek na sekundę było całkowicie w porządku. Dziś granie w grę z 30 klatkami na sekundę na monitorze o wysokiej częstotliwości odświeżania może wydawać się powolne. Monitory o wysokiej częstotliwości odświeżania, takie jak 144Hz czy 240Hz, pokazują każdą brakującą klatkę, sprawiając, że ruch kamery i animacje postaci wyglądają na nierówne.

Ludzie inwestują dużo pieniędzy w wysokiej klasy karty graficzne i szybkie monitory, ponieważ oczekują płynnego działania całego swojego oprogramowania. Uruchomienie starej gry i zobaczenie przycinającej się liczby klatek sprawia, że te drogie zestawy do gier wydają się zmarnowane. Masz całą tę moc obliczeniową, ale emulator jest ograniczony przez pierwotne ograniczenia sprzętowe konsoli.

Możesz się zastanawiać, dlaczego nie można po prostu przełączyć przełącznika w emulatorze, aby gra działała w 60 klatkach na sekundę lub szybciej. Problem polega na tym, że stare gry konsolowe powiązywały swoją fizykę, prędkość i logikę gry bezpośrednio z liczbą klatek na sekundę. Jeśli gra została stworzona, aby działać w 30 klatkach na sekundę, zmuszenie jej do renderowania w 60 klatkach na sekundę oznacza, że silnik gry będzie działał z podwójną prędkością.

Animacje odtwarzają się zbyt szybko, timery kończą się dwukrotnie szybciej, a wrogowie atakują w podwójnej prędkości. Modderzy próbowali tworzyć łatki na 60 klatek na sekundę, aby obejść te ograniczenia silnika, ale są one specyficzne dla każdej gry i często mogą zawierać błędy. Oznacza to, że zazwyczaj trzeba wybierać między graniem w grę dokładnie tak, jak została zaprojektowana, w wolnych 30 klatkach na sekundę, albo radzeniem sobie z zepsutą grą tylko po to, aby uzyskać płynniejsze wrażenia wizualne.

Używa generowania klatek dla płynniejszej rozgrywki

To skomplikowane, ale działa lepiej






Zamiast radzić sobie z odtwarzaniem w podwójnej prędkości, wyjściem dźwięku z synchronizacji i wrogami atakującymi dwa razy szybciej, możesz użyć Lossless Scaling. Nic w kodzie gry się nie zmienia i nie będziesz korzystać z niestabilnych obejść. Narzędzie Lossless Scaling Frame Generation działa całkowicie poza emulatorem. Przechwytuje ono ostateczny obraz renderowany przez emulator i dodaje algorytm uczenia maszynowego jako efekt post-process.

Oprogramowanie analizuje dwa kolejne klatki, ocenia ruch między nimi i generuje nową sztuczną klatkę do wstawienia w środku. Jest to bardzo podobne do tweeningu, gdzie silnik wypełnia lukę w animacji. Nie ingeruje w sam silnik gry, co oznacza, że emulator nadal działa w natywnych 30 klatkach na sekundę. Dzięki temu cała wewnętrzna logika, fizyka i zachowania przeciwników działają bez zarzutu.

W tym samym czasie twój monitor wyświetla 60 klatek na sekundę, dając ci płynny obraz, którego chcesz, bez ryzyka zakłóceń w rozgrywce. Więc używasz AI, aby wypełnić luki.

Korzystanie z tego narzędzia wiąże się z pewnymi kompromisami, o których powinieneś wiedzieć. Ponieważ oprogramowanie musi czekać, aż gra wyrenderuje prawdziwe klatki, zanim będzie mogło wygenerować fałszywe, może to dodać niewielkie opóźnienie w reakcjach.

Twoje oczy nie mają częstotliwości odświeżania, ponieważ tak nie działa rzeczywistość. Jednak nie jest to zauważalne, chyba że specjalnie tego szukasz. Więc nie szukaj tego. Możesz także zauważyć drobne artefakty wizualne, takie jak duchy wokół szybko poruszających się obiektów lub elementów interfejsu użytkownika, ponieważ oprogramowanie musi zgadywać, jak porusza się obraz, nie mając bezpośredniego dostępu do danych silnika.

Jednak w przypadku wolniej prowadzonych gier przygodowych lub tytułów fabularnych, to dodatkowe opóźnienie nie jest zauważalne.

Fałszywa gładkość nie jest tak dobra jak natywna moc

Nie możemy już nic więcej zrobić



Nie jest trudno być sceptycznym wobec tych interpolowanych obrazów i nazywać je fałszywymi klatkami. Wyglądają okropnie w filmach akcji i powinny być usunięte, gdy w grę wchodzą prawdziwi ludzie. Jednak w przypadku gier wideo, zwłaszcza starszych, uchwycenie tej samej sztuki na ekranie jest łatwe dla AI. To nie jest tutaj problem.

Programy takie jak Lossless Scaling wykorzystują uczenie maszynowe do przewidywania ruchu pikseli i tworzenia sztucznych klatek pomiędzy rzeczywistymi. Wyjście wizualne nie zawsze pokazuje to samo, co silnik gry renderuje. Sprawia to, że wydajność wydaje się wyższa, pozwalając, aby poszarpane gry wyglądały płynniej na wyświetlaczach o wysokiej częstotliwości odświeżania.

Wierzę również, że ta technologia daje deweloperom pretekst do wydawania złego oprogramowania. Zamiast pisać czysty kod, który działa dobrze natywnie, studio może polegać na algorytmach skalowania i generowania, aby nadrobić swoją słabą wydajność. W zasadzie jesteś zmuszony polegać na sztuczkach programowych, zamiast uzyskać surową moc, za którą zapłaciłeś, kupując drogie karty graficzne.

Kiedy używasz generowania klatek, oprogramowanie musi wstrzymać najnowszą prawdziwą klatkę, aby obliczyć pośrednią fałszywą klatkę. Ten proces, którego nie można uniknąć, dodaje wcześniej wspomniane opóźnienie wejścia. Gra działająca wewnętrznie z prędkością trzydziestu klatek na sekundę będzie nadal reagować na twoje sterowanie z tą samą wolną prędkością, nawet jeśli ekran wyświetla sześćdziesiąt klatek na sekundę.

Czasami występuje duże rozłączenie, gdzie gra wygląda na szybką, ale sprawia wrażenie wolnej i nieodpowiadającej na polecenia. Ponadto, ponieważ zewnętrzne narzędzia nie mają dostępu do wewnętrznych wektorów ruchu silnika gry, muszą zgadywać, jak poruszają się obiekty. Jest tak wiele procesów działających w tle, że to może prowadzić do gorszej rozgrywki. Dlatego lepsze jest, gdy modder naprawia to gra po grze, ale zajmuje to więcej czasu i prawdopodobnie potrzebujesz tego tylko w przypadku konkretnych gier.

Nawet biorąc pod uwagę to, jak się czuję, nazywanie generowania klatek sztuczką ignoruje rzeczywistość współczesnych ograniczeń obliczeniowych i ścisłe ograniczenia klasycznego oprogramowania. Przemysł sprzętowy stopniowo zbliża się do fizycznych granic obliczeń, co oznacza, że jego surowa moc przetwarzania nie może się podwajać w nieskończoność.

Wciąż jesteśmy bardzo daleko od dorównania temu, co może zobaczyć ludzki wzrok, więc może to być najbardziej realistyczny sposób na uzyskanie bardzo wysokich szybkości wyświetlania klatek. Ponadto natywna moc sprzętu nie może rozwiązać ograniczeń oprogramowania zapisanych dekady temu. Generowanie klatek daje dobry sposób na obejście tych zakodowanych ograniczeń bez naruszania fizyki gry. Choć dodane opóźnienie jest realne, jest prawie niezauważalne w wolniejszych grach przygodowych i tytułach fabularnych, gdzie reakcje w ułamku sekundy nie są potrzebne.


Tracisz trochę, ale zyskujesz dużo

Nie uważam, że każda gra musi działać w 60 klatkach na sekundę; myślę, że w większości starszych gier jest to ledwo zauważalne. Jednak jest wiele gier, w których jest to lepsze, jak w serii Smash Bros. czy strzelankach pierwszoosobowych. Używaj tego więc wtedy, gdy musisz, a nie cały czas. Nie warto ryzykować, że gra stanie się z czasem opóźniona, gdy grasz w symulację lub grę strategiczną. Zachowaj to więc dla Mario Party, a nie dla Animal Crossing.

Powiązane artykuły