Как сделать 64 битную игру в 32 битную
Существует несколько вариантов установки и запуска 64-х битных приложений на 32-х битной ОС Виндовс.
1) Наиболее простейший метод: прежде надо убедиться, что у вас 64 разрядный процессор. В БИОСе у вас должна быть включена виртуализация, и главное достаточно памяти. С помощью Виндовс создаём виртуальный диск, запускаем на нём 64-х битную ОС, а в ней своё приложение 64-х битное. Можно воспользоваться внешними виртуальными машина типа "Виртуал бокс".
2) Но уже платное выполнение. Запуск на облаке виртуальной ОС-и. Геймеры уже пользуются, например, "Стадиа".
3) Рекомпиляция приложения под 32-х битную платформу, правда, нужно иметь исходники и быть программистом.
Всем привет ! подскажите открываю стим запустить игру смотрю а там только 32 бит.Запускаю с корневой папки все нормально показывает 64 бит .
так что все время запускать с корневой папки 64 ?
у меня то же самое.
видимо часть обновления 1.30.
теперь можно и с ярлыка запускать,а не в стим каждый раз залазить.
Виталий Строгий-Батурин
По умолчанию игра запускается под window х86, но на большинство компьютеров установлена х64 версия.
Для запуска игры есть используются параметры запуска.
Для этого надо сделать следующее:
- запустить и открыть менеджер игр steam
- открыть вкладку БИБЛИОТЕКА и далее ИГРЫ
- кликнуть правой кнопкой мыши на вашей игре и в открывшемся меню выбрать СВОЙСТВА
- кликнуть по кнопке - УСТАНОВИТЬ ПАРАМЕТРЫ ЗАПУСКА
- в открывшемся окне ввести -64bit и нажать кнопку ОК.
Также можно отключить первоначальную заставку в игре
для этого через пробел добавляем -64bit -nointro
Для тех кто занимается моддингом полезно установить следующие параметры
-unlimitedlog
-error_overlay
полностью строка параметров запуска будет выглядеть так
-64bit -nointro -unlimitedlog -error_overlay
Виталий Строгий-Батурин
В стиме в свойствах игры - вкладка Общие - Параметры запуска в открывшемся окне напишите -64bit
И будет запускаться только 64-х битка.
В статье рассмотрены основные шаги, обеспечивающие корректный перенос 32-битных Windows приложений на 64-битные Windows системы. Хотя статья ориентирована на разработчиков, использующих язык Си/Си++ в среде Visual Studio 2005/2008, она будет полезна и другим разработчикам, планирующим перенос своих приложений под 64-битные системы.
Введение
В статье описаны основные моменты, с которыми сталкиваются разработчики, планирующие мигрировать 32-битные программы на 64-битные системы. Конечно, список рассмотренных вопросов не полон, но хочется надеяться, что со временем будет предложен расширенный вариант этой статьи. Автор будет благодарен отзывам, комментариям и вопросам, которые позволят улучшить информативность этой статьи.
1. Шаг первый. 64-битность бывает разной.
Давайте разберемся
Используемая модель данных накладывает отпечаток на процесс разработки 64-битных приложений, так как в коде программ необходимо учитывать разрядность используемых данных [5].
2. Шаг второй. Выясните, нужен ли вам 64-битный вариант вашего продукта
2.1. Продолжительность жизненного цикла приложений
Не следует создавать 64-битную версию приложения с коротким жизненным циклом. Благодаря подсистеме WOW64 старые 32-битные приложения достаточно хорошо работают на 64-битных Windows системах и поэтому делать программу 64-битной, которая через 2 года перестанет поддерживаться, смысла не имеет [6]. Более того, практика показала, что переход на 64-битные версии Windows затянулся и возможно большинство ваших пользователей в краткосрочной перспективе будут использовать только 32-битный вариант вашего программного решения.
Если планируется длительное развитие и длительная поддержка программного продукта, то следует начинать работать над 64-битным вариантом вашего решения. Это можно делать неспешно, но учтите, что чем дольше у вас не будет полноценного 64-битного варианта, тем больше сложностей может возникать с поддержкой такого приложения, устанавливаемого на 64-битные версии Windows.
2.2. Ресурсоемкость приложения
2.3. Разработка библиотек
Если вы разрабатываете библиотеки, компоненты или иные элементы, с помощью которых сторонние разработчики создают свое программное обеспечение, то вы должны проявить оперативность в создании 64-битного варианта своей продукции. В противном случае, ваши клиенты, заинтересованные в выпуске 64-битных версий, будут вынуждены искать альтернативные решения. Например, некоторые разработчики программно-аппаратной защиты откликнулись с большой задержкой на появление 64-битных программ, что заставило ряд клиентов искать другие инструменты для защиты своих программ.
Дополнительным преимуществом от выпуска 64-битной версии библиотеки является то, что вы можете продавать ее как отдельный продукт. Таким образом, ваши клиенты, желающие создавать как 32-битные, так и 64-битные приложения будут вынуждены приобретать 2 различные лицензии. Например, такая политика используется компанией Spatial Corporation при продаже библиотеки Spatial ACIS.
2.4. Зависимость вашего продукта от сторонних библиотек
Прежде чем планировать работу над созданием 64-битной версий вашего продукта выясните, имеются ли 64-битные варианты библиотек и компонентов, которые в нем используются. Также узнайте, какова ценовая политика по отношению к 64-битному варианту библиотеки. Все это можно выяснить, посетив сайт разработчика библиотеки. Если поддержка отсутствует, то заранее поищите альтернативные решения, поддерживающие 64-битные системы.
2.5. Наличие 16-битных приложений
Если в ваших решениях все еще присутствуют 16-битные модули, то пора от них избавиться. Работа 16-битных приложений в 64-битных версиях Windows не поддерживается.
Здесь следует пояснить один момент, связанный с использованием 16-битных инсталляторов. Они до сих пор используются для установки некоторых 32-битных приложений. Создан специальный механизм, который на лету подменяет ряд наиболее популярных 16-битных инсталляторов на более новые версии. Это может вызвать неверное мнение, что 16-битные программы по-прежнему работают в 64-битной среде. Помните, это не так.
2.6. Наличие кода на ассемблере
Не забывайте, что использование большого объема кода на ассемблере, может существенно повысить стоимость создания 64-битной версии приложения.
Взвесив все перечисленные факты, все за и против, примите решение, следует ли вам переносить ваш проект на 64-битные системы. И если это так, то давайте пойдем дальше.
3. Шаг третий. Инструментарий
Если вы приняли решение о разработке 64-битной версии вашего продукта и готовы потратить на это время, это еще не гарантирует успех. Дело в том, что вы должны обладать всем необходимым инструментарием и здесь могут быть неприятные казусы.
Самой простой, но и самой непреодолимой, может стать проблема отсутствия 64-битного компилятора. Статья пишется в 2009 году, но все еще нет 64-битного компилятора C++ Builder от Codegear [7]. Его выпуск ожидается только к концу этого года. Невозможно обойти подобную проблему, если конечно но переписать весь проект, например, с использованием Visual Studio. Но если с отсутствием 64-битного компилятора все понятно, то другие аналогичные проблемы могут оказаться более скрытными и вылезти уже на этапе работ по переносу проекта на новую архитектуру. Поэтому, хочется посоветовать заранее провести исследование, существуют ли все необходимые компоненты, которые потребуются для реализации 64-битной версии вашего продукта. Вас могут поджидать неприятные сюрпризы.
Конечно, перечислить все, что может понадобиться для проекта здесь невозможно, но все-таки предложу список, который поможет вам соорентироваться и возможно вспомнить о других моментах, которые необходимы для реализации вашего 64-битного проекта:
3.1. Наличие 64-битного компилятора
Сложно что-то еще сказать о важности наличия 64-битного компилятора. Он просто должен быть.
Если вы планируете разрабатывать 64-битные приложения с использованием последней версии (на момент написания статьи) Visual Studio 2008, то следующая таблица N2 поможет помочь определить, какая из редакций Visual Studio вам необходима.
Таблица N2. Возможности различных редакций Visual Studio 2008
3.2. Наличие 64-битных компьютеров под управлением 64-битных операционных систем
Можно конечно использовать виртуальные машины для запуска 64-битных приложений на 32-битной технике, но это крайне неудобно и не обеспечит необходимого уровня тестовых испытаний. Желательно, чтобы в машинах было установлено не менее 4-8 гигабайт оперативной памяти.
3.3. Наличие 64-битных вариантов всех используемых библиотек
Если библиотеки представлены в исходных кодах, то должна присутствовать 64-битная конфигурация проекта. Самостоятельно заниматься модернизацией библиотеки для ее сборки под 64-битную систему может быть неблагодарным и сложным занятием, а результат может оказаться ненадежным и содержащим ошибки. Также вы можете нарушить этим лицензионные соглашения. Если вы используете библиотеки в виде бинарных модулей, то вы также должны узнать, существуют ли 64-битные модули. Вы не сможете использовать 32-битные DLL внутри 64-битного приложения. Можно создать специальную обвязку через COM, но эта будет отдельной большой, сложной задачей [8]. Также учтите, что приобретение 64-битной версии библиотеки может стоить дополнительных денег.
3.4. Отсутствие встроенного кода на ассемблере
Visual C++ не поддерживает 64-битный встроенный ассемблер. Вы должны использовать или внешний 64-битный ассемблер (например, MASM) или иметь реализацию той же функциональности на языке Си/Си++ [9].
3.5. Модернизация методологии тестирования
Существенная переработка методологии тестирования, модернизация юнит-тестов, использование новых инструментальных средств. Более подробно об этом будет сказано ниже, но не забывайте учесть это на этапе оценки временных затрат на миграцию приложения на новую систему [10].
3.6. Новые данные для тестирования
Если вы разрабатываете ресурсоемкие приложения, потребляющие большой объем оперативной памяти, то вам необходимо позаботиться о пополнении базы тестовых входных данных. При нагрузочном тестировании 64-битных приложений желательно выходить за пределы 4 гигабайт потребляемой памяти. Многие ошибки могут проявиться только при таких условиях.
3.7. Наличие 64-битных систем защиты
Используемая система защиты, должна поддерживать 64-битные системы в полном необходимом вам объеме. Например, компания Aladdin достаточно быстро выпустила 64-битные драйвера для поддержки аппаратных ключей Hasp. Но очень долго отсутсвовала система автоматической защиты 64-битных бинарных файлов (программа Hasp Envelop). Таким образом, механизм защиты приходилось реализовывать самостоятельно внутри программного кода, что являлось дополнительной сложной задачей, требующей квалификации и времени. Не забывайте про подобные моменты, связанные с обеспечением защиты, системой обновлений и так далее.
3.8. Инсталлятор
4. Шаг четвертый. Настройка проекта в Visual Studio 2005/2008
Создание 64-битной конфигурации проекта в Visual Studio 2005/2008 выглядит достаточно просто. Сложности будут подстерегать вас на этапе сборки новой конфигурации и поиска в ней ошибок. Для создания же 64-битной конфигурации достаточно выполнить следующие 4 шага:
Запускаем менеджер конфигураций, как показано на рисунке N1:
Рисунок 1. Запуск менеджера конфигураций
В менеджере конфигураций выбираем поддержку новой платформе (рисунок N2):
Рисунок 2. Создание новой конфигурации
Выбираем 64-битную платформу (x64), а в качестве основы выбираем настройки от 32-битной версии (рисунок N3). Те настройки, которые влияют на режим сборки среда Visual Studio скорректирует сама.
Рисунок 3. Выбираем x64 в качестве платформы и берем за основу конфигурацию Win32
Добавление новой конфигурации завершено, и мы можем выбрать 64-битный вариант конфигурации и приступить к компиляции 64-битного приложения. Выбор 64-битной конфигурации для сборки показан на рисунке N4.
Рисунок 4. Теперь доступна 32-битная и 64-битная конфигурация
Если вам повезет, то дополнительно заниматься настройкой 64-битного проекта необходимости не будет. Но это сильно зависит от проекта, его сложности и количества используемых библиотек. Единственное, что стоит сразу изменить, это размер стека. В случае если в вашем проекте используется стек размером по умолчанию, то есть в 1 мегабайт, то есть смысл задать его размером в 2 мегабайта для 64-битной версии. Это не обязательно, но лучше заранее подстраховаться. Если у вас используется размер стека, отличный от размера по умолчанию, то есть смысл сделать его для 64-битной версии в 2 раза больше. Для этого в настройках проекта найдите и измените параметры Stack Reserve Size и Stack Commit Size.
5. Шаг пятый. Компиляция приложения
6. Диагностика скрытых ошибок
Если вы думаете, что после исправления всех ошибок компиляции будет получено долгожданное 64-битное приложение, то придется вас разочаровать. Самое сложное впереди. На этапе компиляции вами будут исправлены самые явные ошибки, которые смог обнаружить компилятор, которые в основном связаны с невозможностью неявного приведения типов. Но это верхушка айсберга. Основная часть ошибок скрыта. Эти ошибки с точки зрения абстрактного языка Си++ смотрятся безопасно или замаскированы явными приведениями типов. Таких ошибок в несколько раз больше, чем количество ошибок выявленных на этапе компиляции.
На ключ /Wp64 надежды возлагать не следует. Это ключ часто преподносится как чудесное средство поиска 64-битных ошибок. В действительности ключ /Wp64 всего лишь дает возможность при компиляции 32-битного кода получить некоторые предупреждения, что в 64-битном режиме определенные участки кода будут некорректны. При компиляции 64-битного кода эти предупреждения будут выданы компилятором в любом случае. И поэтому при компиляции 64-битного приложения ключ /Wp64 игнорируется. И уж тем более этот ключ не поможет в поиске скрытых ошибок [11].
Рассмотрим несколько примеров скрытых ошибок.
6.1. Явное приведение типов
Самый простой, но вовсе не самый легкий для обнаружения класс ошибок связан с явным приведением типов, при которых происходит обрезание значащих бит.
Распространенным пример — приведение указателей к 32-битным типам при передачи их в функции, такие как SendMessage:
|
Здесь явное приведение типа используется для превращения указателя в числовой тип. Для 32-битной архитектуры приведенный пример корректен, так как последний параметр функции SendMessage имеет тип LPARAM, который на 32-битной архитектуре совпадает с DWORD. Для 64-битной архитектуре использование DWORD ошибочно и должно быть заменено на LPARAM. Тип LPARAM имеет в зависимости от архитектуры размер 32 или 64 бита.
Это простой случай, но часто приведение типа выглядит более изысканно и обнаружить его используя предупреждения компилятора или поиском по тексту программы невозможно. Явные приведения типов подавляют диагностику компилятора, поскольку они именно и предназначены, чтобы сказать компилятору что приведение типов корректно и программист взял на себя ответственность за безопасность кода. Явный поиск тоже не поможет. Типы могут быть не стандартные имена (заданные программистом через typedef), а способов осуществить явное приведение типов тоже не мало. Для надежной диагностики подобных ошибок необходимо использовать только специальный инструментарий, такой как анализаторы Viva64 или PC-Lint.
6.2. Неявное приведение типов
Следующий пример связан уже с неявным приведением типа, при котором также происходит потеря значащих бит. Код функции fread осуществляет чтение из файла, но некорректен при попытке чтения более 2 гигабайт данных на 64-битной системе.
|
6.3. Работа с битами, сдвиги
Легко сделать ошибку в коде работящем с отдельными битами. Следующий тип ошибки связан с операциями сдвига. Рассмотрим пример:
|
Заметим также, что неисправленный код приведет еще к одной интересной ошибке. При выставлении 31 бита на 64-битной системе результатом работы функции будет значение 0xffffffff80000000 (см. рисунок 6). Результатом выражения 1
Как запустить игру на 32-битной системе, если она требует 64-разрядную систему, инструкция.
Подобная ошибка свидетельствует о том, что игра, которую вы пытаетесь установить на свой ПК, предназначена для 64-х разрядной системы, а не для 32-битной. Дело в том, что в отличие от 64-разрядной, 32-битная система может запускать программы разработанные только для неё.
Поэтому, если вы сомневаетесь, или не знаете разрядность своей ОС, тогда это можно выяснить следующим образом:
Как запустить игру на 32-битной системе, если она требует 64-разрядную
Если выяснилось, что ОС является 32-разрядной, а вам нужно установить 64-битную, то необязательно делать переустановку Windows. Именно о том, как разрешить подобную проблему и будет более подробно рассказано в данной статье.
Различия между 64-битной и 32-битной систем
В первую очередь стоит понимать, что от того какая система используется, зависит общий объём оперативной памяти на компьютере. Кроме этого, от разрядности системы зависит и то, сколько может быть выделено места для конкретного приложения.
Таким образом, при использовании 64-разрядной системы максимальный объём RAM (оперативная память) составляет 16 Гб. При этом, в Windows Professional, данный показатель может достигать 192 Гб. В свою очередь, на какую-либо определённую утилиту отводится до 4 Гб оперативки.
Если рассматривать x32, то RAM в этом случае значительно меньше. Максимальный объём оперативки составляет 4 Гб. Что касается отдельных приложений, то для них может быть отведено максимум до 2 Гб.
Также, от разрядности процессора зависит ещё и скорость обработки данных. То есть, в случае с x64 нагрузка распределяется равномерно на все ядра ПК. А в x32, второе ядро запускается только после полной загрузки первого.
Кроме этого, есть ещё один довольно важный момент – 64-х битная система не подходит для слабых ПК. Поэтому, при покупке компьютера лучше сразу приобретать x64, так как данный вариант может запускать любые приложения. Даже те, которые предназначены для 32-битных систем.
Однако если вы не хотите этого делать или попросту нет такой возможности, тогда можно воспользоваться сторонней программой или удалёнными серверами.
Программы для создания гостевой ОС
Существуют утилиты, позволяющие эмулировать работу систем, в которых имеются определённое программное и аппаратное обеспечение. Однако в этом случае, рекомендуется использовать только лицензионные версии визуализирующих программ.
В основе работы подобных утилит лежит создание так называемой гостевой версии ОС. При этом для её создания потребуется диск или его образ, с нужной ОС.
Среди программ позволяющих создавать гостевую операционку можно выделить:
- Oracle VirtualBox.
- VMware Worstation.
- Windows Virtual PC и др.
Удалённые серверы
Такой вариант как использование удалённых серверов для запуска игр, которые требуют 64-разрядную ОС, также довольно удобен, как и специальные утилиты. Только при использовании удалённого сервера, все расчёты и информация будет обрабатываться исключительно на нём.
Суть данного варианта заключается в том, что вам не будут мешать ограничения, с которыми можно столкнуться на x32 ОС. Так как игры и другие программы станут запускаться в требуемых для них системах.
Например, такая программа как Microsoft Azure, позволяет создавать сразу несколько ОС. Для тех, кто любит играть, можно использовать NVIDIA GRID. С его помощью происходит виртуализация видеокарты.
Только не забывайте, что данные сервисы работают с удалёнными серверами. Соответственно, для их нормального функционирования необходим хороший Интернет.
Резюме
Столкнувшись с вопросом о том, как запустить игру на 32-битной системе, если она требует 64-разрядную, решить его вполне можно. Только для этого, как можно увидеть потребуется работа со специализированными программами или удалёнными серверами. А это довольно сложно.
Также не забывайте и о риске заражения вашего ПК вредоносными программами. Поэтому, если ваш компьютер позволяет, то лучше установить 64-разрядную ОС. В этом случае, проблем с запуском программ и игр у вас не возникнет.
Но помните, что выбор всегда за вами. А 64-х битную ОС могут потянуть далеко не все ПК.
Многие игроки в течение последних нескольких лет частенько сталкиваются с ситуацией, когда только что вышедшая игрушка попросту отказывается работать на их системе. Затем, после некоторых исследований, они понимают, что дело заключается в том, что запускаемая игра является 64-битным приложением.
В данной статье мы простым языком расскажем вам, почему выбранная вами игра не запустилась на вашем компьютере, почему стоит переходить на 64-битную операционную систему и как запустить 64-битную игру.
Почему 64-битные игры не запускаются?
Ок, давайте начнем с самого простого: 64-битные игры требуют операционную систему такой же разрядности. У вас, вероятней всего, в компьютере присутствует процессор на 64-битной архитектуре, но вот операционная система установлена 32-битная.
Несколько лет назад, разработчики еще пытались подстраивать свои проекты как под 32-битные системы, так и под 64-битные. Однако, в настоящее время это крайне невыгодно в связи с огромными ограничениями 32-битной архитектуры. Дабы не загружать излишним поток информации, вам, игроку, следует усвоить только две вещи: 32-битная ОС будет поддерживать только 4 гигабайта оперативной памяти и 64-битная ОС позволит вашему компьютеру быть более производительным.
Как запускать 64-битные игры?
Можно ли запустить 64-битную игру на 32-битах? Ответ может быть только один: вам нужна 64-битная операционная система(и такой же процессор). Вот и все. В Интернете вы можете найти кучи различных видео и статей о том, как запустить 64-битную игру на 32-битной системе. Но, нужно сразу же сказать, что решением в этой ситуации станет только замена ОС.
Однако, у вас может возникнуть и другая сложность: процессор на 32-битной архитектуре. Что же, в данной ситуации вам только можно посочувствовать, а также спросить: где вы откопали такое чудо? К сожалению, чтобы играть во все современные игры, вам обязательно нужно обзавестись 64-битным процессором и такой же операционной системой – по другому никак.
Да, некоторые из вас сразу же могут написать, что запуск 64-битных приложений в 32-битной среде возможен, например, с помощью виртуальной машины. Однако, следует заметить, что даже в таком случае вам понадобиться процессор, обладающий 64-битной архитектурой.
В заключение
Хочется сказать, что в настоящее время смысла сидеть на 32-битных операционных системах абсолютно нет, особенно, если вы являетесь геймером. Если же у вас мощный игровой компьютер, то такая разрядность и вовсе будет ограничивать производительность вашей машины. Так что смысла от 32-битной операционной системы на данный момент попросту нет.
Читайте также: