Используется ли GNU GCC для игр AAA?

11

GNU GCC - очень распространенный компилятор, но кажется, что почти никто не использует его для больших проектов, таких как игры AAA. Для меня это работает просто отлично, никогда не было проблем с этим. Но мне интересно, почему во всех играх AAA используются коммерческие компиляторы, такие как Intel Studio? Почему это имеет значение? GNU GCC также оптимизирует код для всех систем, а не только для Intel, так почему они беспокоятся о таких вещах, как Intel Studio?

LiquidFeline
источник
GCC был очень распространенным компилятором до того, как появился LLVM / Clang, или сказал это с помощью clang: "gcc? Вы имели в виду clang?" ;)
Майк Земдер
Что делает Clang? Это компилятор? Если так, то лучше? О_о
LiquidFeline
Clang является интерфейсом ac / c ++ для платформы компилятора под названием llvm. Да, это лучше во многих отношениях. Для начала он показывает точную ошибку в макросе, а не только строку, где был вызван макрос. Это делает глупый интеллигентный смысл еще более глупым, поскольку облегчает доступ к дереву AST, не требуя дополнительного синтаксического анализатора. Неполная компиляция кода, список длинный, посмотрите на это, оно того стоит :)
Maik Semder

Ответы:

9

Компилятор Intel - это просто другой компилятор. GCC ++ и VC ++ создают код качества производства, так же как и ICC Intel. Основное отличие заключается в 4 ключевых областях:

  • a) Поддерживаемые функции (в основном отличаются от функций C ++ 11)
  • б) размер исполняемого файла
  • в) время выполнения
  • г) время компиляции

Когда вы пытаетесь выжать все до последней части производительности (в основном) процессоров Intel, студии AAA готовы заплатить за это, а весной - за ICC. Смотрите здесь для большой анекдотической истории. Обратите также внимание на его раздел «Недостатки», где ICC обвиняется в том, что он работает хуже, чем на неподлинных ЦП набора команд Intel (например, AMD).

bobobobo
источник
10

Многие не-ПК платформы, включая некоторые консоли и портативные устройства, используют модифицированный GCC в качестве основного / единственного компилятора.

На ПК большинство разработчиков игр используют компилятор Visual Studio. Выбор компилятора, как правило, мало влияет на скорость выполнения по сравнению с дизайном движка и графикой, они все равно платили за Visual Studio из-за его набора функций в качестве IDE, GCC сравнительно сложнее в установке и начале работы. и это не очень помогает улучшить время итерации и производительность. Нет просто веской причины использовать GCC по сравнению с альтернативами, в которые все уже инвестировали.

Шон Миддледич
источник
Дело не только в том, что начать GCC немного сложнее, но MinGW требует доставки с DLL, если ваше приложение многопоточное - GCC использует механизм исключения, отличный от SEH, что делает DLL необходимой в Windows.
Дитрих Эпп
1
Чтобы привести пример, Sony перевела свой основной компилятор PS3 из внутреннего компилятора в GCC, потому что это было сочтено лучше. И нет недостатка в названиях AAA, выпущенных на PS3.
Каганар
Недостатком является то, что эти специфичные для платформы GCC, как правило, сильно устарели, как правило, до GPLv3 и, следовательно, до C ++ 11, а также пропускают много недавних работ по диагностике и производительности. : / Этот отказ от нового GCC многими поставщиками может стать еще одной причиной, по которой многие разработчики игр просто избегают GCC, если могут; они могут иметь несправедливое представление о его состоянии, учитывая опыт работы с наборами инструментов поставщиков. Посмотрите на частые сравнения Clang на платформах Apple, где Clang 3.1 или около того сравнивается с GCC 4.2. (Я фанат Clang, но сравнения, как правило, несправедливы.)
Шон Миддлдич
4

Да, это может быть использовано для игр АА.

Причина, по которой почти во всех играх ААА (если не во всех) используются коммерческие компиляторы, заключается в том, что коммерческие продукты обычно имеют поддержку, и вы можете жаловаться или получать помощь 24/7 или просто КАК МОЖНО СКОРЕЕ при решении любой проблемы, которая может у вас возникнуть, и в ААА индустрия, время означает деньги. Большие команды и компании, особенно последние, не хотят полагаться на сообщество, когда на карту поставлены большие деньги. Лучше вкладывать в поддержку по контракту.

С другой стороны, двигатели опираются на SDK. Если SDK не поддерживает компилятор, это означает, что вы работаете самостоятельно, и обходное решение не выгодно.

Наконец, оптимизация. Если вы знаете, что многие игроки используют Intel, то, черт возьми, вы хотите, чтобы ваша игра была любезна для них.

reefaktor
источник
1
Наша компания с миллиардным оборотом в год может поддерживать GCC и другие инструменты GNU Dev на высшем уровне.
lzap