Давно хотел написать эту статейку. Так сказать личный долгий путь до нормального запуска и игры по сети в Battlefield 2 на операционной системе GNU/Linux. Всю эту информацию можно найти в интернете, но я собрал максимально полный обзор. Таким образом игру удалось запустить на 2х компьютерах под управление 2х разных дистрибутивов - OpenSUSE и Debian. Если модераторам не понравится отдельная тема, можно будет ее объединить с общим FAQ по запуску игры.
All right, you got to go
Для начала нам понадобится установить альтернативную реализацию WinAPI - Wine. С этим справляется большинство, так что тут мы особо останавливаться не будем. Скачать можно на официальном сайте: http://winehq.org/site/download
После того, как все установлено нужно перейти к установке DirectX (еще бы, без него игра и в винде не пойдет). Качаем его и пытаемся запустить, но не тут то было. При попытке запуска установщика - DirectX не устанавливается. Обидно, значит нужно что-то еще.
Теперь запасаемся терпением. Для начала сотрем старое и лишнее говно командой:
Используя данный код, мы перебрались в нужный нам каталог и удалили из него старые 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-х рабочих столах %)
- На одной из машин как-то случился кратковременный баг со звуком. Но это быстро изчезло и больше не мешало;
- Нет курсора в главном меню. Если надо, могу написать как это исправить. Но кому нужно это меню. В игре-то он есть.
Так что во так выглядит кошерный бателфилд (настройки на среднем, так как лень ставить максимум):
А вот так выглядит баг:

