Давно хотел написать эту статейку. Так сказать личный долгий путь до нормального запуска и игры по сети в Battlefield 2 на операционной системе GNU/Linux. Всю эту информацию можно найти в интернете, но я собрал максимально полный обзор. Таким образом игру удалось запустить на 2х компьютерах под управление 2х разных дистрибутивов - OpenSUSE и Debian. Если модераторам не понравится отдельная тема, можно будет ее объединить с общим FAQ по запуску игры.

All right, you got to go

Для начала нам понадобится установить альтернативную реализацию WinAPI - Wine. С этим справляется большинство, так что тут мы особо останавливаться не будем. Скачать можно на официальном сайте: http://winehq.org/site/download

После того, как все установлено нужно перейти к установке DirectX (еще бы, без него игра и в винде не пойдет). Качаем его и пытаемся запустить, но не тут то было. При попытке запуска установщика - DirectX не устанавливается. Обидно, значит нужно что-то еще.

Теперь запасаемся терпением. Для начала сотрем старое и лишнее говно командой:

cd ~/.wine/drive_c/windows/system32; rm d3d8.dll d3d9.dll ddraw.dll dsound.dll dsound.vxd quartz.dll

Используя данный код, мы перебрались в нужный нам каталог и удалили из него старые dll такие как d3d8.dll d3d9.dll ddraw.dll dsound.dll dsound.vxd quartz.dll

Далее скопируем в папку ~/.wine/drive_c/windows/system32/ библиотеки mscoree.dll streamci.dll из винды (да да, именно из винды)

Отредактируем winecfg

Открываем консоль, пишем там winecfg и лицезреем окошко настройки вайна.

Перед редактированием, Вы должны съесть манную кашу, овсянку, ну и можно пару таблеток виагры

Выполните winecfg, перед Вами появится окно, в нем откройте вкладку "библиотеки".

Будьте внимательны, там где "Новое замещение для библиотеки", вбиваем имя библиотеки - d3d8 далее нажимаем на кнопку "Добавить", библиотека перемещается ниже в колонку "существующие замечания", теперь кликаете по этой библиотеке (которую только что добавили) и жмете кнопку "редактировать", выбираете параметр "windows".

И вот так вот Вы должны сделать со следующими библиотеками:

d3d8

d3d9

d3dim

d3drm

d3dx8

d3dxof

dciman32

ddrawex

devenum

dinput

dinput8

dmband

dmcompos

dmime

dmloader

dmscript

dmstyle

dmsynth

dmusic

dplay

dplayx

dpnaddr

dpnet

dpnhpast

dswave

dxdiagn

mscoree

quartz

streamc

Когда вы закончите, можно продолжать.

Теперь просто утсанавливаем DirectX два раза кликнув по нему. Возможно придется сначала распаковать его в папку (например C:\DirX), а потом запустить его из этой папки (она будет иметь имя ~/.wine/drive_c/DirX/).

Снова отредактируем winecfg

На этот раз, редактировать надо будет меньше, мы будем редактировать следующие библиотеки:

d3d8

d3d9

ddrawex

dinut

dinput8

Теперь для этих библиотек, меняете значение с windows на wine, нажимаем кнопку применить.

Эти шаги едины для всех игр, запускаемых под вайном. После них мне удалось запустить даже Max Payne 2 с полным отсутствием глюков и с первого раза.

Установка и настройка параметров, специфичных для Battlefield 2

Чтобы нам лучше и прятнее жилось, опять открываем winecfg, заходим на вкладку Графика и там ставим галочку напротив "Эмулировать виртуальный рабочий стол", ниже указываем разрешение, удобное вам. У меня разрешение монитора 1280х1024, а у виртуального рабочего стола 1152х867). Жмем ОК.

Теперь вставляем ваш лицензионный диск с игрой в ваш привод. Авторан не запустился? Не беда, идем и делаем все ручками. Установка стандартна, никаких подводных камней. Далее также патчим игру, чтоб можно было играть на сервере (об этом написано уже много раз). После этого самые нетерпеливые читатели наверняка запустят игру, зайдут в нее даже и ужаснутся ужасными багами с текстурами неба и земли. Это мы сейчас и будем исправлять.

Устранение багов с графикой

Откройте редактор реестра (напишите 'regedit' в консоли) и создайте ключ 'HKEY_CURRENT_USER\Software\Wine\AppDefaults\bf2.exe\Direct3D'. Затем, добавьте String Value с именем 'OffscreenRenderingMode' и дважды кликнув на него, присвойте значение 'fbo' (без кавычек).

Был еще один способ, найденный в одном из американских блогов. Добавить тот же самый String Values с тем же значением но в ветке: HKEY_CurrentUser>Software>Wine>Direct3D

Все недостающие подпапки создаем ручками, не пугаемся.

Далее уже запускаем игру с иконки на рабочем столе. Радуемся. После этого у меня все пошло и я уже два дня играю у нас на сервере не переключаясь в эту ужасную альтернативную операционную систему.

Подведем итог

Итак, что же мы имеем:

+ Играбельная версия игры;

+ Нет особых тотально мешающих багов;

+ Пинг не уменьшился (хотя зависит от машины);

+ И сетевой и сингл режим работают отлично. Хотя может быть глюки с лиценз. серверах;

Но лучше опишу с чем неприятным придется столкнуться:

- Иногда пропадает текстура ландшафта (см. фоты ниже). У бага есть плюс, что можно иногда людей заметить за горкой ;)

- VoIP работает, но вы сказать ничего не сможете. Нужно еще покопаться с настройкой микрофона в wine;

- Небольшое уменьшение производительности (процентов 5). Но наверно это из-за того, что на винду у меня обычно запущено 1-2 приложения одновременно, а тут 10 на 4-х рабочих столах %)

- На одной из машин как-то случился кратковременный баг со звуком. Но это быстро изчезло и больше не мешало;

- Нет курсора в главном меню. Если надо, могу написать как это исправить. Но кому нужно это меню. В игре-то он есть.

Так что во так выглядит кошерный бателфилд (настройки на среднем, так как лень ставить максимум):

А вот так выглядит баг:

V@s3K — 20.11.2008 [07:27] [80.64.175.23]
тест
berlin — 02.03.2009 [08:03] [62.149.0.175]
Gut!
GreatCornholio — 13.06.2009 [18:11] [10.204.60.69]
>>Снова отредактируем winecfg
На этот раз, редактировать надо будет меньше, мы будем редактировать следующие библиотеки:
....
dinut

%s/dinut/dinput?
V@s3K — 13.06.2009 [18:16] [80.64.175.23]
Да
JasonX — 14.06.2009 [13:13] [80.64.175.12]
вот это пиксель на втором скрине... всем пикселям пиксель )))
zgood — 17.07.2009 [14:44] [217.30.247.2]
При установке directX вылетает ошибка:
<a href="http://piccy.info/view/9e3f36c600a98814c9eceed56d64dbae/" target="_blank">http://i.piccy.info/i4/5c/e2/6a7f99195bc53240c274b8468d6c.jpeg</a>;
zgood — 17.07.2009 [14:45] [217.30.247.2]
Please reinstall dot net framework
V@s3K — 17.07.2009 [16:13] [172.19.58.170]
Нужно скачать и поставить .NET framework. Странно, первый раз слышу, чтобы он требовался.
hobbeat — 09.08.2010 [17:29] [90.188.20.86]
Тоже столкнулся с ошибкой, как и zgood. Пытался установить июнь2010 версию дХ. А какой дотнет фреймворк пытаться устанавливать, не подскажете?
V@s3K — 09.08.2010 [19:10] [178.49.15.6]
hobbeat, попробуйте поставить winetricks и сделать winetricks dotnet20
refresh

(не заполняйте это поле)

i