Russian thread

Ivan, а оно должно тормозить?
Герои передвигаются мучительно медленно, а ждать пока походит комп можно почти минуту (если много противников).
При этом загрузка проца всего процентов на 15.
И вот это постоянно:
Warning: Cannot open /path_to_vcmi/Mp3/CstleTown.mp3: Module format not recognized
если подкинуть mp3 с порта от loki - тоже самое. Хотя в общем-то звуки и кое-какая музыка в игре есть.

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

Скорость героя можно поменять в настройках. Или это не помогает?

mp3 - подозреваю что или sdl mixer был скомпилен без поддержки mp3 или же в системе нет нужной библиотеки (кажется smpeg)
Звуки есть ибо они все в wav, а не mp3.

Ivan, вечер/день добрый!
Раз уж Вы курируете эту ветку… то подскажите по поводу новых версий (rev 2831).
Компилится без вопросов, но при старте:
Starting…
Creating console and logfile: 0 Initialization: 10
terminate called after throwing an instance of 'std::runtime_error’
what(): Resource with name ALL/CONFIG/FILESYSTEM and type TEXT wasn’t found.
Похоже надо обновить конфиг-пак?
Но где его взять, если это так.

Скопировать из папки с исходниками. (папка trunk/config/)

Добрый день Иван!
Подскажите пожалуйста, какой переменной cmake, определить собственный rpath?
CMAKE_INSTALL_RPATH="%_libdir/%name/" почему-то не работает.

Хмм… Должно работать. В доках cmake пишут что rpath применяется только после установки (make install и тому подобные).
Проверю, если что не так - исправлю.

Ну а как вариант - поправить флаги:
cmake -DCMAKE_CXX_FLAGS="-rpath,/path/to/lib"

Спасибо, однако не помогло добавить опцию в cmake. При elf проверке в
альте, выводит следующее

Verifying ELF objects in /usr/src/tmp/vcmi-buildroot (arch=normal,fhs=normal,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
verify-elf: ERROR: ./usr/lib/vcmi/libBattleAI.so: RPATH ends with ":": /usr/src/RPM/BUILD/vcmi-0.9/lib:
verify-elf: ERROR: ./usr/lib/vcmi/libBattleAI.so: RPATH contains illegal absolute entry "/usr/src/RPM/BUILD/vcmi-0.9/lib": /usr/src/RPM/BUILD/vcmi-0.9/lib:
verify-elf: ERROR: ./usr/lib/vcmi/libBattleAI.so: RPATH contains illegal entry "/usr/src/RPM/BUILD": /usr/src/RPM/BUILD/vcmi-0.9/lib:
verify-elf: ERROR: ./usr/lib/vcmi/libvcmiERM.so: RPATH starts with ":": :::::::::::::::::::
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: tlog1
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: _ZTI10CGCreature
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: _ZN7CLogger18FILE_LOGGING_LEVELE
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: console
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: tlog4
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: _ZTI14CGHeroInstance
verify-elf: WARNING: ./usr/lib/vcmi/libvcmiERM.so: undefined symbol: tlog0

А после установки? В самом rpm или уже установленные в систему?

CMake ссылки на папки правит в момент установки - бинарники, которые валяются в папке сборки будут указывать на эту самую папку - замена на пути вида /usr/lib/vcmi делается позже.

UPD:

Проверил. CMAKE_INSTALL_RPATH не используется, но выставлен правильно:
до установки: ~/src/vcmi/build/lib
после: /usr/lib/vcmi

Посмотрю что с первым сделать можно.

Большое спасибо. Сборка производится под Altlinux. Кстати, если собирать vcmi
с дополнительными переменными:

-D CMAKE_CXX_FLAGS="%optflags" -D CMAKE_C_FLAGS="%optflags"

Которые раскрываются в:

[andy@timelock ~]$ rpm --eval %optflags
-pipe -Wall -g -O2 -march=pentium4
[andy@timelock ~]$ 

При сборке получаю следующее:

 41%] Building CXX object lib/CMakeFiles/vcmi.dir/CArtHandler.cpp.o
cd /usr/src/RPM/BUILD/vcmi-0.9/lib && /usr/bin/c++   -Dvcmi_EXPORTS -DM_DATA_DIR="/usr/local//usr/share/games/vcmi/" -DM_BIN_DIR="/usr/local//usr/bin" -DM_LIB_DIR="/usr/local//usr/lib/vcmi/" -pipe -Wall -g -O2 -march=i586 -mtune=i686 -std=c++0x -Wall -Wextra -Wpointer-arith -Wno-switch -Wno-sign-compare -Wno-unused-parameter -Wno-overloaded-virtual -O3 -DNDEBUG -fPIC -I/usr/src/RPM/BUILD/vcmi-0.9 -I/usr/src/RPM/BUILD/vcmi-0.9/lib -I/usr/include/SDL    -o CMakeFiles/vcmi.dir/CArtHandler.cpp.o -c /usr/src/RPM/BUILD/vcmi-0.9/lib/CArtHandler.cpp
virtual memory exhausted: Cannot allocate memory
make[2]: *** [Scripting/ERM/CMakeFiles/vcmiERM.dir/ERMParser.cpp.o] Error 1
make[2]: Leaving directory `/usr/src/RPM/BUILD/vcmi-0.9'
make[1]: *** [Scripting/ERM/CMakeFiles/vcmiERM.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

Ах да, совершенно забыл, собираю вчерашний svn - 2983
p.S: на -march=pentium4, не обращайте внимания, в сборочной
среде, подставляется правильный тип процессора.

Проблема с libERM - там куча шаблонной магии в итоге gcc может падает от нехватки памяти.
Как вариант - отключить компиляцию этой либы:
cmake -DDISABLE_ERM=true
Сейчас она не используется, так что проблем не будет.

Rpath вроде исправил, проверю и отправлю в svn.

А в чем предназначение этой библиотеки?

Готов протестировать :slight_smile:

Библиотека для скриптов на очень специфичном языке из WoG. Писалась как часть курсовой лидером проекта, но к самому движку не подключена.

Вперед, ревизия 2986 :slight_smile:

И забыл спросить - а зачем это надо? Если cmake в текущем виде с тем же альтлинуксом не работает то тут скорее у нас проблему исправлять надо, а не обход искать.

А почему она в игре не используется.

Уже утянул и скомпилил. Результат тот же. dumpz.org/287786/

Не понял, что именно надо? Я пытаюсь игру собрать, что бы она в Сизифе была,
может быть сам играть буду. Что касается “вас” и “нас”, у альта есть определенные требования к сборке программ. altlinux.org/ProblemWithVerifyELFAndRPATH
Поэтому, при формировании запускных файлов в сборочной среде, они могут быть скомпилированы, но не пройти проверку, прежде, чем быть упаковаными.

К движку не подключена. Хелловорлд на ней написать можно, а получить какие-либо данные из игры - не выйдет.

Понял. Думал что ошибка уже при запуске - какого-то пути в rpath не хватает.

/usr/src/RPM/BUILD/vcmi-0.9/lib
Повторюсь. Эти пути cmake должен поправить на системные при выполнении “make install”. При сборке дебов это выполняется сборочными скриптами, как дело в рпм обстоит - не знаю.
Они будут заменены на /usr/lib/vcmi или на /usr/lib64/vcmi или еще какой-то в зависимости от того куда библиотеки ставятся.

Как вариант - можно попробовать это:
-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE
В этом случае пути в RPATH будут сразу правильными, но запускать бинарники из папки, где они собраны не выйдет. В случае сборки в пакет это не нужно.

Уже лучше, но все таки, что-то лыжи не едут. Быть может я что-то делаю не так,
либо чего-то не делаю: dumpz.org/288473/

В таком случае:
-DCMAKE_INSTALL_RPATH="" - оставляем дефолтным (пустой), можно не писать
-DCMAKE_INSTALL_PREFIX="/usr" - меняем, так как дефолт это “/usr/local”
-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE - все так же меняем на TRUE

Добавил, стало получше, но была ругань на TEXTREL. altlinux.org/TextRel
Пришлось добавить в спек макрос %optflags_shared, раскрывающийся в:

[andy@timelock vcmi]$ rpm --eval %optflags_shared
-fPIC -DPIC
[andy@timelock vcmi]$

Дальше уже пошли ошибки самой упаковки в rpm, это мое уже
p.S: Иван, а можно ли сборку поправить таким образом, что бы переменные -fPIC -DPIC
уже были включены при компиляции?

Иван, а опции добавить можно? :wink:

Забыл об этом. Сегодня выложу в svn.

Есть. Ревизия 2989.

Скажите пожалуйста Иван, правильно ли я понимаю, что для того, что
бы играть в игру достаточно скопировать содержимое Data/, Maps/, MP3/
из оригинальных Героев в директорию, где ищет ресурсы vcm (в моем случае - /usr/share/games/vcmi/)?