О локалке Граней Мира

Вначале краткий отчет о моих попытках сделать виндовые бинарники (“локалки”) Дримленда и Граней мира: не получилось.

Я консультировался с Руффиной и другими программистами этих миров, они ничем помочь мне не смогли. Большинство мад-серверов базируется на серверах с ОС Linux, чаще всего Ubuntu, и разработка идет под них, под их компиляторы, библиотеки, особенности сетевой архитектуры. Совместимость типа “этот код компилируется везде” бывает очень редко. А в случае Дрима и Граней у их команды есть свой метод, они берут обычный мад и оборачивают вокруг него обертку из своего кода со скриптовым языком Fenia. И вот эта обертка, написанная на С++ очень чувствительна к версии компилятора и у меня на Винде в cygwin не собирается или собирается с проблемами, не позволяющими маду запускаться. Кстати, метод Дрима чем-то похож на то, как из обычного (ванильного) сервера Майнкрафт делается сервер Forge или Fabric, только в случае Майнкрафта обертка делается не на уровне исходника, а на уровне бинарного кода, потому что Майн – закрытое проприетарное программное обеспечение. И если вернуться к мадам, еще существует встраивание в мад-сервер скриптового языка lua, тоже вроде по похожей схеме, как и в Дриме. Лично я как смиренный программист восьмидесятых скриптовые языки не люблю и у меня мад-сервера монолитные, и многие возможности я вношу на уровне кода ядра, то есть они hardcoded. Мне так проще, но с точки зрения правильного подхода к архитектуре это не совсем правильно.

kbtin

Случайно нашел новый мад-клиент, форк тинтина

https://github.com/kilobyte/kbtin

Он немного отличается оформлением интерфейса и языком скриптов.
Под последней Ubuntu собирается легко и сразу.

Я кстати поучаствовал в его развитии, вначале не смог собрать, написал автору issue, он откорректировал документацию (там был не упомянут один из необходимых пакетов).

UPDATE 17-May-2021. В cygwin тоже собирается сразу.

UPDATE 18-May-2021. В Андроиде собирается с небольшой очевидной модификацией автоконфигурационного скрипта:

https://github.com/prool/kbtin

UPDATE 2-Mar-2023 Мои сборки этого клиента для Windows:
http://files.mud.kharkov.org/KBtin/

Бег по граблям

Я люблю бегать по граблям, в частности, натыкаясь на какую-нибудь ошибку, порой исправляю ее и забываю, как именно я ее исправил и спустя несколько месяцев (или лет) опять натыкаюсь на нее и опять начинаю думать, как же ее исправлять.

Так вот, для памяти запишу: код Виртустан-мада и Старого Зеркала плохо собирается на 64-битных системах, например в cygwin, флаг -m32 и соответствующие библиотеки помогают не всегда. В частности, под cygwin/64 он либо не собирается либо собирается и сразу падает в корку. Ну и чорт с ним, потому как все нормально собирается на 32-разрядном Цигвине, а 32-разрядные exe нормально работают в 64-разрядной Винде.

А на 64-разрядной Ubuntu 18.04.3 мой Виртустан собрался и нормально работает. И Старое Зеркало. (А Былины, как и Ноыое Зеркало изначально заточены именно под Ubuntu x86_64)

Вышел tintin++ 2.01.92

https://github.com/scandum/tintin

В Убунте собрался с пол-пинка. Ошибка с кодировкой KOI2UTF по прежнему есть (эта кодировка работает не для всех мадов, для Виртустана и Зеркала не работает, а, например, для DF2 работает).

В Прультине для того же режима есть моя опция #proolcoder

О Винде

Я только сейчас сообразил: Виндовые сборки по сути уже не нужны. В Windows 10 входит вполне работающая Убунта в виде подсистемы. Не далее как вчера коллега Пацифист почти без проблем собрал там QiuckMUD+lua

Впрочем, я думаю, некоторые консерваторы сидят на Windows 7 или XP и не хотят переходить на 10-ю версию…

Прагматические замечания по сборке Былин в Debian 8 i386

sudo apt-get install libz-dev cmake g++ clang python3.4-dev libboost-python-dev libboost-system-dev git libgtest-dev

Также после установки Boost’а необходимо указать переменную окружения BOOST_ROOT, где находится сама библиотека Boost (заголовочные файлы), а также библиотеки python3, system и filesystem.

Или можно указать переменную BOOST_LIBRARYDIR, указывающую на путь, куда инсталлированы библиотеки пакета BOOST после компиляции его исходников, которые можно взять, например, с официального сайта BOOST (чаще всего BOOST_LIBRARYDIR=/usr/local/lib)

gtest тоже нужно компилировать и устанавливать в CMakefile.txt переменную GTEST_LIB

Отчет о происходящем

Что я сегодня делал: собирал Былины, которые переехали на новое место – на свой сайт с установленным там ПО gitlab.

На своем ноутбуке с Ubuntu 16.10 x86_64 всё собралось (хотя пришлось создавать на их сайте issue, так как я не знал, что такое GTEST)

А на VDS с Centos 6.8 i386 не собралось. Начался какой-то непонятный ад-и-израиль с параметрами -std=gnu++14 и ошибками в стандартных библиотеках. Учитывая, что я на VDS много чего обновлял и ставил, и не всегда стандартно (например, свежий boost), возможно, в проблемах виноват я сам. Проверить можно, повторив попытку сборки на чистой Centos 6. Кстати, оказалось, начиная с 7 версии Centos, уже нет официального 32-разрядного дистрибутива. Только x64, только хардкор! (Я нашел 32-битную сборку седьмого Центоса, но от независимой команды красноглазиков). А вот мой любимый Debian продолжает быть и в 32 и в 64-разрядных вариантах (и еще куче более экзотических платформ типа arm)

Update 21.11.2017

Потом Былины вроде как вернулись на Bitbucket в новый репозиторий: https://bitbucket.org/bylins/mud.mercurial

Compile Virtustan MUD at Ubuntu 15.10 64bit

sudo apt-get install gcc-4.9-multilib g++-4.9-multilib

sudo apt-get install gcc-multilib g++-multilib

sudo apt-get install libpcap-dev

всё равно не получается!!!!!!!!!!!!!!!!!!!!!

ну и хрен с ним. в 32 разрядных системах всё собирается с полпинка