Wird GNU GCC für AAA-Spiele verwendet?

11

GNU GCC ist ein sehr verbreiteter Compiler, aber es scheint, dass fast niemand ihn für größere Projekte wie AAA-Spiele verwendet. Für mich funktioniert es einwandfrei, hatte nie ein Problem damit. Aber ich frage mich, warum alle AAA-Spiele kommerzielle Compiler wie Intel Studio verwenden? Warum spielt es eine Rolle? GNU GCC optimiert auch den Code für alle Systeme und nicht nur für Intel. Warum beschäftigen sie sich also mit Dingen wie Intel Studio?

LiquidFeline
quelle
GCC war ein sehr verbreiteter Compiler, bevor LLVM / Clang auftauchte, oder sagte es mit clang: "gcc? Meinten Sie clang?" ;)
Maik Semder
Was macht Clang? Ist es ein Compiler? Wenn ja, ist es besser? O_o
LiquidFeline
Clang ist ein AC / C ++ - Frontend für eine Compilerplattform namens llvm. Ja, es ist in vielerlei Hinsicht besser. Für den Anfang zeigt es den genauen Fehler in einem Makro, nicht nur die Zeile, in der das Makro aufgerufen wurde. Dadurch sieht der dumme Intelli-Sinn noch dümmer aus, da der Zugriff auf den AST-Baum einfach ist und kein zusätzlicher Parser erforderlich ist. Teilweise Code-Kompilierung, die Liste ist lang, schauen Sie sie sich an, es lohnt sich :)
Maik Semder

Antworten:

9

Intels Compiler ist nur ein anderer Compiler. GCC ++ und VC ++ produzieren genauso wie Intels ICC Produktionsqualitätscode. Der Hauptunterschied liegt in 4 Schlüsselbereichen:

  • a) Unterstützte Funktionen (meistens unterschiedlich bei C ++ 11-Funktionen)
  • b) Ausführbare Größe
  • c) Laufzeit
  • d) Kompilierungszeit

Wenn Sie versuchen, die (meistens) Intel-CPUs bis ins kleinste Detail zu nutzen, sind die AAA-Studios bereit, dafür und für ICC einen gewissen Frühling zu zahlen. Hier finden Sie eine großartige Anekdotengeschichte. Beachten Sie auch seinen Abschnitt mit den Nachteilen, in dem ICC beschuldigt wird, auf nicht echten Intel-Befehlssatz-CPUs (z. B. AMDs) nicht gut zu laufen.

Bobobobo
quelle
10

Viele Nicht-PC-Plattformen, einschließlich einiger Konsolen und Handhelds, verwenden einen modifizierten GCC als primären / einzigen Compiler.

Auf dem PC verwenden die meisten Spieleentwickler nur den Compiler von Visual Studio. Die Wahl des Compilers hat in der Regel nur geringe Auswirkungen auf die Laufzeitgeschwindigkeit im Vergleich zum Engine-Design und den Grafiken. Alle haben sich aufgrund des Funktionsumfangs als IDE für Visual Studio bezahlt gemacht. Die Installation und der Einstieg von GCC ist vergleichsweise schwieriger. und es trägt nicht viel zur Verbesserung der Iterationszeit und Produktivität bei. Es gibt einfach keinen zwingenden Grund, GCC im Vergleich zu den Alternativen zu verwenden, in die bereits jeder investiert hat.

Sean Middleditch
quelle
Es ist nicht nur etwas schwieriger, mit GCC zu beginnen, sondern MinGW erfordert den Versand mit einer DLL, wenn Ihre Anwendung Multithread-fähig ist. GCC verwendet einen anderen Ausnahmemechanismus als SEH, wodurch die DLL unter Windows erforderlich wird.
Dietrich Epp
1
Als Beispiel hat Sony seinen primären PS3-Compiler von seinem internen Compiler auf GCC verschoben, weil er als besser eingestuft wurde. Und es gibt keinen Mangel an AAA-Titeln, die auf PS3 veröffentlicht wurden.
Kaganar
Der Nachteil ist, dass diese plattformspezifischen GCCs in der Regel stark veraltet sind, in der Regel vor GPLv3 und damit vor C ++ 11, und dass auch viele aktuelle Diagnose- und Leistungsarbeiten fehlen. : / Diese Ablehnung neuerer GCC durch viele Anbieter könnte ein weiterer Grund sein, warum viele Spieleentwickler GCC einfach meiden, wenn sie können; Aufgrund der Erfahrung mit Toolchains von Anbietern haben sie möglicherweise eine unfaire Sicht auf den Status. Schauen Sie sich die häufigen Clang-Vergleiche auf Apple-Plattformen an, auf denen Clang 3.1 oder so mit GCC 4.2 verglichen wird. (Ich bin ein Clang-Fan, aber die Vergleiche sind im Allgemeinen unfair.)
Sean Middleditch
4

Ja, es kann für AA-Spiele verwendet werden.

Der Grund, warum fast alle AAA-Spiele (wenn nicht alle) kommerzielle Compiler verwenden, ist die Tatsache, dass kommerzielle Produkte normalerweise Support bieten und Sie sich beschweren oder rund um die Uhr oder einfach so schnell wie möglich Hilfe erhalten können, wenn Sie Probleme haben, die Sie möglicherweise haben, und in der AAA Industrie bedeutet Zeiten Geld. Große Teams und Unternehmen, insbesondere letztere, möchten sich nicht auf die Community verlassen, wenn es um großes Geld geht. Es ist besser, vertraglich in Support zu investieren.

Andererseits basieren die Engines auf SDKs. Wenn das SDK keinen Compiler unterstützt, bedeutet dies, dass Sie alleine sind und es nicht rentabel ist, die Problemumgehung durchzuführen.

Endlich Optimierung. Wenn Sie wissen, dass viele Spieler Intel verwenden, möchten Sie Ihr Spiel freundlicherweise für sie bereitstellen.

Reefaktor
quelle
1
Zu unserer Information, unser Unternehmen mit einer Milliarde Turnaround pro Jahr ist in der Lage, gcc und andere gnu dev-Tools auf Premium-Niveau zu unterstützen.
lzap