Pусский | English
Как собирать и запускать:
Содержание
Эта инструкция по сборке была проверена на Ubuntu 18.04. Дримленд гарантированно собирается под gcc 9.3 (или другой версией с поддержкой C++17).
Если вам удалось собрать под чем-то еще, пожалуйста, обновите это руководство.
Установите компилятор и сопутствующие программы, а также библиотеки, от которых зависит код дримленд:
sudo apt-get update
sudo apt-get install -y git g++ gcc make automake libtool bison flex gdb telnet db-util libfl-dev bzip2
sudo apt-get install -y libcrypto++-dev libjsoncpp-dev libdb5.3 libdb5.3-dev libdb5.3++ libdb5.3++-dev zlib1g zlib1g-dev libssl-dev
sudo apt-get install -y locales && locale-gen uk_UA && update-locale
На Ubuntu 18.04, возможно, понадобится установить более свежую версию компилятора и сделать ее версией по умолчанию:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-9 g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-9
sudo update-alternatives --config gcc
Склонируйте к себе либо главный репозиторий, либо свою собственную копию (fork) - о создании fork читайте ниже.
Предположим, что исходники будут лежать в /home/dreamland/dreamland_code
, тогда:
mkdir /home/dreamland && cd /home/dreamland
git clone https://github.com/dreamland-mud/dreamland_code.git
В каталоге с исходниками проинициализируйте конфигурационный скрипт и сборочные файлы, запустив
cd dreamland_code
make -f Makefile.git
В дальнейшем эту команду запускать не нужно, разве что если изменится configure.ac.
Приступаем к конфигурации и сборке. Для удобства все объектники будут в отдельном каталоге, чтобы не засорять исходники лишними файлами.
Инсталяция дримленд также будет в отдельном каталоге runtime, где на этапе конфигурации будет создано дерево каталогов и скопированы нужные файлы.
В этом руководстве предполагается, что объектники лежат в /home/dreamland/objs
, а инсталляция - в /home/dreamland/runtime
. Измените пути в примерах согласно своей конфигурации.
mkdir /home/dreamland/objs && cd /home/dreamland/objs
/home/dreamland/dreamland_code/configure --prefix=/home/dreamland/runtime
Для сборки и установки запустите команду:
make && make install
Если у вас несколько процессоров, будет выгодно распараллелить сборку, указав количество параллельных потоков, например:
make -j 4 && make install
Склонируйте репозиторий dreamland_world
, который содержит все конфигурационные файлы и некоторые зоны, а также репу dreamland_fenia_public
с полезными скриптами на фене.
cd /home/dreamland/runtime
git clone https://github.com/dreamland-mud/dreamland_world.git share/DL
git clone https://github.com/dreamland-mud/dreamland_fenia_public.git share/DL/fenia/public
Вот и всё, мир готов к запуску.
cd /home/dreamland/runtime
./bin/dreamland etc/dreamland.xml &
Логи попадают в подкаталог var/log
в каталоге runtime. Формат файла логов задается в etc/dreamland.xml
, по умолчанию имя файла - это дата и время запуска.
<logPattern>var/log/%Y%m%d-%H%M%S.log</logPattern>
Удалив эту строку из dreamland.xml, можно добиться вывода логов в stdout.
Изначально в мире есть только один персонаж, наделенный всеми полномочиями: Kadm, пароль KadmKadm. Остальных персонажей можно создать по мере необходимости. Мир доступен локально на нескольких портах:
Например: telnet localhost 9000
или #connect localhost 9000
в муд-клиенте. Вместо localhost может понадобиться указать IP-адрес виртуальной машины, на которой установлен и запущен муд-сервер.
Создайте свою собственную копию (fork) репозитория, нажав на кнопку Fork вверху страницы:
Ваша копия будет иметь путь https://github.com/yourname/dreamland_code:
Cклонируйте исходники к себе на машину, используя URL из Clone or download: например
git clone https://github.com/yourname/dreamland_code
Теперь вы можете вносить какие угодно изменения в свой fork, никак не влияя на основной репозиторий. Когда какая-то функциональность будет готова к вливанию обратно в основной репозиторий, нужно будет создать запрос (pull request), об этом ниже.
Кратко опишем команды, которые понадобятся для внесения изменений в свой fork. Все это стандартные команды git, о которых можно прочитать во многих руководствах.
git status
Просмотреть изменения подробно:
git diff
git add .
Добавить файлы выборочно:
git add path/to/file
git commit -m "Guys, I did a thing!"
Если нужно запустить встроенный редактор для создания описания (commit log):
git commit
git push
Настало время поделиться со всеми тем, над чем вы корпели так долго. На странице вашего репозитория будет описано, на сколько коммитов вы опережаете родительский репозиторий, и появится кнопка для создания запроса New pull request:
Нажав на нее, можно будет просмотреть отличия между двумя ветками. Если между вашей и родительской версией нету конфликтов, вы увидите "Able to merge". Можно создавать pull request, нажав на кнопку Create:
Периодически приходится затаскивать изменения из главного репозитория в свой, чтобы всегда работать с последней версией. Один из способов это сделать такой:
В самом начале, как только склонировали репозиторий, добавьте себе еще один remote под названием upstream, который указывает на главный репозиторий:
git remote add upstream https://github.com/dreamland-mud/dreamland_code.git
Теперь каждый раз, когда хочется обновиться из главного репозитория, можно легко стянуть изменения из главного и наложить их на свою ветку master:
git fetch upstream
git checkout master
git merge upstream/master
git push
Несколько замечаний, которые могут облегчить жизнь при разработке.
Если вы внесли изменения в каталог src:
cd /home/dreamland/objs/src
make -j 4 && make install
cd /home/dreamland/objs
make -j 4 && make install
Затем надо перезапустить dreamland (см. выше про запуск).
Пересоберите все измененные плагины:
cd /home/dreamland/objs/plug-ins/yourplugin
make -j 4 && make install
Перегрузите все измененные плагины изнутри мира, набрав:
plug reload changed