Запуск игр в FreeBSD AMD64

FreeBSD и прочие в роли десктопа.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
tymnet
проходил мимо

Запуск игр в FreeBSD AMD64

Непрочитанное сообщение tymnet » 2012-10-19 3:27:36

Всем привет. Хочу поделиться моим способом поиграть в современные игры под FreeBSD AMD64. Хотя данный способ повторяет http://forum.lissyara.su/viewtopic.php?f=45&t=33899 , более того информация с данной ссылки использовалась мной (за что спасибо ее автору), я все же решил более полно раскрыть данную тему для новичков в фряхе. Для того чтоб поиграть, а не просто запустить современные игры понадобится хороший компьютер, чем лучше компьютер тем меньше тормозов. Поскольку DirectX под фряхой нет, то вайн транслирует вызовы DX в вызовы OpenGL и поэтому очень сильно нагружается процессор. Так же данный гайд не гарантирует 100% запуска игр. Но если игра написана изначально с поддержкой OpenGL, к примеру игры от Кармак&ID, то потери производительности будут и не такими уж большими. Так же следует принять во внимание, что поиграть в современные игры на фряхе получится только на nVidia картах, начиная от 8800 и выше. К примеру все это я тестировал на E2140 1.6Ghz, 5 Gb озу, видео nvGT640 2gb, FreeBSD 9.0 AMD64, Wine 1.5.9.(на такой конфигурации игры 2012 года тормозили из-за очень слабого процессора Так как я не игроман, то я не покупал лицензии, а качал так называемые репаки и запускал их. Хоть это и не по нашему, но новичкам советую поначалу тоже пользоваться репаками (в целях ознакомления),так как вайн не поддерживает всех защит используемых в лицензиях. Хотя как мне известно стим тоже неплохо работает под вайном, поэтому можете попробовать его, но я не проверял. В частности я запустил и смог поиграть в такие игры как DOOM 3, CIV 5, Ведьмак 2, Rage, DOOM 3 BFG Edition (eng), Mass Effect 3, Stalker SOC хотя в последнем пришлось править экзешник хекс редактором, это поделие из самостийной не хотело запускаться, ругалось что у меня подкачка менее 2 gb.Для установки и настройки вайна неоходимо подключение к интернету(поначалу, потом если вы разберетесь, то сможете собрать все необходимые файлы на локальном диске как это сделал я)
Переходим к установке вайна. В случае с 32х битной фряхой это несложно, но вот вайна для FreeBSD AMD64 не существует в природе. Но, один хакер написал патчик позволяющий всетаки установить вайн на 64 битке. Это достаточно долгий процесс поэтому мы не будем его рассматривать (гугл в помощь для пытливых), а поступим проще, воспользуемся готовым решением. Вначале делаем все под рутом. Качаем свежие драйвера с сайта http://www.nvidia.com. На момент написания это были 304.60, и устанавливаем их командой

Код: Выделить всё

tar xzf NVIDIA-FreeBSD-x86_64-304.60.tar.gz && cd NVIDIA-FreeBSD-x86_64-304.60 && make install
.

Перезагружаем комп

Далее идем на http://www.mediafire.com/wine_fbsd64 забираем нужную вам сборку, для меня это была 1.5.9 и устанавливаем ее командой

Код: Выделить всё

pkg_add wine-fbsd64-1.5.9,1.txz
или tbz зависит от расширения пакета.

далее нужно скачать патчик http://people.freebsd.org/~ivoras/wine/ ... -nvidia.sh который нужно поправить под версию ваших драйверов. Для того чтоб было более понятно что нужно сделать, выкладываю исправленный патч под 304.60 драйвера тут:

Код: Выделить всё

set -e

PORTSDIR=${PORTSDIR:-/usr/ports}
PREFIX=${PREFIX:-/usr/local}

if [ -d $PORTSDIR/distfiles ]
then
cd $PORTSDIR/distfiles
NO_REMOVE_NVIDIA="yes"
else
cd /tmp/
fi

terminate() {

echo "!!! $2 !!!"
echo "Terminating..."
exit $1

}

[ `whoami` = root ] \
|| terminate 254 "This script should be run as root"

echo "===> Patching wine-fbsd64 to work with x11/nvidia-driver:"

WINE=`pkg_info -E wine-fbsd64'*' | cut -f 3 -d -` \
|| terminate 255 "Unable to detect wine-fbsd64, please install first"
echo "=> Detected wine-fbsd64: ${WINE}"

NV=`pkg_info -E nvidia-driver-'*' | cut -f 3 -d -` \
|| terminate 1 "Unable to detect nvidia-driver, please install first"
echo "=> Detected nvidia-driver: ${NV}"

NVIDIA=${NV}
NV=`echo ${NV} | cut -f 1 -d _ | cut -f 1 -d ,`

if [ ! -f NVIDIA-FreeBSD-x86-304.60.tar.gz ]
then
echo "=> Downloading NVIDIA-FreeBSD-x86-304.60.tar.gz from ftp://download.nvidia.com...
fetch -pRr ftp://download.nvidia.com/XFree86/FreeBSD-x86/304.60/NVIDIA-FreeBSD-x86-304.60.tar.gz \
|| terminate 2 "Failed to download NVIDIA-FreeBSD-x86-304.60.tar.gz"
fi

echo "=> Extracting NVIDIA-FreeBSD-x86-304.60.tar.gz to $PREFIX/lib32..."
EXTRACT_LIST="libGL.so.1"
case $NV in
195*|173*|96*|71*)
EXTRACT_LIST="$EXTRACT_LIST libGLcore.so.1 libnvidia-tls.so.1"
;;
*)
EXTRACT_LIST="$EXTRACT_LIST libnvidia-glcore.so.1 libnvidia-tls.so.1"
;;
esac

EXTRACT_ARGS="--strip-components 2 -C $PREFIX/lib32"
for i in $EXTRACT_LIST
do
EXTRACT_ARGS="$EXTRACT_ARGS --include NVIDIA-FreeBSD-x86-304.60/obj/$i"
done
tar $EXTRACT_ARGS -xvf NVIDIA-FreeBSD-x86-304.60.tar.gz \
|| terminate 3 "Failed to extract NVIDIA-FreeBSD-x86-304.60.tar.gz"

echo "=> Cleaning up..."
[ -n "$NO_REMOVE_NVIDIA" ] || rm -vf NVIDIA-FreeBSD-x86-304.60.tar.gz \
|| terminate 6 "Failed to remove files"

echo "===> wine-fbsd64-${WINE} successfully patched for nvidia-driver-${NVIDIA}"
Вы можете взять этот патч, сохранить его под именем patch-wine-nvidia.sh, выставить ему права исполняемого файла или поправить оригинальный патч для своей версии драйверов. Вообщем зависит от вас. Итак патч поправили, сделали его исполняемым, теперь отдаем команду на его установку

Если все сделано правильно, то ошибок быть не должно.
так же нам потребуется поставить zenity для winetricks, который мы установим позже

Код: Выделить всё

pkg_add -r zenity
Перезагружаем компьютер, заходим под обычным пользователем(не рутом), загружаемся в иксы и запускаем winecfg, начнется настройка wine и скачка gecko. Далее необходимо скачать в свою домашнюю папку скрипт winetricks из http://winetricks.org/winetricks . Когда скрипт скачается, присваиваем ему право выполнения и в консоли начинаем по порядку написанному ниже ставить все компоненты.

Код: Выделить всё

./winetricks vcrun2005
./winetricks vcrun2008
vcrun2010
vcrun6
vcrun6sp6
d3dx9
dotnet20
перезагрузка компа
Из папки Windows/Microsoft.NET/Framework удалите папку v3.0 (если она там есть)

Код: Выделить всё

./winetricks vb5run
vb6run
vcrun2003
dotnet30
перезагрузка компа

Код: Выделить всё

./winetricks d3dxof
devenum
dinрut8
directmusic
directplay
directx9
dxdiagn
dxdiag
d3dx11_43
mfs40
wsh56vb
wsh57
gdiplus
physx
gfw
для некоторых игр (rage, DOOM 3 BFG Edition) нужны xaudio2 компоненты

скачиваем с интернета с баз dll-ок и добавляем библиотеку XAudio2_7.dll в папку system32

и в консоли прописываем

Код: Выделить всё

wine- regsvr32 XAudio2_0.dll
...
XAudio2_7.dll
Запускаем ./winetricks далее Select the default wineprefix затем Change settings перед нами откроется окно для правки реестра. Ставим галочки напротив:

Код: Выделить всё

ddr=opengll
multisampling= enabled
orm=fbo
psm=enabled
rtlm=auto
glsl=enabled
vsm=hardware
videomemorysize=2048 (выбирете значение ОЗУ вашей видеокарты)
mwo=enabled
перезагружаем комп.
Все вайн готов к работе (если конечно у вас не было ошибок). Можно приступить к настройке и установке torrent-edition игр Wink.Более подробно о настройке той или иной игры вы можете прочитать в интернете, по мере тестирования я буду дополнять этот гайд и обновлять его если будет выясняться что-то новенькое по настройкам вайна. Небольшой апдейт. Если ваша мышь в игре дергается на одном месте или вообще ведет себя странно, то попробуйте в winecfg в закладке библиотеки, поиграться с значением библиотеки dinput8 внешняя или встроенная или поменяйте там же порядок загрузки.Как правило это помогает.
P.S Мы поставили dxdiag и поэтому вы можете в консоли попробовать его запустить командой wine dxdiag в консоли, и посмотреть на вращающийся кубик DX
P.P.S Данная статья распространяется как есть, бесплатно и во имя распространения BSD систем. Вы можете копировать полностью и частями все что тут расписано даже без моего авторства или за авторством других лиц.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hedgehog
сержант
Сообщения: 220
Зарегистрирован: 2010-01-26 11:47:05
Откуда: Kharkiv, Ukraine
Контактная информация:

Re: Запуск игр в FreeBSD AMD64

Непрочитанное сообщение hedgehog » 2012-10-22 16:16:05

Какие-то больные фантазии. Достаточно скачать пакет и установить его (нужны исходники системы для nvidia-патчилки):

Код: Выделить всё

# pkg_add {package_name}
Пользуете pkgng?

Код: Выделить всё

# pkg2ng
Обновили nvidia драйвер после установки пакета?

Код: Выделить всё

# /usr/local/share/wine/patch-nvidia.sh
А вот такого я бы не делал:
tymnet писал(а):

Код: Выделить всё

tar xzf NVIDIA-FreeBSD-x86_64-304.60.tar.gz && cd NVIDIA-FreeBSD-x86_64-304.60 && make install
После этих действий нвидия похерила линуксулятор (привет, флеш!) и никто не мог мне сказать, что делать. Ставим драйвер из портов.
tymnet писал(а):далее нужно скачать патчик http://people.freebsd.org/~ivoras/wine/ ... -nvidia.sh который нужно поправить под версию ваших драйверов.

Код: Выделить всё

[/quote]
Зачем? Все давно работает автоматически.

PS: а еще я бы не ставил кучу виндовых пакетов в префикс "просто так, чтобы было". Как правило, что хорошо для одних приложений - то плохо для других. Для "поиграться-установить" у меня пара префиксов-мусорок, а для игр, в которые я обычно играю, выделенные префиксы.