All Projects → dreamland-mud → dreamland_code

dreamland-mud / dreamland_code

Licence: GPL-3.0 license
DreamLand MUD: server code

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
Makefile
30231 projects
perl
6916 projects
M4
1887 projects
shell
77523 projects

Projects that are alternatives of or similar to dreamland code

dreamland world
DreamLand MUD: all configuration files, and some areas for local dev
Stars: ✭ 16 (-55.56%)
Mutual labels:  mud, mud-server, dreamland-mud
mud-server
A MUD server written in Java w/basic OLC and a channel-based chat system.
Stars: ✭ 36 (+0%)
Mutual labels:  mud, mud-server, mud-engine
dumserver
A modern MU* engine re-imagined, actively developed and properly tracked.
Stars: ✭ 54 (+50%)
Mutual labels:  mud, mud-server, mud-engine
DikuMUD2
DikuMUD II from 1997
Stars: ✭ 24 (-33.33%)
Mutual labels:  mud, mud-server, mud-engine
mudjs
WebSocket MUD client for DreamLand
Stars: ✭ 13 (-63.89%)
Mutual labels:  mud, dreamland-mud
guildmud
A SocketMUD-based Multi-User Dungeon built and managed by the members of The MUD Coders Guild.
Stars: ✭ 26 (-27.78%)
Mutual labels:  mud, mud-server
simplemud
SimpleMUD from MUD Game Programming book ported to NodeJS
Stars: ✭ 36 (+0%)
Mutual labels:  mud, mud-server
toaststunt
A fork of the LambdaMOO-Stunt server with features found useful during the development of Miriani and ChatMUD.
Stars: ✭ 31 (-13.89%)
Mutual labels:  mud, mud-server
room.js
A node.js MOO server
Stars: ✭ 75 (+108.33%)
Mutual labels:  mud, mud-server
cwmud
An extendable, modular MUD server.
Stars: ✭ 15 (-58.33%)
Mutual labels:  mud, mud-server
shadowgate
Mirror of ShadowGate code
Stars: ✭ 12 (-66.67%)
Mutual labels:  mud, mud-server
MoD
MUD on Discord, a MUD framework Bot for Discord
Stars: ✭ 20 (-44.44%)
Mutual labels:  mud, mud-server
MudDungeonJS
A mud engine using telnet and Web sockets for web built with NodeJs
Stars: ✭ 21 (-41.67%)
Mutual labels:  mud
sdxxz
傻屌修仙传
Stars: ✭ 18 (-50%)
Mutual labels:  mud
svof
Svof is an AI system for Achaea, an online MUD. It has advanced and adaptable curing capabilities, defence raising, and addons.
Stars: ✭ 52 (+44.44%)
Mutual labels:  mud
Lua-MUD
A MUD framework written in lua
Stars: ✭ 25 (-30.56%)
Mutual labels:  mud
Dark-Ages-Private-Server
A Dark Ages Private Server Project
Stars: ✭ 29 (-19.44%)
Mutual labels:  mud-server
GmodDotNet
Cross-platform .NET Module/Plugin platform for Garry's Mod powered by .NET.
Stars: ✭ 62 (+72.22%)
Mutual labels:  plugin-system
pycat
MUD client in Python
Stars: ✭ 22 (-38.89%)
Mutual labels:  mud
dwarlixir
A dwarf-fortress clone / MUD / side project in Elixir
Stars: ✭ 46 (+27.78%)
Mutual labels:  mud

DreamLand MUD, руководство разработчика

Pусский | English


Stand With Ukraine DreamLand MUD version License Build Status Discord chat

Как собирать и запускать:

  • Из-под Ubuntu 18.04, 20.04 (реальная или виртуальная машина): пользуйтесь инструкцией ниже.
  • Из-под Windows 10: следуя этой инструкции для Windows Subsystem for Linux и редактора VS Code
  • Из-под окружения Docker: собрать готовый к использованию Docker контейнер, как описано в Readme к проекту dreamland_docker.
  • Из-под онлайн сред разработки в браузере: Goorm Online IDE или же https://gitpod.io.

Содержание

Запуск локальной версии

Эта инструкция по сборке была проверена на 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 ru_RU.KOI8-R && 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_world, который содержит все конфигурационные файлы и некоторые зоны. Создайте на него ссылку из каталога runtime.

cd /home/dreamland
git clone https://github.com/dreamland-mud/dreamland_world.git
ln -s /home/dreamland/dreamland_world /home/dreamland/runtime/share/DL

Вот и всё, мир готов к запуску.

Запуск сервера

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. Остальных персонажей можно создать по мере необходимости. Мир доступен локально на нескольких портах:

  • 9001 - "задняя дверь" для быстрого доступа, минуя архивариуса. При входе через этот порт укажите в одной строке кодировку, логин и пароль, например: 0 Kadm KadmKadm.
  • 9000 - обычный вход, тут же можно создать нового персонажа.
  • 1234 - порт web-socket. Можете скачать клиент mudjs, установить его согласно инструкции и играть из браузера.

Например: telnet localhost 9000 или #connect localhost 9000 в муд-клиенте. Вместо localhost может понадобиться указать IP-адрес виртуальной машины, на которой установлен и запущен муд-сервер.


Работа с репозиторием

Fork репозитория

Создайте свою собственную копию (fork) репозитория, нажав на кнопку Fork вверху страницы: fork example

Ваша копия будет иметь путь https://github.com/yourname/dreamland_code: fork example

Cклонируйте исходники к себе на машину, используя URL из Clone or download: clone example например

git clone https://github.com/yourname/dreamland_code

Внесение изменений

Теперь вы можете вносить какие угодно изменения в свой fork, никак не влияя на основной репозиторий. Когда какая-то функциональность будет готова к вливанию обратно в основной репозиторий, нужно будет создать запрос (pull request), об этом ниже.

Кратко опишем команды, которые понадобятся для внесения изменений в свой fork. Все это стандартные команды git, о которых можно прочитать во многих руководствах.

  1. Проверить, какие файлы изменились или добавились в локальной версии:
git status

Просмотреть изменения подробно:

git diff
  1. Добавить все измененные файлы в будущий commit:
git add .

Добавить файлы выборочно:

git add path/to/file
  1. Создать commit и описать изменение. Описания рекомендуется делать понятные для тех, кто будет читать их через полгода.
git commit -m "Guys, I did a thing!"

Если нужно запустить встроенный редактор для создания описания (commit log):

git commit
  1. Выпихнуть изменения на github:
git push

Pull requests

Настало время поделиться со всеми тем, над чем вы корпели так долго. На странице вашего репозитория будет описано, на сколько коммитов вы опережаете родительский репозиторий, и появится кнопка для создания запроса New pull request: pull example

Нажав на нее, можно будет просмотреть отличия между двумя ветками. Если между вашей и родительской версией нету конфликтов, вы увидите "Able to merge". Можно создавать pull request, нажав на кнопку Create: pull example

Синхронизация с родительским репозиторием

Периодически приходится затаскивать изменения из главного репозитория в свой, чтобы всегда работать с последней версией. Один из способов это сделать такой:

В самом начале, как только склонировали репозиторий, добавьте себе еще один 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:

  • если поменялась только реализация (файлы с расширением .cpp), достаточно пересобрать только каталог 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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].