Установка Diablo III в Ubuntu Linux

/www/pages/modesco/ubuntovod

Да друзья, решил упомянуть про установку в Ubuntu Linux одной из самых популярных игр последнего времени - Diablo III. Так что если вы устанавливали Windows для данной игры - удаляйте, ибо и под Linux игра работает вполне стабильно.

  • Рекомендуемая версия Wine: 1.5.5
  • Статус игры: Устанавливается, запускается и вполне сносно работает, но с некоторыми оговорками
  • Страница игры на AppDB: appdb.winehq.org

Итак, для работы игры необходим vcrun2008, ставится из winetricks. DirectX не нужен, игра отлично работает с OpenGL.

Так-же на чистом Wine не работает установка (решается патчами, ниже) и смена настроек игры. Но вы всё-же можете запустить уже установленную игру следующей командой:

wine DiabloIII.exe -launch

Для полноценной работы установки игры и настроек, желательны следующие патчи:

Wine 1.5.5:

DepthStencil: bugs.winehq.org/attachment.cgi?id=39565

Wine 1.5.4 (old):

DepthStencil: bugs.winehq.org/attachment.cgi?id=39565

После применения патчей AcceptEx необходимо выполнить следующую команду из директории с исходниками:

./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
 
" > $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
" >> debian/patches/series
printf "  * KUSER_SHARED_DATA patch
" >> $BASE_DIR/build/changelog
printf "    - Fixes login issues with SW:TOR.
 
" >> $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
" >> debian/patches/series
printf "AcceptEx_2of3
" >> debian/patches/series
printf "AcceptEx_3of3
" >> debian/patches/series
printf "  * AcceptEx patches
" >> $BASE_DIR/build/changelog
printf "    - Fixes launcher issues in Diablo III and World of Warcraft.
 
" >> $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
" >> debian/patches/series
printf "  * DepthStencil patch
" >> $BASE_DIR/build/changelog
printf "    - Fixes game lockups in Diablo III when switching video modes.
 
" >> $BASE_DIR/build/changelog
 
# Add maintainer information to the changelog.
printf " -- $DEBFULLNAME   $(date -R)
 
" >> $BASE_DIR/build/changelog
cat debian/changelog >> $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 (или другого дистрибутива имеющего повышенную безопасность) то попробуйте выполнить данную команду перед запуском игры:
    echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
  • Q: Во время игры появляются странные артефакты красного цвета
  • A: Отключите "Анизотропную фильтрацию" в панели управления видеодрайвером
  • Q: Игра вылетает в произвольных местах карты
  • A: Такое проявляется на старых видеокартах. Обновление драйвера видеокарты должно помочь, хотя оно в любом случае не помешает
  • Q: После запуска игры возникает "Непредвиденная ошибка"
  • A: Скорее всего это связанно с использованием встроенных библиотек vcrun2008. Установите отдельный пакет VC++ 2008из winetricks следующей командой:
    winetricks vcrun2008
  • Q: Я использую Ubuntu с рабочим окружением Unity. При запуске игры в полноэкранном режиме - панель и бар остаются видны
  • A: Это несовместимость Compiz с многими полноэкранными приложениями. Скорее всего вам поможет переключение на Unity 2D или включение "Legacy Fullscreen" в опциях Compiz

Думаю многим пригодится данная информация.

Aleks
2012-10-06 23:35:00
а если у меня через 5 минут игры виснит все, что это может быть?
Sk8er
2012-10-07 17:51:00
проблема у вас значит
Nikolay
2012-11-03 06:17:00
Пытаюсь распространить информацию максимально широко: за wine блокируют учетные записи. http://hexkey.info/538/diablo-3-blokiruyut-za-wine-i-linux/