Dlaczego w finałowej grze pozostały dodatkowe zasoby?

28

Właśnie czytałem o tym, co zostało odkryte w plikach gry No Man's Sky, o wielu rzeczach, które nie były używane ani istotne w grze. Niedawno przeczytałem też o ustawieniach E3 pozostawionych w plikach Watch Dogs. Dlaczego twórcy gier zostawiają stare i nieużywane pliki w ostatecznej wersji gry?

Z pewnością zajmuje to więcej miejsca na dysku i oznacza, że ​​jeśli pobierzesz grę, musisz pobrać więcej danych?

Czy deweloperzy nie boją się tego, co ludzie mogą znaleźć?

Jay P.
źródło
7
generalnie nie wykorzystuje wystarczającej ilości danych, aby uzasadnić ich usunięcie. Czasami usunięcie „nieużywanych” plików może powodować problemy z innymi obiektami gry, które używają części „nieużywanych” plików. Myślę, że sprowadza się to do terminów, które muszą być dotrzymane, oraz faktu, że w ostatniej chwili można skrócić treść.
Ryan biały
10
Na marginesie, podłoga krojowni jest pełna takich przykładów. tcrf.net/The_Cutting_Room_Floor
drawoc
2
1) Nikt nie pamiętał o ich usunięciu. 2) Tak. 3) Nie.
253751
Innym przykładem jest Dota2. Nie tylko programiści zostawiają część zasobów, ale zawierają nawet niekompletne funkcje, które mogą oznaczać przyszłe wydania. Np. Nowe postacie, przedmioty lub umiejętności. Tak więc osoby, które zdemontują plik binarny, będą mogły zobaczyć przynajmniej niektóre z przyszłych wiadomości o grze (godny uwagi przykład: postać lorda do dołu / podziemia, która była widziana w kodzie lata temu, została oficjalnie ogłoszona kilka dni temu).
Bakuriu,

Odpowiedzi:

35

Główne gry używają czegoś, co nazywa się potokiem kompilacji. To jest jak inny zestaw narzędzi, który obsługuje tworzenie zawartości gry dla wszystkich różnych dystrybucji. Gry wieloplatformowe, takie jak No Man's sky i Watch_Dogs, zdecydowanie używają różnych zasobów dla różnych platform. Widzę więc dwie możliwe odpowiedzi na twoje pytanie.

  1. Twórcy zapomnieli usunąć pewne zasoby z rurociągu i zostali dołączeni do rzeczywistej gry.

  2. Twórcy celowo pozostawili niektóre „nieużywane” zasoby w grze do późniejszego wykorzystania podczas aktualizacji lub aktualizacji, ponieważ nie byli w stanie dotrzymać terminu. Przykład Devil's Pit z Wiedźmina 3.

Uri Popow
źródło
16
Ponadto, 3. Celowo umieściłem „nieużywane zasoby”, aby modderowie / poweruserzy znaleźli je, aby zajrzeć do nadchodzących wydań. Podobne do # 2, z tą różnicą, że treść nie może być nawet użyta w tym konkretnym tytule lub przyszłych łatkach.
Kroltan
4
+1 dla Kroltana # 3. IIRC Wiedźmin 3 ma przykład pisanki ukrytej w nieużywanej zawartości. Był pewien sekretny obszar, w którym trzeba było zmodyfikować grę, aby uzyskać zdjęcie deweloperów lub coś w tym stylu.
mleko
3
„Zapomniałem usunąć” to niezbyt dobry sposób na opisanie tego. Deweloperzy mogą wiedzieć, że usunęli korzystanie z zasobów. Ale możliwe, że inny zespół zaczął korzystać z tego zasobu. W takim przypadku ewentualny koszt usunięcia (całkowite zerwanie gry) znacznie przewyższa korzyść z jego usunięcia.
Aron
33

Znalezienie wszystkich odnośników w dużej grze, nad którą pracuje wiele osób, może być trudniejsze niż myślisz . Nawet jeśli istnieją wyraźne narzędzia do pomocy (zbudowaliśmy takie narzędzia w ArenaNet, każdy, kto korzysta z Unreal, ma dostęp do wersji tych narzędzi Unreal, Bungie ma narzędzia, które robią to samo, a nawet mówił o nich itp.)

Istnieje kilka sposobów odwoływania się do treści, które mogą pokonać takie systemy, na ogół po prostu poprzez odwołanie się do treści przez coś, czego system nie może śledzić (na przykład poprzez tworzenie niejawnego lub zakodowanego na stałe odwołania w kodzie do jakiegoś zasobu).

Nawet zakładając, że rozwiązałeś problem znalezienia wszystkich odsyłaczy do treści, masz problem z niemożnością stwierdzenia, czy coś jest rzeczywiście używane . Być może gdzieś w skrypcie znajduje się odniesienie do jakiegoś zasobu, ale głośność wyzwalacza dla tego skryptu jest niepoprawnie umieszczona w ścianie i dlatego zawartość nigdy nie może się odrodzić w grze. Wyczerpujące przetestowanie tego jest również dość trudne.

Kiedy zautomatyzowany (lub automat zdolnymi ) metody wykrywania i odfiltrowanie niewykorzystana zawartość zawiodą, pozostaje ci staromodny sposób: interwencji człowieka. Ludzie popełniają błędy, złe założenia (mogą myśleć plik jest nadal stosowane, mimo to nie dlatego, że ktoś inny dokonał zmiany), a nawet czasami tak wybrać, aby celowo pozostawić zawartość znaczenia w grze jako jaja wielkanocne. Do tego prowadzi po prostu ludzka omylność.

To zazwyczaj nie wystarczająca ilość treści, aby przenieść igłę naprawdę dużo dla obciążenia lub plików optymalizacji wielkości. Istnieją również narzędzia do zgłaszania największych lub najwolniejszych zasobów w dowolnym łańcuchu kompilacji lub silniku, ale nacisk kładziony jest na zmniejszenie wpływu głównych przestępców i nie znajdowanie i lokalizowanie każdego zmarnowanego bajtu. Zwykle.

Josh
źródło
Przykład niewykorzystanego pliku jako pisanki na Arqade: Gdzie w Undertale pojawia się „Song That Might Play When You Fight Sans”?
Philipp
1
Starbounl ma obecnie problem polegający na tym, że nie można uzyskać / zrobić „gotowanej macki”, ponieważ fragment, który uczy cię przepisu, został usunięty. Tymczasem pliki zasobów i definicje po prostu siedzą i wyglądają, jakby powinny działać. Biorąc pod uwagę, że tam często uczysz się jednego przepisu na tworzenie / zbieranie różnych przedmiotów wykonanych z tego samego składnika (w każdym razie na jedzenie), łatwo jest zobaczyć, jak przez pomyłkę można wykluczyć części z gry.
StarWeaver,
1
Nawet jeśli można znaleźć całą zawartość, która nie jest używana przez grę zawartą na dysku, niektóre gry mają na celu umożliwienie użytkownikom pobierania dodatkowych modułów dodatkowych, które mogą zostać wyprodukowane przez dostawcę po wyprodukowaniu dysków . Jeśli dysk zawiera tekstury o wartości dziesięciu megabajtów, które nie są używane w grze na dysku, ale będą przydatne w wersji do pobrania, może to pozwolić na zmniejszenie rozmiaru pobierania o dziesięć megabajtów.
supercat
1
Starym przykładem, w którym w dostarczanej grze było wiele nieużywanych zasobów, był MechCommander 2. Kiedy Microsoft przetestował na nim nowe narzędzia XNA Build, ujawnił, że 40% tekstur gry było niewykorzystanych. blogs.msdn.microsoft.com/briankel/2006/01/24/…
Ross Ridge
Tylko uwaga: w przypadku języków kompletnych Turinga (a najbardziej przydatne są), ustalenie, czy wiersz kodu został kiedykolwiek wykonany, czy nie, jest nierozwiązywalne (problem z zatrzymaniem). Jeśli ci się to uda, równie dobrze możesz porzucić grę i zamiast tego odebrać nagrodę Nobla.
Ordous,
9

W pozostałych odpowiedziach brakuje tego, że nie ma to nic wspólnego z grami. Wpływa na wszystkie aplikacje.

Zawsze są pliki i kod, który nie będzie używany w żadnym dość złożonym programie. Dzieje się tak z powodu następujących 2 rzeczy:

  • Programy ewoluują z czasem.
  • Wymaga wysiłku, aby dowiedzieć się, czy jakiś fragment kodu lub plik nie jest już używany.
    • Jeśli usuniesz rzeczy bez ponoszenia wysiłku, zachowanie aplikacji stanie się nieprzewidywalne
Piotr
źródło
7

Dodając do / co także zwiększa Uri Popov jest odpowiedź :

  1. Programy mogą instalować pakiety aktualizacji, które zawierają nowe, ulepszone wersje istniejących plików zasobów i aktualizację samego programu. Ze swojej strony nie zastępuję poprzednich wersji plików zasobów, ponieważ chcę umożliwić powrót do wcześniejszej wersji programu (wyobraź sobie na przykład panikę związaną z dystrybucją całkowicie katastrofalnej aktualizacji :-)). Oryginalna wersja programu może wykorzystywać teksturę_0.dds i zaktualizowaną teksturę_1_1.dds (stąd tekstura_0.dds nie jest już potrzebna). Zastąpienie (użycie tylko jednej nazwy) uniemożliwiłoby usunięcie aktualizacji programu, tj. Powrót do pierwotnej wersji, chyba że istniałaby również trudna mechanika zastępowania nowszych plików zasobów starszymi. I to nie jest coś, co ktoś chce wspierać.

Edytować:

Reagując na komentarz do pierwotnego pytania,

Nikt nie pamiętał o ich usunięciu

  1. Powiedziałbym, że nikt nie odważył się ich usunąć. Co się stanie, jeśli w grze brakuje wystarczającego pułapkowania błędów (przez pomyłkę, ignorancję, błąd, osoba kluczowa opuściła firmę itp.) W punkcie ładowania tego (obecnie brakującego) pliku X, a problem nie został odkryty pomimo intensywnych testów? Powiedzmy, że ładowanie odbywa się tylko „co 3 razy”, tylko na poziomie 35 z 36, który osiągasz dopiero w 4 tygodnie intensywnej gry :-). Utrata reputacji przez awarię oprogramowania jest brutalnym zjawiskiem, aw najgorszym przypadku może doprowadzić do bankructwa firmy. Lepiej nie dotykaj tego pliku :-).
Stormwind
źródło
4
+1 za „nikt nie odważył się usunąć”. Nieusunięcie nieużywanego zasobu często kosztuje tylko trochę miejsca na dysku. Usunięcie zasobu, z którego korzysta jeszcze ktoś z twojego zespołu, może kosztować reputację Twojej firmy, jeśli pozostawi duże fioletowe szachownice lub spowoduje awarie.
Patrick M
2

Dlaczego twórcy gier zostawiają stare i nieużywane pliki w ostatecznej wersji gry?

Z pewnością zajmuje to więcej miejsca na dysku i oznacza, że ​​jeśli pobierzesz grę, musisz pobrać więcej danych?

Czy deweloperzy nie boją się tego, co ludzie mogą znaleźć?

Twórcy gier pozostawiają nieużywane pliki w ostatecznej wersji gry, ponieważ nie chcą wkładać wysiłku w znajdowanie i usuwanie wszystkich nieużywanych plików. Po tym, jak wszystkie gry działają dobrze, z odrobiną dodatkowego materiału, a czas to pieniądz. Sprzątanie zwiększa koszty (w zależności od tego, jak to się dzieje zautomatyzowane).

Chociaż zajmuje więcej miejsca i oznacza, że ​​należy pobrać więcej danych, zwykle nie jest to problem programistów, a nawet klienci zwykle nie dbają o nieco większe rozmiary pobierania.

Nie wiesz, czy programiści muszą się bać czegokolwiek, co ludzie mogą znaleźć? Dlaczego powinni? Dopóki nie ma nic kompromisowego w dodatkowych plikach (naprawdę zła grafika, żarty o swoich szefach lub klientach ...), prawdopodobnie nie obchodzi ich to zbytnio. Chociaż w niektórych przypadkach faktycznie boją się tego, co gracze mogą wykryć w zasobach.

Trilarion
źródło
Not sure if developers need to be afraid of anything people might find?przeczytaj, dlaczego test techniczny Titanfall 2 nie nadchodzi na PC, nie zgadzają się: P.
TMH,
@TomHart Masz rację. W tym przypadku się bali. W innych przypadkach, takich jak te wymienione w pytaniu, nie były i obejmowały dodatkowe aktywa. Myślę, że poziom lęku różni się między programistami.
Trilarion
1

Zostało to wskazane, ale inne odpowiedzi nie zostały w pełni dotknięte: wszystko sprowadza się do kosztów, a niektóre koszty są trudniejsze, niż mogłoby się wydawać.

Najbardziej oczywistym kosztem jest to, że ktoś musi je usunąć. Teraz możesz po prostu umieścić stażystę na skrzynce i poprosić go, aby przeszukiwał pliki i co nie, aby usunąć te, które nie są potrzebne w rzeczywistej grze. Ale nadal musisz za to zapłacić, a nawet jeśli tego nie zrobisz (ponieważ jesteś potworem, który nie płaci stażystom), nadal możesz mieć tego stażysty, który robi coś pożytecznego, np. Zamawia pizzę dla zespołu programistów, więc to wciąż kosztuje.

Mniej oczywistym kosztem jest to, że zasób, który chcesz usunąć, został umieszczony z jakiegoś powodu: czy jesteś absolutnie pewien, że powód jest przestarzały? Jasne, napisałeś ten kod do wersji demonstracyjnej i już go nie potrzebujesz, ale czy to w pełni prawda? Czy napisałeś przydatną funkcję, o której zapomniałeś przeprowadzić migrację do innych bibliotek? Czy Stacey stworzyła naprawdę fajną grafikę do wersji demonstracyjnej, która trafiła do prawdziwej gry? Czy wewnętrzny symulator nadal korzysta z tego starego poziomu, którego użyłeś do testowania?

Tworzenie gier to biznes. Nawet jeśli nie jest to firma zarabiająca pieniądze, nadal jest to firma o ograniczonych zasobach. Każda decyzja wymaga analizy kosztów i korzyści, nawet jeśli nie piszesz dla każdego przypadku uzasadnień biznesowych. Prostym faktem jest to, że koszt pozostawienia tych zasobów w grze jest nieco większy, a korzyściami są znacznie zmniejszone ryzyko wybuchu tuż przed wydaniem.

Wszystkie te znaki zapytania w „mniej oczywistym” akapicie reprezentują niepewność. Po prostu nie wiesz. A kiedy prowadzisz firmę, musisz wymieniać swoje niewiadome na znane. A wiadomo, że pakiet, który zbudowałeś, przeszedł testy, nawet jeśli ma trochę wzdęcia.

Istnieją inne potencjalne koszty, takie jak wyciek informacji wokół procesu programowania, który może potencjalnie zostać wykorzystany do wyprowadzenia hacków, ale przeszedłeś przez proces testowania w obecnej postaci, nie powinieneś się tym martwić.

tl; dr: Nikt nie zauważy pobrania większego o 4%, ale zauważy, że złamałeś grę, usuwając niezbędne pliki.

corsiKa
źródło