Собираем Duke Nukem 3D на EDuke32

Duke Nukem 3D - легендарный шутер от первого лица. Игра собрала огромную армию поклонников, которые остаются верны ей и по сей день.

Википедия:
" Но третья трёхмерная часть Duke Nukem не стала очередным клоном Doom, она составила конкуренцию вышедшему в то же время технически более совершенному Quake и привнесла в игровую индустрию столько нововведений и неожиданных решений, что теперь по праву может оспорить звание прародителя многих современных шутеров. "

В основе Duke Nukem 3D лежит Build Engine, позже использованный в Blood, Nam/Napalm, Shadow Warrior, Redneck Rampage и других играх. 

Ремейков Build Engine сущесвует несколько. Лучший - кроссплатформенный EDuke32.

В этой статье изложено руководство о том, как собрать старый добрый Duke Nukem 3D на новом движке, подключить для него High-Resolution Patch (Polymer), необходимый для HD графики и т.д.

Для сборки нам потребуются исходный код EDuke32, оригинальный Duke Nukem 3D (точнее файл duke3d.grp из него), subversion-клиент и несколько установленных библиотек.
Купить Duke Nukem 3D можно здесь, скачать shareware-версию здесь.

1) Устанавливаем subversion из репозитория вашего дистрибутива.

Debian/Ubuntu:

Консоль
sudo apt-get install subversion

Mandriva/Mageia:

Консоль
su
urpmi subversion
exit

2) Устаналиваем стандартные средства разработки/сборки (gcc >= 4.3.3, make и т.п.) и необходимые dev-версии библиотек из репозитория вашего дистрибутива.

  • Стандартные средства разработки (GCC >= 4.3.3, make и т.д.)
  • Nasm (желательно)
  • LibStdc++
  • LibGL и LibGLU (желательно)
  • LibSDL >= 1.2.10 или 1.3
  • LibSDL Mixer > 1.2.6
  • LibVorbis >= 1.1.2
  • LibPNG >= 1.2.13 (желательно)
  • LibVPX >= 0.9.6 (желательно)
  • LibGTK+ >= 2.8.0 (желательно)

Debian/Ubuntu:

Консоль
sudo apt-get install build-essential nasm libgl1-mesa-dev libglu1-mesa-dev libsdl1.2-dev libsdl-mixer1.2-dev libvorbis-dev libpng12-dev libvpx-dev libgtk2.0-dev timidity freepats

Mandriva/Mageia:

Консоль
su
urpmi make gcc cmake nasm libstdc++-devel libmesagl1-devel libmesaglu1-devel libsdl-devel libSDL_mixer-devel libvorbis-devel libpng-devel libvpx-devel libgtk+2.0-devel
exit

3) Скачиваем исходный код EDuke32

Консоль
svn co https://eduke32.svn.sourceforge.net/svnroot/eduke32/polymer/eduke32

4) Переходим в каталог с EDuke32 и собираем его

Консоль
cd eduke32
make

5) Дадим права на исполнение и проверим работоспобность eduke32

Консоль
chmod +x eduke32
./eduke32

Если сделано правильно, то мы увидим вот такое окно
Снимок-EDuke32.png

6) Теперь нам нужно поместить duke3d.grp/DUKE3D.GRP из оригинального Duke Nukem 3D в папку с EDuke32.
Если у вас есть установленный Duke Nukem 3D или диск/архив с Duke Nukem 3D - просто скопируйте файл из одной папки в другую. В случае с архивом - извлеките, а потом скопируйте. Все действия можно сделать в графическом интерфейсе или через терминал аналогично приведенным ниже.
Если оригинальной полной версии Duke Nukem 3D у вас нет - скачаем shareware-версию Duke Nukem 3D и распакуем

Консоль
wget ftp://ftp.3drealms.com/share/3dduke13.zip
unzip 3dduke13.zip

Чтобы установить Duke Nukem 3D нам нужно запустить файл INSTALL.EXE. Он является испольняемым файлом DOS, так что нам придется установить для этого утилиту Dosbox.
Debian/Ubuntu:
Консоль
sudo apt-get install dosbox

Mandriva/Mageia:
Консоль
su
urpmi dosbox
exit

Запускаем INSTALL.EXE
Консоль
dosbox INSTALL.EXE

 Снимок-DOSBox 0.74, Cpu speed:     3000 cycles, Frameskip  0, Program:  INSTALL.png Снимок-DOSBox 0.74, Cpu speed:     3000 cycles, Frameskip  0, Program:  INSTALL-6.png

Снимок-DOSBox 0.74, Cpu speed:     3000 cycles, Frameskip  0, Program:  INSTALL-2.png Снимок-DOSBox 0.74, Cpu speed:     3000 cycles, Frameskip  0, Program:  INSTALL-3.png
Нажимаем Enter три раза подряд, ждем пока идет процесс установки (может занять от 5 до 10 минут даже на мощном компьютере) и четвертый раз нажимаем Enter.

Снимок-DOSBox 0.74, Cpu speed:     3000 cycles, Frameskip  0, Program:   DOSBOX.png

Вводим exit и возвращаемся к процессу сборки Duke Nukem 3D на EDuke32.

В результате мы получили папку DUKE3D (внутри папки EDuke32) с нужным нам файлом
Скопируем DUKE3D.GRP из папки DUKE3D в папку с EDuke32

Консоль
cd DUKE3D
cp DUKE3D.GRP ..
cd ..

7) Теперь самое приятное - запускаем непосредственно игру
Консоль
./eduke32

И вот он, старый добрый Duke Nukem 3D.
duke0022.jpg
В shareware-версии доступен только один эпизод.
duke0023.jpg duke0021.jpg

8) Теперь предадим игре более современный вид - подключим Polymer v5.0: High Resolution Pack.
Для начала его нужно скачать

Консоль
wget http://www.duke4.org/files/nightfright/polymer/polymer_hrp.zip

А теперь запустим Duke Nukem 3D с новым внешним видом
Консоль
./eduke32 -g polymer_hrp.zip

Внимание! Не забудьте поставить галочку в ланучере у надписи Polymer!
Снимок-EDuke32-1.png

И вот что мы увидим после запуска, если все сделано правильно.

duke0025.jpg duke0027.jpg

duke0028.jpg duke0030.jpg

9) Для более удобного запуска в дальнейшем, создадим исполняемый файл, в котором сразу будут указаны параметры для запуска.
Создаем пустой файл в папке с EDuke32. Файл назовем, например, duke (без какого-либо расширения). Создать его можно в любом текстовом редаторе.
Содержание файла:
#/bin/bash
./eduke32 -g polymer_hrp.zip
Теперь сделаем этот файл исполняемым и запустим его:

Консоль
chmod +x duke
./duke

Приятной игры!


Рейтинг записи:
12345
Оценка: 5 - Проголосовало: 1

комментариев: три

zenskull - 04-02-’14 14:14

Автор, в пункте 9, Ты не исполняемый файл создаешь, а скрипт (хотя все скрипты исполняются ядром, но дело ограничивается запуском шелла).

Общее правило такое – если запуск идет через консоль или между софтом – скрипт или бинарник. Если же речь о ярлыке, используй файл desktop.

  1. echo -e “Name=eDuke32\nKeywords=game;shooter\nCategories=Game\nType=application\nTerminal=false\nStartupNotify=true\nExec=eduke32 -g polymer_hrp.zip” > /usr/share/applications/eduke32.desktop

Програмку только нужно перенести в глобально видимый каталог:

  1. mv eduke32 mapster32 /usr/bin
  1. mkdir /usr/share/games/eduke32 && mv duke3d.grp polymer_hrp.zip /usr/share/games/eduke32/

Програмка при старте проискивает все пути по PATH поэтому проблем быть не должно.

Проблемы будут с системами, которые не хранят игры по пути /usr/share/games, например это opensuse. Тогда там нужно заменить /usr/share/games/eduke32 выше на /usr/share/eduke32.

Desktop вызывает также по path, поэтому проблем с запуском быть не должно.

xxblx (URL) - 06-02-’14 19:01

Да, спасибо за замечание по п.9. Создаю скрипт. Уже тыщу раз переписывал эту запись, видать в какой-то или ошибку допустил, или в том пункте может что-то другое было, а при правке потом проморгал.
Что касается десктоп файла, а в /usr/share/applications то зачем лезть? Есть же ~/.local/share/applications, зачем без острой нужны лезть в /usr. А исполняемый файл собранный необязательно переносить в /usr/bin, можно оставить там же где и лежит, просто абсолютный путь к нему указать, ну и к polymer, соответственно, тоже. За duke3d.grp если боязно, его расположение (путь), насколько я помню, так же параметром можно задать.

Имхо, если пользователь один, то незачем и в /usr лезть.

ggss - 26-04-’14 07:18

Не надо никакие файлы переносить ни в какие видимые каталоги. Откройте для себя команду ln.

ln -s /usr/games/eduke32 /usr/bin/eduke32

(необязательное поле)
(необязательное поле)

Запомнить личные данные ?
Внимание: Все html теги за исключением <b> and <i> будут автоматически удалены из комментария.