Czy GNU GCC jest używany do gier AAA?

11

GNU GCC jest bardzo popularnym kompilatorem, ale wydaje się, że prawie nikt nie używa go do większych projektów, takich jak gry AAA. Dla mnie to działa dobrze, nigdy nie miałem z tym problemu. Ale zastanawiam się, dlaczego wszystkie gry AAA wydają się wykorzystywać komercyjne kompilatory, takie jak Intel Studio? Dlaczego to ma znaczenie? GNU GCC optymalizuje również kod dla wszystkich systemów, a nie tylko dla Intela, więc dlaczego zawracają sobie głowę takimi rzeczami, jak Intel Studio?

LiquidFeline
źródło
GCC był bardzo popularnym kompilatorem, zanim pojawił się LLVM / Clang lub mówiąc to z clang: „gcc? Miałeś na myśli clang?” ;)
Maik Semder
Co robi clang? Czy to jest kompilator? Jeśli tak to lepiej? O_o
LiquidFeline
Clang jest nakładką ac / c ++ dla platformy kompilatora o nazwie llvm. Tak, jest lepszy na wiele sposobów. Na początek pokazuje dokładny błąd w makrze, a nie tylko linię, w której makro zostało wywołane. To sprawia, że ​​głupi rozsądek wygląda jeszcze głupiej, ponieważ ułatwia dostęp do drzewa AST, bez potrzeby dodatkowego parsera. Częściowa kompilacja kodu, lista jest długa, spójrz, warto! :)
Maik Semder

Odpowiedzi:

9

Kompilator Intela to po prostu inny kompilator. GCC ++ i VC ++ produkują kod jakości produkcji, podobnie jak ICC Intela. Główna różnica polega na 4 kluczowych obszarach:

  • a) Obsługiwane funkcje (w większości różnią się funkcjami C ++ 11)
  • b) Rozmiar pliku wykonywalnego
  • c) Środowisko wykonawcze
  • d) Czas kompilacji

Kiedy próbujesz wycisnąć każdą ostatnią wydajność z (głównie) procesorów Intela, studia AAA są skłonne za to zapłacić i trochę wiosny dla ICC. Zobacz tutaj świetną anegdotyczną historię. Zwróć także uwagę na jego sekcję dotyczącą wad, w której ICC jest oskarżana o słabsze działanie na nieoryginalnych procesorach Intela (np. AMD).

Bobobobo
źródło
10

Wiele platform innych niż PC, w tym niektóre konsole i urządzenia przenośne, używa zmodyfikowanego GCC jako głównego / jedynego kompilatora.

Na PC większość domów deweloperów gier korzysta wyłącznie z kompilatora Visual Studio. Wybór kompilatora zazwyczaj ma niewielki wpływ na szybkość działania w porównaniu z konstrukcją silnika i grafiką, wszystkie one i tak zapłaciły za Visual Studio ze względu na zestaw funkcji jako IDE, GCC jest stosunkowo trudniejszy do zainstalowania i rozpoczęcia. i niewiele poprawia czas iteracji i produktywność. Po prostu nie ma wystarczającego powodu, aby używać GCC w porównaniu z alternatywami, w które wszyscy są już zainwestowani.

Sean Middleditch
źródło
Nie tylko GCC jest nieco trudniejsze do rozpoczęcia, ale MinGW wymaga wysyłki z DLL, jeśli twoja aplikacja jest wielowątkowa - GCC używa innego mechanizmu wyjątku niż SEH, co sprawia, że ​​DLL jest niezbędny w Windows.
Dietrich Epp
1
Dla przykładu Sony przeniosło główny kompilator PS3 z wewnętrznego kompilatora do GCC, ponieważ uznano go za lepszy. I nie brakuje tytułów AAA wydanych na PS3.
Kaganar
Minusem jest to, że te specyficzne dla platformy GCC są zwykle bardzo nieaktualne, zwykle przed GPLv3, a więc przed C ++ 11, a także brakuje wielu ostatnich prac diagnostycznych i wydajnościowych. : / To odrzucenie nowszej wersji GCC przez wielu dostawców może być kolejnym powodem, dla którego wielu twórców gier po prostu unika GCC, jeśli mogą; mogą mieć niesprawiedliwy pogląd na jego stan, biorąc pod uwagę doświadczenie z łańcuchami narzędzi dostawców. Spójrz na częste porównania Clanga na platformach Apple, gdzie Clang 3.1 lub podobny jest porównywany z GCC 4.2. (Jestem fanem Clanga, ale porównania są na ogół niesprawiedliwe.)
Sean Middleditch
4

Tak, można go używać do gier AA.

Powodem, dla którego prawie wszystkie gry AAA (jeśli nie wszystkie) używają komercyjnych kompilatorów, jest fakt, że produkty komercyjne zwykle mają wsparcie i możesz złożyć skargę lub uzyskać pomoc 24 godziny na dobę, 7 dni w tygodniu lub po prostu JAK NAJSZYBCIEJ, gdy masz do czynienia z jakimkolwiek problemem, jaki masz, i w AAA przemysł, czasy oznaczają pieniądze. Duże zespoły i firmy, szczególnie te ostatnie, nie chcą polegać na społeczności, gdy w grę wchodzą duże pieniądze. Lepiej inwestować w wsparcie na podstawie umowy.

Z drugiej strony silniki korzystają z SDK. Jeśli zestaw SDK nie obsługuje kompilatora, oznacza to, że działasz samodzielnie i obejście tego problemu nie jest opłacalne.

Wreszcie optymalizacja. Jeśli wiesz, że wielu graczy korzysta z Intela, do licha chcesz im zaoferować swoją grę.

reefaktor
źródło
1
Nasza firma z miliardowym obrotem każdego roku jest w stanie pomóc gcc i innym narzędziom programistycznym GNU na poziomie premium.
lzap