Dlaczego przenoszenie gier z konsol na PC jest trudne? [Zamknięte]

27

Porty PC gier konsolowych często pojawiają się miesiąc lub dwa później. Dlaczego to?

Gry są pisane w językach, które kompilują się również na komputerach PC, więc logika gry powinna się kompilować bez problemu. Co ich wtedy trzyma? Czy to renderuje kod czy co?

Morfologia krwi
źródło
3
Jest to prawdopodobnie spowodowane publikowaniem ofert. Otrzymują wynagrodzenie np. Od Sony za stworzenie ekskluzywnego tytułu na PS3 / PS4.
Aurus
Mówię o grach, które wychodzą na niektóre konsole. Mówią, że „port” wyjdzie X miesięcy po wydaniu konsoli. Pytanie brzmi, z jakiego powodu czekają. Chodzi mi o to, że marketing może mieć coś do roboty, ale interesuje mnie programista.
Bloodcount
Ale Aurus ma rację, to jest najbardziej prawdopodobna odpowiedź. Przenoszenie kodu z konsoli na PC nie jest łatwe z wielu powodów. Większość gier, które pojawią się na PC krótko po wydaniu konsoli, zostały w pierwszej kolejności zaprojektowane na PC lub przynajmniej podstawowa technologia obsługuje łatwy port. W przeciwnym razie kilka miesięcy prawdopodobnie nie wystarczy
Grimshaw
Jeśli chodzi o Twój komentarz, „gry są pisane w językach kompilowanych na PC” nie zawsze było prawdą. W szczególności chciałbym zmodyfikować słynny cytat: „Konsole i komputery mogą być komputerami, ale nie wszystkie komputery są sobie równe”.
kurtzbot,

Odpowiedzi:

47

Istnieje wiele powodów, dla których port komputera może chwilę potrwać. (Przepraszam, jeśli wydaje mi się, że gdzieś się powtarzam; jest to rodzaj napisany w locie).

Dostosowanie kontroli i rozgrywki

Gdy grasz na konsoli, samo to nakłada pewne ograniczenia na to, co możesz zrobić, ponieważ wszystko, co użytkownik ma, to gamepad.

Samo tworzenie odwzorowań 1: 1 między klawiszami klawiatury i wejściami kontrolera nie zawsze jest dobrym pomysłem - jeśli nawet jest to możliwe - dlatego czasem znalezienie dobrego rozwiązania zajmuje więcej czasu.

Abstrakcja / fragmentacja sprzętu

Kiedy tworzysz dla np. Wii U, wiesz dokładnie, jak się Wii U zachowuje, ponieważ wszystkie Wii Us są identyczne. Nie dotyczy to komputerów PC; masz wiele różnych kart graficznych i procesorów, a czasem coś nie działa na niektórych z nich. Wykrywanie tych błędów wymaga wielu testów, a ich usunięcie również wymaga czasu.

Jeśli nigdy nie używałeś silnika do stworzenia wersji na PC, musisz również odpowiednio zakodować abstrakcję sprzętu. Niektóre gry chcą obsługiwać wiele wersji DirectX i OpenGL dla Linux / Mac, a wszystko to wymaga czasu, jeśli nie zostało to zrobione wcześniej.

Spór o zasoby

Na konsolach gra nie musi konkurować z systemem operacyjnym o zasoby itp. - w tle nie dzieje się wiele rzeczy.

Na PC masz system operacyjny, mnóstwo programów działających w tle, a to oznacza, że ​​nie dostaniesz tak dużego udziału, jak się spodziewałeś. Oznacza to, że czasami musisz wykonać dodatkowe optymalizacje, szczególnie dla graczy z niższych systemów

Ulepszanie zasobów

Z konsolą masz ustalony cel, więc piszesz shadery itp., Aby dopasować ten cel.

Na PC niektóre karty graficzne obsługują bardziej zaawansowane funkcje, a być może chcesz dla nich użyć lepszego shadera. Oznacza to, że będziesz musiał napisać ten moduł cieniujący.

Rzeczy specyficzne dla platformy

Zestawy SDK konsoli mogą mieć wiele wygodnych funkcji, które nie są łatwe do mapowania na komputerze - na przykład mogą zapewniać dostęp do timerów sprzętowych lub dobrego interfejsu API dźwięku.

Te rzeczy zwykle nie są dostępne na komputerach PC; musisz użyć innych sposobów na osiągnięcie tych celów, a może to zmienia sposób, w jaki musisz wyodrębnić różnice między platformami.

Michael Madsen
źródło
4
W odniesieniu do elementów sterujących i interfejsu użytkownika nadal można to zobaczyć bardzo często, gdy menu na pulpicie komputera nawet nie działa z myszą, np. Wykonali mapowanie 1: 1 z pada kierunkowego na klawiaturę. Innym potencjalnym problemem są języki modułu cieniującego i obsługa sterowników.
Casper Beyer
1
Dobra odpowiedź ogólnie. Jednak w przypadkach, gdy programiści chcą wycisnąć maksymalną wydajność z konsol, warstwa niskiego poziomu kodu specyficznego dla platformy zwykle nie wystarcza, sama gra musi zostać zaprojektowana tak, aby wykorzystać mocne atrybuty sprzętu konsoli, co nie jest koniecznie idealne rozwiązanie również na PC!
Grimshaw
6

Prostym powodem jest to, że konsola ma jeden zestaw sprzętu, który jest taki sam na konsolę.

Twój XBox, PS3 i Wii mają ten sam sprzęt, co Twoi sąsiedzi XBox, PS3 i Wii. Jednak twój komputer ma inny procesor, inną kartę graficzną, inną ilość pamięci RAM, w rzeczywistości całą konfigurację i ustawienia systemu operacyjnego, zainstalowane sterowniki mogą być całkowicie unikalną permutacją, jakiej nie ma żadna inna osoba na świecie.

To właśnie utrudnia portowanie na PC. Musisz uwzględnić każdy możliwy sprzęt w ramach minimalnych wymagań systemowych i powyżej. To trudny i trudny proces do programowania i debugowania. Twórcom bardzo trudno jest poznać każdą konfigurację do zaprogramowania i prawie niemożliwe do uruchomienia testy dla tych konfiguracji.

Po opracowaniu go na komputery PC deweloperzy przeprowadzają szeroko zakrojone testy, ale może on także polegać na testach beta przeprowadzanych przez użytkowników przez okres od kilku tygodni do kilku miesięcy. Ten outsourcing testów z graczami w wersji beta przed oficjalnym wydaniem portu na PC jest zazwyczaj powodem rozbieżności w terminach wydania między konsolami a komputerem.

Tom „Niebieski” Piddock
źródło
5

Przeniesienie kodu na nową platformę zajmuje dużo czasu. Stworzenie nanosekundowego timera dla Xbox 360 (nigdy nie opracowałem w XNA) będzie wymagało innej implementacji niż ten sam nanosekundowy timer w Linux, Mac lub Windows. Teraz wyobraź sobie, że masz setki tego typu funkcji, które wymagają przeniesienia, tysiące, jeśli silnik jest wystarczająco masywny.

Dodanie tych różnych implementacji dla nowych platform może z łatwością zająć miesiąc lub dwa. Co więcej, nie zawsze możesz korzystać z tych samych bibliotek na Xbox 360, co na Windows, Playstation 3 lub innej platformie. Oznacza to, że potencjalnie będziesz musiał użyć całej nowej biblioteki, aby zrobić to samo, co w wersji na konsolę Xbox 360.

Ogólnie rzecz biorąc, tego rodzaju rzeczy zajmują dużo czasu. Przenoszenie na nową platformę rzadko jest łatwe w przypadku dużych tytułów AAA.

TorbenC
źródło
3

W wielu przypadkach nie ma prawie nic wspólnego z byciem trudnym .

To po prostu nie jest priorytetem. Zwariowali, żeby ledwo zdążyć wyjść na czas. Każda minuta różnicy wymaga czasu. Jeśli możesz wydać na kilku konsolach lub komputerze przed upływem terminu, zrób to najpierw, a następnie zamknij porty. Zwolnij wcześniej, zarób więcej pieniędzy. Ogólnie rzecz biorąc, konsole radziły sobie lepiej w grach pudełkowych ostatniej generacji, chociaż zaczęło się to zmieniać - nowe konsole mogą to zmienić.

Ponadto w niektórych przypadkach twórcy konsol dają korzyści ekskluzywnym wersjom, więc wydawca otrzymuje zniżkę lub inną, jeśli wydadzą najpierw na określonej konsoli, a później na innych platformach. Nie ma w tym nic technicznego.

Sean Middleditch
źródło
1

Początkowo gry są trudniejsze do wykonania na konsoli niż na PC. Ponadto konsole mają bardzo różne specyfikacje i inny sprzęt między konsolami Nintendo, Sony i Microsoft, co nie tylko skutkuje inną wydajnością, ale także różnymi problemami z wąskim gardłem.

Zwykle gra po prostu poprawia silnik, aby zmaksymalizować jakość i wydajność na każdej konsoli.

Podczas dostosowywania do komputera występują inne problemy. Konsole są jednorodne, co oznacza, że ​​wszystkie konsole mają ten sam sprzęt (wszystkie PS3 mają tę samą wydajność sprzętową). Tworząc grę na PC, kierujesz się na minimalną specyfikację, ale pozwalasz również użytkownikowi na podniesienie jakości dla bardziej wydajnych komputerów. Gry przeznaczone na komputery PC są mniej zoptymalizowane, ale są łatwiejsze dla programistów.

Programowanie na konsoli ma jedną zaletę: pozwala programistom zmaksymalizować wydajność, dzięki czemu każda gra na konsolę zawsze będzie działać dobrze.

Na PC jest gorzej, ponieważ jest tam wiele sprzętu, ale przyznana, to więcej swobody, najlepiej wyglądająca gra zawsze będzie na PC, ponieważ PC jest zawsze na najwyższym poziomie, kosztem.

Przenoszenie gry z konsoli na komputer może być trudne, ponieważ konsole są zaprojektowane pod kątem wydajności gry, podczas gdy na PC nie, ale ogólnie rzecz biorąc, znacznie łatwiej jest przenieść grę z konsoli na komputer niż na odwrót, ponieważ konsola ma znacznie mniej pamięci, coś jak 2 lub 4 razy mniej.

Zmiana kodu w celu dostosowania do tego ograniczenia pamięci będzie zazwyczaj zawsze oznaczać całkowite przeprogramowanie.

Nie sądzę, że trudno jest przenieść grę z konsoli na komputer, to tylko kwestia API. Firmy i programiści, którzy pracują tylko z konsolami, będą mieli trudności z portowaniem na PC, ponieważ nie są do tego przyzwyczajeni, ale także dlatego, że stale dostosowują się do interfejsu API konsoli, co oznacza, że ​​ich kod często odpowiada na ograniczenia kompilatora konsoli, i niekoniecznie zależy na apis na PC.

Oczywiście silniki można zaprogramować tak, aby działały na wszystkich konsolach i komputerach PC. Gdy to zrobisz, jest to łatwiejsze, lepiej niż powiedzieć programistom, aby przenieśli silnik na komputer po tym, jak powiedziano im, że nigdy nie planowano tego przez 3 lub 4 lata.

Konsole TL; DR są jednorodne i ostatniej generacji, komputery PC są heterogeniczne, a sprzęt i interfejs API stale ewoluują. Koszty są rozłożone między programowaniem a budową sprzętu, co jest kompromisem.

Dobrą rzeczą byłoby zezwolenie na uruchamianie wszystkiego przez cały sprzęt, ale ceny konsoli są kompensowane, ponieważ producenci gier płacą producentom konsoli za licencję, więc blokują swój sprzęt, aby uruchomić tylko firmy, które płacą. To niechlujne.

żart
źródło