Я знаю, что производительность на самом деле имеет решающее значение, поэтому до сих пор (и я думаю, что никогда не будет) нет места для использования управляемых языков / платформ как Java / .NET только из-за их производительности.
Нет, вы не знаете это. Вы думаете об этом, вы хотите верить этому, потому что вы романтизируете разработку игр, и потому что вы думаете, что языки высокого уровня не могут быть быстрыми.
Производительность .NET достаточно хороша для 90% игр. И это будет только лучше. Не существует внутренней причины, по которой управляемые платформы должны работать медленнее. У них есть потенциал , чтобы быть быстрее, потому что они JIT'ed. На практике их производительность примерно такая же, как у достаточно хорошего кода C ++, намного лучше, чем у типичного кода C ++, и немного хуже, чем у действительно хорошего кода C ++. И большинство больших игр в любом случае используют более одного языка. Они используют скриптовые языки, такие как Lua или Python, или некоторые домашние вещи, которые на несколько порядков медленнее, чем .NET.
Точно так же нет абсолютно никаких причин, по которым большая часть вашей игры не может быть написана на .NET. И затем три действительно критичные к производительности функции могут быть при необходимости перенесены на собственный C ++ позже.
Но ... недавно я где-то читал здесь о SO, что, хотя люди, создающие игры, используют C ++ в качестве основного языка, на самом деле они не используют STL или Boost (или их много). Думаю, это имеет что-то общее с производительностью, верно? Если я ошибаюсь, скажите, пожалуйста, по каким причинам вы избегаете этих библиотек
То же, что и ты, виновный в вышесказанном ... Суеверие в разработке игр. «О нет, мы не можем позволить себе использовать код других людей! Он слишком неэффективен». Разработка игр застряла в 80-х годах с точки зрения практики программирования и методологий. Другими словами, не беспокойтесь о том, что делают другие разработчики игр. Если STL или Boost облегчают написание вашего кода, используйте его! А затем, если у вас возникли проблемы с производительностью, профилируйте их и, если необходимо, замените этот конкретный компонент библиотеки своим собственным.
Но большая часть STL буквально равна нулю. И 95% кода в любой игре не критично для производительности. Относитесь к разработке игр так же, как к любым другим программам. Не относитесь к этому как к волшебной стране, где каждая строка кода должна быть идеально оптимизирована и где нормальные правила не применяются.
А как насчет версии STL от EA? Другие студии тоже делают свои версии?
Насколько я знаю, нет. EA сделала это частично для внутреннего использования, а также как вклад в сообщество C ++ в целом, в качестве примера того, что они (и многие разработчики игр) хотели бы увидеть в будущих версиях стандарта (он был представлен комитет по стандартам)