Да друзья, решил упомянуть про установку в Ubuntu Linux одной из самых популярных игр последнего времени - Diablo III. Так что если вы устанавливали Windows для данной игры - удаляйте, ибо и под Linux игра работает вполне стабильно.
- Рекомендуемая версия Wine: 1.5.5
- Статус игры: Устанавливается, запускается и вполне сносно работает, но с некоторыми оговорками
- Страница игры на AppDB: appdb.winehq.org
Итак, для работы игры необходим vcrun2008, ставится из winetricks. DirectX не нужен, игра отлично работает с OpenGL.
Так-же на чистом Wine не работает установка (решается патчами, ниже) и смена настроек игры. Но вы всё-же можете запустить уже установленную игру следующей командой:
1
|
wine
DiabloIII
.exe
-
launch
|
Для полноценной работы установки игры и настроек, желательны следующие патчи:
Wine 1.5.5:
- AcceptEx 1 из 4: source.winehq.org/patches/data/86603
- AcceptEx 2 из 4: source.winehq.org/patches/data/86604
- AcceptEx 3 из 4: source.winehq.org/patches/data/86605
- AcceptEx 4 из 4: source.winehq.org/patches/data/86606
DepthStencil: bugs.winehq.org/attachment.cgi?id=39565
Wine 1.5.4 (old):
- AcceptEx 1 из 3: source.winehq.org/patches/data/86263
- AcceptEx 2 из 3: source.winehq.org/patches/data/86264
- AcceptEx 3 из 3: source.winehq.org/patches/data/86265
DepthStencil: bugs.winehq.org/attachment.cgi?id=39565
После применения патчей AcceptEx необходимо выполнить следующую команду из директории с исходниками:
1
|
.
/
tools
/
make_requests
|
Так-же для пользователей Ubuntu существует скрипт, осуществляющий автоматическую сборку Wine с необходимыми патчами:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
#!/bin/sh
WINE_VERSION
=
"wine1.5"
BASE_DIR
=
"$HOME/Downloads/$WINE_VERSION"
RELEASE_CODENAME
=
$
(
lsb_release
-
cs
)
COMPONENTS
=
"main restricted universe multiverse"
BUILD_DEPENDENCIES
=
"
build-essential wget fakeroot pbuilder debootstrap
autotools-dev bison debhelper docbook-to-man docbook-utils docbook-xsl flex
fontforge gcc-4.5 gettext libasound2-dev libcapi20-dev libcups2-dev
libdbus-1-dev libfontconfig1-dev libfreetype6-dev libgif-dev libgl1-mesa-dev
libglu1-mesa-dev libgnutls-dev libgphoto2-2-dev libgsm1-dev
libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev libjpeg-dev
liblcms1-dev libldap2-dev libmpg123-dev libncurses5-dev libopenal-dev
libpng12-dev libpulse-dev libsane-dev libssl-dev libtiff4-dev libv4l-dev
libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxi-dev
libxinerama-dev libxml2-dev libxrandr-dev libxrender-dev libxslt1-dev
libxt-dev libxxf86vm-dev linux-kernel-headers opencl-headers oss4-dev prelink
unixodbc-dev x11proto-xinerama-dev
"
# Make sure the DEBFULLNAME and DEBEMAIL environment variables are set.
if
[
!
-
n
"$DEBFULLNAME"
]
||
[
!
-
n
"$DEBEMAIL"
]
;
then
printf
"DEBFULLNAME and DEBEMAIL environment variables not found. Add them to your .bashrc file.
"
printf
"export DEBFULLNAME="
Name
"
"
printf
"export DEBEMAIL="
Email
"
"
exit
1
fi
# Make sure there is a gpg key available.
if
[
!
-
n
"$(gpg --list-secret-keys)"
]
;
then
printf
"GPG key not found! To generate a key run:
"
printf
"gpg --gen-key
"
exit
1
fi
# Remove old build files.
rm
-
Rf
$
BASE_DIR
/
build
/
wine*
# Setup the directory structure.
mkdir
-
p
$
BASE_DIR
/
pbuilder
mkdir
-
p
$
BASE_DIR
/
build
# Update the list of packages.
printf
"Updating packages...
"
sudo
apt
-
get
update
# Install build prerequisites.
printf
"Installing build dependencies...
"
sudo
apt
-
get
-
y
install
$
BUILD_DEPENDENCIES
libmpg123
-
0
:
i386
libasound2
-
plugins
:
i386
if
[
$
?
-
ne
0
]
;
then
printf
"Error downloading the build dependencies.
"
exit
1
fi
# Make sure the i386 pbuilder environment exists and is up to date.
if
[
-
e
$
BASE_DIR
/
pbuilder
/
$
RELEASE_CODENAME
-
i386
.
base
.
tgz
]
;
then
# Update the i386 pbuilder environment.
printf
"Updating the i386 pbuilder environment...
"
sudo
pbuilder
--
update
--
basetgz
"$BASE_DIR/pbuilder/$RELEASE_CODENAME-i386.base.tgz"
if
[
$
?
-
ne
0
]
;
then
printf
"Error updating the pbuilder environment.
"
exit
1
fi
else
# Create the i386 pbuilder environment with the necessary build dependencies.
printf
"Creating a new i386 pbuilder environment...
"
sudo
pbuilder
--
create
--
basetgz
"$BASE_DIR/pbuilder/$RELEASE_CODENAME-i386.base.tgz"
--
architecture
i386
--
distribution
$
RELEASE_CODENAME
--
components
"$COMPONENTS"
--
extrapackages
"$BUILD_DEPENDENCIES"
--
debootstrapopts
--
variant
=
buildd
if
[
$
?
-
ne
0
]
;
then
printf
"Error creating the i386 pbuilder environment.
"
exit
1
fi
fi
# Get the source code for wine.
printf
"Downloading the source code for wine...
"
cd
$
BASE_DIR
/
build
apt
-
get
-
y
source
$
WINE_VERSION
if
[
$
?
-
ne
0
]
;
then
printf
"Error downloading the source code for wine.
"
exit
1
fi
cd
$
WINE_VERSION
-
*
# Figure out what the package version is.
PACKAGE_VERSION
=
$
(
head
-
n1
debian
/
changelog
|
perl
-
ne
`
if
(
$
_
=
~
/
^
`
$
WINE_VERSION
`
s
(
(
[
w
.
-
~
+
]
+
)
)
/
)
{
print
$
1
;
}
`
)
# Add patch information to the changelog.
printf
"$WINE_VERSION ($PACKAGE_VERSION+patches) $RELEASE_CODENAME; urgency=low
"
&
gt
;
$
BASE_DIR
/
build
/
changelog
# Download and add each patch to the build system.
printf
"Downloading and adding patches to the build system...
"
# KUSER_SHARED_DATA patch to fix issues with SW:TOR.
wget
-
qO
debian
/
patches
/
KUSER_SHARED_DATA
http
:
//bugs.winehq.org/attachment.cgi?id=39482
printf
"KUSER_SHARED_DATA
"
&
gt
;
&
gt
;
debian
/
patches
/
series
printf
" * KUSER_SHARED_DATA patch
"
&
gt
;
&
gt
;
$
BASE_DIR
/
build
/
changelog
printf
" - Fixes login issues with SW:TOR.
"
&
gt
;
&
gt
;
$
BASE_DIR
/
build
/
changelog
# AcceptEx patches to fix issues with Blizzard launchers.
wget
-
qO
debian
/
patches
/
AcceptEx_1of3
http
:
//source.winehq.org/patches/data/86263
wget
-
qO
debian
/
patches
/
AcceptEx_2of3
http
:
//source.winehq.org/patches/data/86264
wget
-
qO
debian
/
patches
/
AcceptEx_3of3
http
:
//source.winehq.org/patches/data/86265
printf
"AcceptEx_1of3
"
&
gt
;
&
gt
;
debian
/
patches
/
series
printf
"AcceptEx_2of3
"
&
gt
;
&
gt
;
debian
/
patches
/
series
printf
"AcceptEx_3of3
"
&
gt
;
&
gt
;
debian
/
patches
/
series
printf
" * AcceptEx patches
"
&
gt
;
&
gt
;
$
BASE_DIR
/
build
/
changelog
printf
" - Fixes launcher issues in Diablo III and World of Warcraft.
"
&
gt
;
&
gt
;
$
BASE_DIR
/
build
/
changelog
# DepthStencil patch to fix lockups in Diablo III when switching video modes.
wget
-
qO
debian
/
patches
/
DepthStencil
http
:
//bugs.winehq.org/attachment.cgi?id=39565
printf
"DepthStencil
"
&
gt
;
&
gt
;
debian
/
patches
/
series
printf
" * DepthStencil patch
"
&
gt
;
&
gt
;
$
BASE_DIR
/
build
/
changelog
printf
" - Fixes game lockups in Diablo III when switching video modes.
"
&
gt
;
&
gt
;
$
BASE_DIR
/
build
/
changelog
# Add maintainer information to the changelog.
printf
" -- $DEBFULLNAME $(date -R)
"
&
gt
;
&
gt
;
$
BASE_DIR
/
build
/
changelog
cat
debian
/
changelog
&
gt
;
&
gt
;
$
BASE_DIR
/
build
/
changelog
cp
$
BASE_DIR
/
build
/
changelog
debian
/
changelog
# Build the 64 bit packages.
printf
"Building the 64 bit packages...
"
debuild
if
[
$
?
-
ne
0
]
;
then
printf
"Error building the 64 bit packages.
"
exit
1
fi
# Move the 64 bit packages into the base directory.
mv
$
BASE_DIR
/
build
/
$
WINE_VERSION*
.
deb
$
BASE_DIR
# Build the 32 bit packages.
printf
"Building the 32 bit packages...
"
cd
.
.
sudo
pbuilder
--
build
--
basetgz
"$BASE_DIR/pbuilder/$RELEASE_CODENAME-i386.base.tgz"
--
buildresult
"$BASE_DIR"
$
WINE_VERSION
\
_
$
PACKAGE_VERSION
+
patches
.
dsc
if
[
$
?
-
ne
0
]
;
then
printf
"Error building the 32 bit packages.
"
exit
1
fi
# Remove 32 bit packages that conflict with 64 bit packages.
rm
$
BASE_DIR
/
wine_
$
PACKAGE_VERSION
+
patches_i386
.
deb
rm
$
BASE_DIR
/
$
WINE_VERSION
-
dev_
$
PACKAGE_VERSION
+
patches_i386
.
deb
# Install the packages.
printf
"Installing packages...
"
sudo
dpkg
-
i
$
BASE_DIR
/
$
WINE_VERSION*
.
deb
# All done.
exit
0
|
И ещё есть пакет на PPA (на данный момент версия для Wine 2.5.3).
Несколько частых проблем и их решения:
- Q: Я использую патченную версию Wine, но установка всё-равно застревает на 0%
- A: Попробуйте выставить эмуляцию "WinXP" в настройках. Хотя говорят что игра показывает более хорошие результаты в режиме совместимости с "Windows 7" и "Vista"
- Q: Я использую патченную версию Wine, но при установке с DVD я получаю ошибку о том что установщик не может найти файлы
- A: Смонтируйте DVD с опцией "-o unhide", должно помочь
- Q: При попытке подключения я получаю ошибку "3007"
- A: Если вы используете последнюю версию Ubuntu (или другого дистрибутива имеющего повышенную безопасность) то попробуйте выполнить данную команду перед запуском игры:
1echo 0 | sudo tee / proc / sys / kernel / yama / ptrace_scope
- Q: Во время игры появляются странные артефакты красного цвета
- A: Отключите "Анизотропную фильтрацию" в панели управления видеодрайвером
- Q: Игра вылетает в произвольных местах карты
- A: Такое проявляется на старых видеокартах. Обновление драйвера видеокарты должно помочь, хотя оно в любом случае не помешает
- Q: После запуска игры возникает "Непредвиденная ошибка"
- A: Скорее всего это связанно с использованием встроенных библиотек vcrun2008. Установите отдельный пакет VC++ 2008из winetricks следующей командой:
1winetricks vcrun2008
- Q: Я использую Ubuntu с рабочим окружением Unity. При запуске игры в полноэкранном режиме - панель и бар остаются видны
- A: Это несовместимость Compiz с многими полноэкранными приложениями. Скорее всего вам поможет переключение на Unity 2D или включение "Legacy Fullscreen" в опциях Compiz
Думаю многим пригодится данная информация.