GNU GCC è utilizzato per i giochi AAA?


11

GNU GCC è un compilatore molto comune, ma sembra che quasi nessuno lo usi per progetti più grandi come i giochi AAA. Per me funziona perfettamente, non ho mai avuto problemi. Ma mi chiedo perché tutti i giochi AAA sembrano usare compilatori commerciali come Intel Studio? Perchè importa? GNU GCC ottimizza anche il codice per tutti i sistemi piuttosto che solo per Intel, quindi perché preoccuparsi di cose come Intel Studio?


GCC era un compilatore molto comune prima che arrivasse LLVM / Clang, o dicendolo con clang: "gcc? Intendi dire clang?" ;)
Maik Semder,

Cosa fa clang? È un compilatore? Se è così è meglio? O_o
LiquidFeline,

Clang è frontend ac / c ++ per una piattaforma di compilatore chiamata llvm. Sì, è meglio sotto molti aspetti. Per cominciare mostra l'errore esatto in una macro, non solo la linea in cui è stata chiamata la macro. Fa sembrare stupidi gli Intelli ancora più stupidi, dal momento che rende facile l'accesso all'albero AST, senza bisogno di un parser extra. Compilazione parziale del codice, l'elenco è lungo, dai un'occhiata, ne vale la pena :)
Maik Semder

Risposte:


9

Il compilatore Intel è solo un compilatore diverso. GCC ++ e VC ++ producono un codice di qualità di produzione, proprio come l'ICC di Intel. La differenza principale risiede in 4 aree chiave:

  • a) Funzionalità supportate (principalmente diverse sulle funzionalità C ++ 11)
  • b) Dimensione eseguibile
  • c) Runtime
  • d) Tempo di compilazione

Quando stai cercando di spremere fino all'ultimo bit delle prestazioni (principalmente) della CPU Intel, gli studi AAA sono disposti a pagare per questo e un po 'di primavera per ICC. Vedi qui per una grande storia aneddotica. Prestare attenzione anche alla sua sezione degli svantaggi, in cui ICC è accusato di eseguire meno che bene su set di istruzioni Intel non originali (ad esempio AMD).


10

Molte piattaforme non PC, tra cui alcune console e palmari, utilizzano un GCC modificato come compilatore principale / unico.

Sul PC, la maggior parte delle case degli sviluppatori di giochi usa semplicemente il compilatore di Visual Studio. La scelta del compilatore in genere ha un impatto limitato sulla velocità di runtime rispetto alla progettazione e alla grafica del motore, hanno comunque pagato per Visual Studio a causa della sua serie di funzioni come IDE, GCC è relativamente più difficile da installare e iniziare. e non fa molto per migliorare i tempi di iterazione e la produttività. Non c'è solo un motivo abbastanza convincente per usare GCC rispetto alle alternative in cui tutti sono già investiti.


GCC non è solo un po 'più difficile per iniziare, ma MinGW richiede la spedizione con una DLL se l'applicazione è multithread - GCC utilizza un meccanismo di eccezione diverso da SEH che rende la DLL necessaria su Windows.
Dietrich Epp,

1
Per fornire un esempio, Sony ha spostato il proprio compilatore principale PS3 dal proprio compilatore interno a GCC perché ritenuto migliore. E non mancano i titoli AAA rilasciati su PS3.
Kaganar,

Il rovescio della medaglia è che questi GCC specifici della piattaforma sono di solito molto obsoleti, di solito pre-GPLv3 e quindi pre-C ++ 11 e mancano anche molti recenti lavori di diagnostica e prestazioni. : / Questo rifiuto del GCC più recente da parte di molti fornitori potrebbe essere un altro motivo per cui molti sviluppatori di giochi evitano GCC se possono; potrebbero avere una visione ingiusta della sua esperienza fornita dallo stato con le toolchain del fornitore. Guarda i frequenti confronti di Clang su piattaforme Apple in cui Clang 3.1 o giù di lì viene confrontato con GCC 4.2. (Sono un fan di Clang, ma i confronti sono generalmente ingiusti.)
Sean Middleditch

4

Sì, può essere utilizzato per i giochi AA.

La ragione per cui quasi tutti i giochi AAA là fuori (se non tutti) usano compilatori commerciali è il fatto che i prodotti commerciali di solito hanno il supporto e puoi lamentarti o ottenere aiuto 24/7 o semplicemente APPENA POSSIBILE quando affronti qualsiasi problema che potresti avere e nell'AAA industria, i tempi significano denaro. Grandi squadre e aziende, specialmente quest'ultima, non vogliono fare affidamento sulla comunità quando sono in gioco grandi soldi. È meglio investire nel supporto per contratto.

D'altra parte, i motori si basano su SDK. Se l'SDK non supporta un compilatore, significa che sei da solo e non è redditizio eseguire la soluzione alternativa.

Finalmente l'ottimizzazione. Se sai che molti giocatori usano Intel, diamine vuoi consegnare il tuo gioco con grazia per loro.


1
Grazie alla nostra azienda con un miliardo di inversioni ogni anno è in grado di supportare gcc e altri strumenti di sviluppo gnu a livello premium.
lzap,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.