До сих пор я видел, что многие игры все еще скомпилированы в 32-битной архитектуре, хотя почти 50% нынешних пользователей Windows работают на 64-битных ОС? Почему это?
Если причина в том, чтобы увеличить аудиторию (поскольку 32-разрядное приложение может работать на 64), почему бы не сделать две его версии, поскольку речь идет о перекомпиляции, а запуск 64-разрядных приложений может повысить производительность благодаря большему количеству доступные регистры процессора и другие функции.
Ответы:
Этот блог MSDN о том, почему нет 64-битной версии Visual Studio, посвящен многим проблемам, которые также влияют на игры. Суть в том, что переход на 64-битную систему может во многих случаях снизить производительность из-за влияния на кэш процессора (больше данных с 64-битной архитектурой, но кэш-память того же размера).
Может помочь дополнительная адресуемая память, но в любом случае немногие потребительские машины имеют более 4 гигабайт памяти. Добавьте к этому боль в распространении двух двоичных файлов для Windows, и легко решить, что время для 64-битных игр не подходит (пока).
источник
На моей предыдущей работе мы перенесли весь наш движок (MMO) на 64-битную версию и в итоге запустили 64-битный клиент в нескольких местах как часть конвейера разработки для предварительной обработки данных. Но мы никогда бы не отправили 64-битный клиент конечным пользователям.
Во-первых, улучшение производительности очень незначительное, и большинство игр для ПК в любом случае ограничиваются графическим процессором.
Во-вторых, очень немногие конечные пользователи имеют достаточно оперативной памяти, чтобы воспользоваться преимуществами 64-битного исполняемого файла, и любой движок, даже смутно разработанный для консолей (который запоминается максимум при 512 Мб), не будет оптимизирован для большой доступной памяти.
Наконец, наличие 2 исполняемых файлов в вашем конвейере распространения - гигантская боль в заднице. Вы не можете отправить только 64-битный исполняемый файл, потому что тогда 30% вашей аудитории не смогут его запустить. Таким образом, вы должны отправить как 64-битный, так и 32-битный исполняемый файл, а также какую-то оболочку, которая запускает правильную версию. Если вы онлайн-игра, это означает, что вам потребуется дополнительный мегабайтный файл для исправления каждый раз, когда изменяется любой код, и дополнительная сложность в обеспечении того, что нужная версия попадет к нужному игроку. Это просто не стоит усилий для незначительных выгод.
источник
Если бы это было просто вопросом перекомпиляции, у нас была бы 64-битная версия всех игр.
К сожалению, это не так просто, особенно с игровыми движками со старой кодовой базой.
В этом случае перенос на 64-битную систему потребует больших усилий. Проще говоря, преимуществ пока недостаточно, чтобы это стоило.
источник