Russian thread

Тема для тех кто с английским знаком не особо. Если есть какие-либо вопросы по поводу vcmi - можно задавать здесь, постараюсь ответить.
Русскоязычных здесь не особо много, так что если есть возможность - то лучше спрашивать в английской части форума.

Вкратце:
VCMI - проект по переписыванию движка игры Герои магии и меча 3. Начинался как переписывание мода Во имя богов, сейчас vcmi может быть также и на Дыхание смерти (и различные релизы по типу платины), все фичи вога опциональны.

Подробнее почитать о vcmi на русском можно на этом подфоруме: forum.df2.ru/index.php?showforum=150

Здравствуйте !
Долго бился чтобы заставить сие чудо работать из репозитариев не пошел. скачал архив (Именно РУССКУю версию) по ссылке с n8xx.com допилил - завелись единственное что пугает это косяки с разрешением и надпись в консоли при старте Not entire config/settings.txt parsed! куда положить файлик чтобы он его нашел???

Насчет репозитариев - не знаю, спрашивайте у того, кто выложил туда. Мы никак с ними не связаны.

Опять же - кто и что куда выложил - не знаю, русская версия или нет - должно быть без разницы.
Косяки с разрешением - да, есть проблемы с разрешением 800х480 (я так понял что речь идет про порт на Maemo). Пока есть более серьезные проблемы чем запуск на планшетах или смартах. Ждите пока найдется желающий их поправить.

Похоже ругается на пустую строку в конце файла. На будущее уберу, но не должно ни на что влиять.

Ошибка при компиляции client.
1>D:\Program Files\boost\boost_1_44\boost/interprocess/detail/move.hpp(342): error C2440: return: невозможно преобразовать “boost::interprocess::mapped_region” в "boost::interprocess::mapped_region &&"
1> Нельзя привязать левостороннее значение к ссылке на правостороннее значение
1> D:\Program Files\boost\boost_1_44\boost/interprocess/mapped_region.hpp(159): см. ссылку на создание экземпляров функции шаблон при компиляции "boost::interprocess::mapped_region &&boost::interprocess::moveboost::interprocess::mapped_region&(T)"
1> with
1>
1> T=boost::interprocess::mapped_region &
1> ]

(vc express 2010, boost 1_44)

проблема решилась добавлением #define BOOST_NO_RVALUE_REFERENCES в client.cpp и sdafx.h сервера

2 Ivan
Приветствую. Нет ли планов новый билд выложить не только в исходных кодах, но и в виде deb-пакета для Linux?
К своему стыду, у меня так и не получилось собрать VCMI под Ubuntu.

Пока только в далеких планах. Сам я с дебами не разбирался, а желающих этим занятся нет.
А что не так со сборкой?

Если что - все инструкции в файле readme.LINUX (vcmi.svn.sourceforge.net/svnroo … ADME.linux)
Для сборки сейчас нужен gcc-4.5, который есть только начиная с Ubuntu 11.04.

Хмм… а может попробую с дебами разобраться. Но ничего не обещаю пока что.

Ivan, привет.
Пытался собрать .deb пакет .88 версии

test -z "/usr/lib/vcmi/AI" || /bin/mkdir -p "/media/sd/build/vcmi/debian/vcmi//usr/lib/vcmi/AI"
 /bin/bash ../../libtool   --mode=install /usr/bin/install -c   libStupidAI.la '/media/sd/build/vcmi/debian/vcmi//usr/lib/vcmi/AI'
libtool: install: error: cannot install `libStupidAI.la' to a directory not ending in /usr/local/lib/vcmi/AI
make[5]: *** [install-vcmiaiLTLIBRARIES] Error 1
make[5]: Leaving directory `/media/sd/build/vcmi/AI/StupidAI'

Нет идей в чем может быть причина?

Привет. Такое может возникнуть если запустить ./configure несколько раз с разными параметрами (вполне может быть - /usr/local/… это дефолтный путь)
В этом случае исправить можно через “make distclean” или стащив исходники заново (например из svn) и пересобрать сначала.

Если не исправится, то вопрос - как именно этот deb собираете?
Уже собранные .deb-ы есть тут: wiki.vcmi.eu/index.php?title=Ins … n_on_Linux

Ivan:
Те дебы для x86, а мы под ARMv7 собираем

Да, distclean не пробовал, ибо долго, как верно подметил kottt мы под арм собираем.
Но сегодня запустил чистую сборку с транка, посмотрим.
Но проблема основная вырисовывается в другом:
При загрузке карты клиент зависает. Попозже постараюсь выложить strace и дебаг.
собираем просто: dpkg-buildpackage и вперед. (:

Собрал из транка, работает. (:

Установил Героев 3 “Дыхание смерти” под wine (путь установки указал на английском: C:\Games\SoD). Затем установил WoG. После этого скомпилировал из исходников VCMI (система OpenSUSE последняя x64). Запускал vcmiclint нормально. Попробовал изменить разрешение на своё 1280х1024 и после перезапуска дальше главного меню не ухожу: Failed to find file AdRollvr1280.pcx
Никак не могу исправить разрешение. Помогите, кто знает, где можно вручную прописать нужное? Или где взять этот AdRollvr1280.pcx. Перекомпиляция и перезапись файлов в папке /usr/local/share/vcmi не помогает :frowning:

Надо распаковать этот архив в /usr/local/share/vcmi (кроме папки config)
download.vcmi.eu/vcmi-data_0.89.tar.gz

Ivan, спасибо! Попробую :slight_smile: Только что-то не нашёл тут раньше на сайте и форуме этого…

Привет!
Долго заставлял сие чудо компилиться под slackware… свершилось.
Запускается нормально, но при попытке запустить кампанию - виснит наглухо (после выбора бонуса и нажатия конопки “begin”).
То есть не вываливается, ошибок нет, просто висит, пока не кильнешь).
Проявляется на одиночном сценарии. В кампании же вываливается с: "vcmiclient: CLodHandler.cpp:26: std::string readString(const ui8*, int&): Assertion `len >= 0 && len <= 500000’ failed."
Использую исходники с trunk.
Так же (не помню когда) ругается на отсутствие NEUTRAL.H3C
Что может быть?

p.s. boost-1.49

Чего так долго? Вроде как привели в порядок ридми или что-то все еще не так?

Кампании еще недоделаны, багов там больше некуда - лучше сценарии запускать пока что.
Но падать при старте ни одни ни вторые не должны.

Что не так - не уверен. Возможно в процессах остался зависший сервер - в этом случае нужно убить vcmiserver и только потом запускать клиент (vcmiclient который)
Если в сценариях все равно зависает:

  • проверить есть ли в процессах vcmiserver (должен запуститься вместе со стартом сценария)
  • если есть возможность, то подключиться с gdb и снять стек с клиента и сервера:
$ gdb --pid={process id}
(gdb) set logging on
(gdb) thread apply all bt full
(gdb) quit

Вывод (gdb.txt) выложить сюда вместе с логами (текстовики в папке ~/.vcmi)

NEUTRAL.H3C это кампания Spoils of War / Трофеи Войны - тут похоже опечатка у нас. Должно быть NEUTRAL1.H3C, исправлю

Долго, в основном из за того что моя система давно не видела апгрейда.
И либы старые, и компилятор и coreutils. Сначала конфигуратор никак не хотетл видеть libSDL и boost, потом вылетал при начале компиляции… но это такое, старая система, работает на машине уже лет 6 или 7… последний апгрейд года 2 назад был, так что простительно :wink:

Сейчас все компилится без проблем, за исключением ворнингов. И есть еще один момент.
Вроде как при сборке ERMParser.lo (точно не помню, но что-то из ERM) - машина начинала уходить в трэшинг. То есть активно юзать своп. И я просто через 10 минут этого убийственного процесса вырубал компилятор. Видать 1 гига памяти для компиляции маловато. Добавил еще гиг оперативы и все собралось без проблем, при этом памяти было занято 1,2-1,3 гига.

Ага, благодарю за совет!
Как раз сервер то и не стартует. В процессах ничего. Причем в логах даже нет VCMI_Server_log.txt
Лог сервера появляется только после запуска его вручную. Но он тут же благополучно падает:
Port 3030 will be used.
Loading .lod files: 90
General text handler: 40
…skipped…
Spell handler: 0
CVCMIServer created!
Function not implemented
terminate called after throwing an instance of 'boost::interprocess::interprocess_exception’
what(): Function not implemented

gdb мне был без надобности так что в системе его нет.
Если свет не прольется, буду ставить.
Может буст выделывается?

Свопинг при компиляции ERM - возможно. Уж слишком активно там используется всякая магия буста. Наверно стоит как-нибудь сделать его компиляцию опциональной - в игре это пока нигде не используется.

А падает похоже и вправду буст.
Ругается на boost::interprocess. Гуглением нашел такую же ошибку:
slackwiki.com/ATI_Graphics#I … the_Driver
Стоит попробовать /etc/fstab поправить.

Ivan благодарю!
Включил tmpfs в fstab. Клиент и сервер стартуют, все работает…
Да… еще на счет свопинга в ERM - если конфигурить через cmake а потом собирать - то в трэшинг машина не уходит.