¿Se usa GNU GCC para los juegos AAA?


11

GNU GCC es un compilador muy común, pero parece que casi nadie lo usa para proyectos más grandes como los juegos AAA. Para mí, funciona bien, nunca tuve un problema. Pero me pregunto por qué todos los juegos AAA parecen usar compiladores comerciales como Intel Studio. ¿Por qué eso importa? GNU GCC también optimiza el código para todos los sistemas en lugar de solo Intel, entonces, ¿por qué se molestan con cosas como Intel Studio?


GCC era un compilador muy común antes de que apareciera LLVM / Clang, o lo decía con clang: "gcc? ¿Quiso decir clang?" ;)
Maik Semder

¿Qué hace el sonido metálico? ¿Es un compilador? Si es así, ¿es mejor? O_o
LiquidFeline

Clang es un frontend ac / c ++ para una plataforma compiladora llamada llvm. Sí, es mejor en muchos sentidos. Para empezar, muestra el error exacto en una macro, no solo la línea donde se llamó a la macro. Hace que el estúpido sentido intelli se vea aún más estúpido, ya que facilita el acceso al árbol AST, sin necesidad de un analizador adicional. Compilación de código parcial, la lista es larga, échale un vistazo, vale la pena :)
Maik Semder

Respuestas:


9

El compilador de Intel es solo un compilador diferente. GCC ++ y VC ++ producen código de calidad de producción, tan bien como lo hace el ICC de Intel. La principal diferencia radica en 4 áreas clave:

  • a) Funciones compatibles (en su mayoría que difieren en las funciones de C ++ 11)
  • b) Tamaño ejecutable
  • c) tiempo de ejecución
  • d) Tiempo de compilación

Cuando intentas exprimir hasta el último rendimiento de (en su mayoría) CPU Intel, los estudios AAA están dispuestos a pagar por eso y algo de primavera por ICC. Vea aquí para una gran historia anecdótica. También preste atención a su sección de inconvenientes, donde se acusa a ICC de ejecutar menos que bien en CPU de juegos de instrucciones Intel no genuinas (por ejemplo, AMD).


10

Muchas plataformas que no son de PC, incluidas algunas consolas y dispositivos portátiles, utilizan un GCC modificado como su compilador principal / único.

En la PC, la mayoría de los desarrolladores de juegos solo usan el compilador de Visual Studio. La elección del compilador generalmente tiene poco impacto en la velocidad de ejecución en comparación con el diseño del motor y los gráficos, todos pagaron por Visual Studio de todos modos debido a su conjunto de características como IDE, GCC es comparativamente más difícil de instalar y comenzar. y no hace mucho para mejorar el tiempo de iteración y la productividad. Simplemente no hay una razón lo suficientemente convincente para usar GCC en comparación con las alternativas en las que todos ya están invertidos.


No es solo que GCC sea un poco más difícil de comenzar, sino que MinGW requiere el envío con una DLL si su aplicación es multiproceso: GCC usa un mecanismo de excepción diferente que SEH, lo que hace que la DLL sea necesaria en Windows.
Dietrich Epp

1
Para dar un ejemplo, Sony movió su compilador primario de PS3 de su compilador interno a GCC porque se consideró mejor. Y no faltan los títulos AAA lanzados en PS3.
Kaganar

La desventaja es que estos GCC específicos de la plataforma generalmente están muy desactualizados, generalmente son anteriores a GPLv3 y, por lo tanto, anteriores a C ++ 11, y también les faltan muchos diagnósticos y trabajos de rendimiento recientes. : / Este rechazo del nuevo GCC por parte de muchos vendedores podría ser otra razón por la que muchos desarrolladores de juegos simplemente evitan el GCC si pueden; pueden tener una visión injusta de su experiencia dada por el estado con las cadenas de herramientas de proveedores. Mire las comparaciones frecuentes de Clang en las plataformas de Apple donde Clang 3.1 más o menos se compara con GCC 4.2. (Soy fanático de Clang, pero las comparaciones son generalmente injustas.)
Sean Middleditch

4

Sí, se puede usar para juegos AA.

La razón por la que casi todos los juegos AAA (si no todos) usan compiladores comerciales es el hecho de que los productos comerciales generalmente tienen soporte y puedes quejarte u obtener ayuda las 24 horas del día, los 7 días de la semana, o lo antes posible cuando se trata de cualquier problema que puedas tener y en el AAA industria, tiempos significa dinero. Los grandes equipos y empresas, especialmente los últimos, no quieren confiar en la comunidad cuando hay mucho dinero en juego. Es mejor invertir en soporte por contrato.

Por otro lado, los motores se basan en SDK. Si el SDK no admite un compilador, significa que está solo y que no es rentable hacer la solución.

Finalmente, la optimización. Si sabes que muchos jugadores usan Intel, qué diablos quieres entregar tu juego con gracia para ellos.


1
Para nuestra empresa, con un billón de cambios cada año, podemos ofrecer herramientas de desarrollo de gcc y otras herramientas de desarrollo de GNU a nivel premium.
lzap
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.