GNU GCC는 AAA 게임에 사용됩니까?


11

GNU GCC는 매우 일반적인 컴파일러이지만 AAA 게임과 같은 대규모 프로젝트에는 거의 사용하지 않는 것 같습니다. 나에게 그것은 잘 작동하지만 아무런 문제가 없었습니다. 그러나 왜 모든 AAA 게임이 인텔 스튜디오와 같은 상용 컴파일러를 사용하는 것 같습니까? 왜 중요한가요? GNU GCC는 또한 인텔이 아닌 모든 시스템에 맞게 코드를 최적화합니다. 왜 인텔 스튜디오와 같은 것들을 방해합니까?


GCC LLVM / Clang이 등장하기 전에 매우 일반적인 컴파일러 였습니다 . 또는 "gcc? clang을 의미합니까?" ;)
Maik Semder

clang은 무엇을합니까? 컴파일러입니까? 그렇다면 더 낫습니까? O_o
LiquidFeline

Clang은 llvm이라는 컴파일러 플랫폼을위한 ac / c ++ 프론트 엔드입니다. 예, 여러면에서 더 좋습니다. 우선 매크로가 호출 된 줄뿐만 아니라 매크로의 정확한 오류를 보여줍니다. 추가 파서가 필요없이 AST 트리에 쉽게 액세스 할 수 있기 때문에 어리석은 지능 감각이 더 어리석게 보입니다. 부분 코드 컴파일, 목록이 길고 살펴보십시오. 그만한 가치가 있습니다 :)
Maik Semder

답변:


9

인텔의 컴파일러는 다른 컴파일러 일뿐입니다. GCC ++ 및 VC ++는 인텔의 ICC와 마찬가지로 프로덕션 품질 코드를 생성합니다. 주요 차이점은 4 가지 주요 영역에 있습니다.

  • a) 지원되는 기능 (주로 C ++ 11 기능과 다름)
  • b) 실행 가능한 크기
  • c) 런타임
  • d) 컴파일 시간

(대부분의) Intel CPU에서 성능의 모든 마지막 부분을 짜내려고 할 때 AAA 스튜디오는 그 비용을 지불하고 ICC는 약간의 봄을 기꺼이 지불합니다. 위대한 일화 이야기를 보려면 여기참조하십시오 . ICC가 비정품 인텔 명령어 세트 CPU (예 : AMD)에서 제대로 실행되지 않는다는 비난을받는 그의 단점에도주의를 기울이십시오.


10

일부 콘솔 및 핸드 헬드를 포함한 많은 비 PC 플랫폼은 수정 된 GCC를 기본 / 전용 컴파일러로 사용합니다.

PC에서 대부분의 게임 개발자는 Visual Studio의 컴파일러 만 사용합니다. 컴파일러의 선택은 일반적으로 엔진 디자인 및 그래픽에 비해 런타임 속도에 거의 영향을 미치지 않으며 IDE로 설정된 기능으로 인해 Visual Studio에 비용을 지불했으며 GCC는 설치 및 시작하기가 비교적 어렵습니다. 반복 시간과 생산성을 향상시키는 데별로 도움이되지 않습니다. 모든 사람들이 이미 투자 한 대안과 비교할 때 GCC를 사용해야 할 충분한 이유가 없습니다.


GCC가 시작하기가 조금 더 어려울뿐만 아니라 MinGW는 응용 프로그램이 다중 스레드 인 경우 DLL과 함께 제공해야합니다. GCC는 SEH와 다른 예외 메커니즘을 사용하여 Windows에서 DLL을 필요로합니다.
Dietrich Epp

1
예제를 제공하기 위해 Sony는 PS3 기본 컴파일러를 내부 컴파일러에서 GCC로 옮겼습니다. 그리고 PS3에 출시 된 AAA 타이틀도 부족하지 않습니다.
Kaganar

단점은 이러한 플랫폼 별 GCC가 일반적으로 심각하게 오래되어 일반적으로 GPLv3 이전이므로 C ++ 11 이전이며 최근의 많은 진단 및 성능 작업이 누락되었다는 것입니다. : / 많은 벤더에 의한 새로운 GCC 거부는 많은 게임 개발자들이 GCC를 피할 수있는 또 다른 이유 일 수 있습니다. 그들은 공급 업체 툴체인에 대한 경험이 주어진 상태에 대해 불공평 한 견해를 가질 수 있습니다. Clang 3.1 정도가 GCC 4.2와 비교되는 Apple 플랫폼에서 빈번한 Clang 비교를 살펴보십시오. (나는 Clang 팬이지만 비교는 일반적으로 불공평합니다.)
Sean Middleditch

4

예, AA 게임에 사용할 수 있습니다.

거의 모든 AAA 게임이 상용 컴파일러를 사용하는 이유는 상용 제품이 일반적으로 지원하고 있으며 AAA에서 발생할 수있는 모든 문제를 처리 할 때 24/7 또는 최대한 빨리 도움을 받거나 도움을받을 수 있기 때문입니다. 산업, 시간은 돈을 의미합니다. 큰 팀과 회사, 특히 후자에게는 큰 돈이 걸려있을 때 커뮤니티에 의존하고 싶지 않습니다. 계약에 의한 지원에 투자하는 것이 좋습니다.

반면에 엔진은 SDK에 의존합니다. SDK가 컴파일러를 지원하지 않는 경우, 사용자가 스스로 있고 해결 방법을 수행하는 것이 수익성이 없다는 것을 의미합니다.

마지막으로 최적화. 많은 플레이어가 인텔을 사용하고 있다는 사실을 알고 있다면 게임을 기꺼이 제공하고자합니다.


1
매년 10 억 회에 달하는 회사는 gcc 및 기타 gnu 개발 도구를 프리미엄 수준으로 지원할 수 있습니다.
lzap 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.