GNU GCC是否用于AAA游戏?


11

GNU GCC是一种非常常见的编译器,但似乎几乎没有人将其用于AAA游戏之类的较大项目。对我来说,它的工作原理很好,从来没有问题。但是我想知道为什么所有AAA游戏似乎都使用商业编译器(例如Intel Studio)吗?为什么这有关系?GNU GCC还优化了所有系统的代码,而不是仅针对Intel的代码,所以为什么它们会困扰于诸如Intel Studio之类的东西?


在LLVM / Clang出现之前,GCC 非常常见的编译器,或者用clang来称呼它:“ gcc?您是说clang吗?” ;)
Maik Semder

c做什么?它是编译器吗?如果这样更好?O_o
LiquidFeline 2013年

Clang是称为llvm的编译器平台的ac / c ++前端。是的,它在许多方面都更好。对于初学者,它显示了宏中的确切错误,而不仅仅是调用宏的行。它使愚蠢的智能感觉显得更加愚蠢,因为它使访问AST树变得容易,而无需额外的解析器。部分代码编译,列表很长,值得一看:)
Maik Semder 2013年

Answers:


9

英特尔的编译器只是一个不同的编译器。与英特尔的ICC一样,GCC ++和VC ++可以产生生产质量代码。主要区别在于四个关键领域:

  • a)支持的功能(大多数情况下在C ++ 11功能上有所不同)
  • b)可执行大小
  • c)运行时
  • d)编译时间

当您试图压缩(主要是)英特尔CPU的所有性能时,AAA工作室愿意为此付出代价,并为ICC付出一些努力。 看到这里一个伟大的轶事故事。也要注意他的缺点部分,在该部分中,ICC被指控在非原装Intel指令集CPU(例如AMD)上运行不佳。


10

许多非PC平台,包括某些控制台和手持设备,都使用经过修改的GCC作为其主要/唯一的编译器。

在PC上,大多数游戏开发商仅使用Visual Studio的编译器。与引擎设计和图形相比,选择编译器通常对运行时速度几乎没有影响,无论如何,它们都为Visual Studio付出了代价,这归功于其将功能集设置为IDE,相对而言,GCC的安装和入门难度相对较大。并不能改善迭代时间和生产率。与每个人都已经投资的替代方案相比,使用GCC的理由还不够充分。


不仅是GCC入门有点困难,而且如果您的应用程序是多线程的,MinGW要求附带DLL-GCC使用与SEH不同的异常机制,这使得DLL在Windows上是必需的。
Dietrich Epp

1
举个例子,索尼将PS3主编译器从内部编译器移到了GCC,因为它被认为更好。而且在PS3上发布的AAA游戏不乏不足。
卡加纳尔

缺点是这些特定于平台的GCC通常严重过时,通常是GPLv3之前的版本,因此是C ++ 11之前的版本,并且也缺少很多最新的诊断和性能工作。://许多供应商拒绝使用较新的GCC可能是许多游戏开发人员尽可能避免使用GCC的另一个原因;考虑到使用供应商工具链的经验,他们可能对其状态有不公平的看法。查看在Clang 3.1左右与GCC 4.2进行比较的Apple平台上经常进行的Clang比较。(我是Clang的粉丝,但这种比较通常是不公平的。)
肖恩·米德迪奇

4

是的,它可以用于AA游戏。

几乎所有AAA游戏(如果不是全部)都使用商业编译器的原因是,商业产品通常都具有支持,您在处理AAA中可能遇到的任何问题时可以投诉或获得24/7或仅获得尽快的帮助。工业,时间就是金钱。大型团队和公司,尤其是后者,在大笔资金危在旦夕时,不想依靠社区。最好通过合同投资支持。

另一方面,引擎依赖于SDK。如果SDK不支持编译器,则意味着您是一个人,做这种解决办法是无利可图的。

最后是优化。如果您知道很多玩家都在使用Intel,那么您想为他们慷慨地交付您的游戏。


1
fyi我们公司每年的营业额为十亿美元,能够在高级水平上支持gcc和其他gnu开发工具。
lzap
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.