Pull to refresh

Шаманство вокруг Unreal Tournament 2004 для запуска под современным Линуксом

Лирическое отступление.



До недавних пор в нашем отделе разработчиков было принято расслабляться в течении дня получасовыми забегами в Counter Strike: Source. Но совсем недавно часть программистов, в том числе и я, полностью перевели свои рабочие машины на Linux (а именно Ubuntu).
Возиться с wine не было желания, поэтому единственным вариантом оставалось выбрать кроссплатформенный шутер. Это дело вкуса, но лично мне из всех доступных самым приемлимым показался Unreal Tournament 2004.
Вооружившись всем необходимым я попытался «завести» эту игру на своей домашней системе (Ubuntu 10.04beta1 x86_64) и прочитал не одну простыню логов трассировщиков, врежде чем понял что к чему.

Основные трудности.



С момента последнего релиза Unreal Tournament 2004 в мире линукса многое успело поменяться. Появились новые фреймворки, подсистемы, некоторые из старых потеряли свою актуальность. От HAL'а отказываются, PulseAudio же напротив почти в каждом втором популярном дистрибутиве… Неудивительно, что игра, которой около шести лет не запуститься «влет» в среде бурно развивающегося линукса.
В попытках запуска Unreal Tournament основной проблемой было несоответствие библиотек libstdc++5 и openal.

О чем пишем.



В этой статье я подробно опишу процесс доведения до рабочего состояния Unreal Tournament 2004 под современным линуксом, имея на руках установленную windows версию и linux-патч.
Описанное руководство актуально как для 64-х битных систем, так и для 32-х битных.

Аппаратное обсепечение:
Процессор: Intel® Core(TM)2 Quad CPU Q9550 @ 2.83GHz
Видеокарта: GeForce GTX 260

Программное обеспечение:
Операционная система: Ubuntu lucid (development branch), 64-х битная
Видео-драйвер: nvidia 195.36.15 (проприетарный)

Руководство.



1. Сначала необходимо скопировать распакованную (установленную) Windows-версию во временный каталог, в котором мы будем экпериментировать. Это должна быть файловая система, поддерживающия POSIX ACL, чтобы можно было устанавливать права доступа.
В моем случае это ~/ut2004

image

2. Теперь желательно удалить exe и dll файлы, а так же установить корректные права доступа:

zerotroll@ZTDesktop:~/ut2004$ find ./ -name "*.exe" -exec rm {} \;
zerotroll@ZTDesktop:~/ut2004$ find ./ -name "*.dll" -exec rm {} \;
zerotroll@ZTDesktop:~/ut2004$ find ./ -type d -exec chmod 755 {} \;
zerotroll@ZTDesktop:~/ut2004$ find ./ -type f -exec chmod 644 {} \;


image

3. Последней версией linux-патча на момент написания руководства являлась 3369. За весь десяток попыток инсталлятор ни разу не отработал корректно до конца. Поэтому я поступил проще: просто распаковал его в каталог ~/ut2004-linuxpatch и изъял необходимые файлы.

zerotroll@ZTDesktop:/media/Documents/Downloads/Games/Linux/Unreal Tournament 2004$ ls
TOCrossfire_beta_1.93_full ut2004_3369-english.midway.dvd-3.run
TOCrossfire_beta_1.93_full.zip ut2004.megapack-english-3.run
zerotroll@ZTDesktop:/media/Documents/Downloads/Games/Linux/Unreal Tournament 2004$ ./ut2004_3369-english.midway.dvd-3.run --help
Makeself version 2.1.5
1) Getting help or info about ./ut2004_3369-english.midway.dvd-3.run :
./ut2004_3369-english.midway.dvd-3.run --help Print this message
./ut2004_3369-english.midway.dvd-3.run --info Print embedded info : title, default target directory, embedded script ...
./ut2004_3369-english.midway.dvd-3.run --lsm Print embedded lsm entry (or no LSM)
./ut2004_3369-english.midway.dvd-3.run --list Print the list of files in the archive
./ut2004_3369-english.midway.dvd-3.run --check Checks integrity of the archive

2) Running ./ut2004_3369-english.midway.dvd-3.run :
./ut2004_3369-english.midway.dvd-3.run [options] [--] [additional arguments to embedded script]
with following options (in that order)
--confirm Ask before running embedded script
--noexec Do not run embedded script
--keep Do not erase target directory after running
the embedded script
--nox11 Do not spawn an xterm
--nochown Do not give the extracted files to the current user
--target NewDirectory Extract in NewDirectory
--tar arg1 [arg2 ...] Access the contents of the archive through the tar command
-- Following arguments will be passed to the embedded script
zerotroll@ZTDesktop:/media/Documents/Downloads/Games/Linux/Unreal Tournament 2004$ ./ut2004_3369-english.midway.dvd-3.run --noexec --target ~/ut2004-linuxpatch
Creating directory /home/zerotroll/ut2004-linuxpatch
Verifying archive integrity... All good.
Uncompressing Unreal Tournament 2004 3369-english.midway.dvd Installer..............................................................................................................................................................................................................................................................
zerotroll@ZTDesktop:/media/Documents/Downloads/Games/Linux/Unreal Tournament 2004$


image

4. Следующим этапом будет копирование содержимого каталога /home/zerotroll/ut2004-linuxpatch/patch в каталог ~/ut2004/

image

5. Так как бинарные файлы поставляются и 32-х и 64-х битные, а дистрибутив я подготавливал универсальный, я создал два каталога в ~/ut2004/System: bin_amd64 и bin_x86. В каждый из них следует скопировать содержимое соответствующего архива (linux-amd64.tar.gz/System в bin_amd64 и linux-x86.tar.gz/System в bin_x86).

image

image

6. Для каждого файла из каталога bin_amd64 или bin_x86, в зависимости от платформы вашей операционной системы, необходимо создать символьную ссылку в каталоге ~/ut2004/System

image

image

7. Так как Unreal Tournament динамически слинкован с устаревшей версией библиотеки libstdc++, ее необходимо скопировать в каталог бинарников соответствующий вашей архитектуре.
deb-пакет можно скачать отсюда:



Устанавливать его не нужно, просто скопировать файл libstdc++.so.5.0.7 в каталог бинарников, соответствующего вашей архитектуре.

image

8. После этого необходимо создать символьную ссылку ~/ut2004/System/libstdc++.so.5 указывающую на скопированный выше файл.



9. Теперь можно попробовать запустить игру, чтобы автоматически создать файлы настроек в пользовательском каталоге.
Находясь в каталоге ~/ut2004/System выполните команду: ./ut2004-bin
После появления главного меню можете сразу выходить из игры.

image

10. Далее следует установить лицензионный ключ игры:

echo XXXX-XXXX-XXXX-XXXX > ~/.ut2004/System/cdkey

11. Следующим этапом является установка библиотеки openal:

sudo apt-get install libopenal1

image

12. После этого необходимо скопировать библиотеку openal в каталог бинарников, соответствующий вашей архитектуре

zerotroll@ZTDesktop:~/ut2004/System$ cp /usr/lib/libopenal.so.1.11.753 bin_amd64/openal.so

image

13. В конфигурационном файле ~/.ut2004/System/UT2004.ini следует найти секцию ALAudio.ALAudioSubsystem и установить параметр UseDefaultDriver в False.

image

14. Теперь необходимо скопировать конфигурационный файл /etc/openal/alsoft.conf в .alsoftrc и произвести следующие изменения: в поле format указать тип вашей звуковой системы, а так же в поле drivers поменять местами alsa и pulse (поставив на первое место alsa).

image

image

15. И на последок установим корректнные права доступа на бинарные файлы:

zerotroll@ZTDesktop:~/ut2004/System$ find bin_amd64/ -type f -exec chmod 644 {} \;
zerotroll@ZTDesktop:~/ut2004/System$ chmod 755 bin_amd64/ut2004-bin
zerotroll@ZTDesktop:~/ut2004/System$ chmod 755 bin_amd64/ucc-bin


Если у вас 32-х битныя система вместо каталога bin_amd64 нужно указать bin_x86.

После всех описанных выше действий вы должны получить полностью работоспособную linux-версию Unreal Tournament 2004.
Надеюсь это руководство кому-нибудь поможет.

Если вы заметили какие-либо неточности, будь добры — прокомментируйте.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.