Russian thread

А еще вопрос :slight_smile: Если я выложу логи и дамп можно определить из за чего краши идут?

Лучше, логи, сейв (оба), описание как повторить и все это на багтрекер. И все это конечно в идеале на английском, но если вдруг совсем никак можешь написать на русском и я переведу.

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

Запускаю игру… все норм… нажимаю новая игра и сразу вылетает… что делать?

Starting... 
Creating console and configuring logger: 14
The log file will be saved to "/home/rom4ik/.cache/vcmi/VCMI_Client_log.txt"
	 Initialization: 7
	 Data loading: 63
	Mod handler: 0
	 Mod filesystems: 42
Basic initialization: 112
Initialized logging system based on settings successfully.
Loading settings: 114
VCMI 0.98 (client)
Found 3 render drivers
	opengl (active)
	opengles2
	software
Created renderer opengl
	Initializing screen: 53
	Initializing video: 1
Initializing screen and sound handling: 1
		Bonus type handler: 6
		General text handler: 18
		Hero handler: 2
		Artifact handler: 0
		Creature handler: 0
		Town handler: 0
		Object handler: 0
		Object types information handler: 0
		Spell handler: 0
		Terrain view pattern handler: 0
	Initializing handlers: 28
	Initializing content handler: 87 ms
		[83374c1f] Original game files
		[d275088f] VCMI essential files
		[6fc0c625] In The Wake of Gods
		[fe89086e] WoG russian translation
		[e051da0f] Commanders
		[37094ab7] Stack Artifacts
		[f97d1e33] Stack Experience
		[9a893d8d] WoG russian translation
	Parsing mod data: 74 ms
		[SKIP] Original game files
		[SKIP] VCMI essential files
		[SKIP] In The Wake of Gods
		[SKIP] WoG russian translation
		[SKIP] Commanders
		[SKIP] Stack Artifacts
		[SKIP] Stack Experience
		[SKIP] WoG russian translation
	Loading mod data: 58ms
	Resolving identifiers: 23 ms
No templates found for 70:0
No templates found for 172:0
No templates found for 186:0
No templates found for 189:0
	Handlers post-load finalization: 12 ms
	All game content loaded in 256 ms
		Template handler: 259
Initializing VCMI_Lib: 288
Loading and transforming heroes' flags: 44
Screen handler: 48
	Main graphics: 30
Initializing game graphics: 79
Message handler: 2
Initialization of VCMI (together): 718
Blocking buttons from 1
Setting up thread calling server: 0
No templates found for 70:0
No templates found for 172:0
No templates found for 186:0
No templates found for 189:0
Waiting for server: 57
Establishing connection...
Found endpoints:
	0: 127.0.0.1:3030
Trying connection to 127.0.0.1:3030  (0)
Established connection with VCMI 0.98 (server)
	Connecting to the server: 1
	Will send info to server...
	Sending/Getting info to/from the server: 9
	Creating gamestate: 0
	Using random seed: 1447429663
Open map file: MAPS/BACK FOR REVENGE
Map loaded!
	Our checksum for the map: 3938981429
Seed after init is 1458606001 (before was 1447429663)
Initializing GameState (together): 127
Creating mapHandler: 0
	Preparing FoW, roads, rivers,borders: 23
	Making object rects: 176
Initializing mapHandler (together): 202
Player 1 will be lead by VCAI
Opening VCAI
Error: /usr/lib/x86_64-linux-gnu/vcmi/AI/libVCAI.so: undefined symbol: _ZN2fl4Rule5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS_6EngineE
Cannot open dynamic library ("/usr/lib/x86_64-linux-gnu/vcmi/AI/libVCAI.so"). Throwing...
terminate called after throwing an instance of 'std::runtime_error'
  what():  Cannot open dynamic library
read: Connection reset by peer
Ended handling connection
Аварийный останов (сделан дамп памяти)
rom4ik@night:~$ Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
Warning: an orphaned child!
write: Broken pipe

Cannot open dynamic library ("/usr/lib/x86_64-linux-gnu/vcmi/AI/libVCAI.so")
Не может открыть либу с ИИ . Без нее никак.

Error: /usr/lib/x86_64-linux-gnu/vcmi/AI/libVCAI.so: undefined symbol: _ZN2fl4Rule5parseERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS_6EngineE

Сборка кривая.

Аналогичная проблема: libVCAI.so: undefined symbol: _ZN2fl13InputVariableC1ERKSsdd

ОС Gentoo (ядро x86 с включеным PAE), пробовал собирать из портежа (есть ебилд к одной из старых редакций 0.98), после попробовал ручную сборку согласно инструкции на Wiki. Опции cmake: -DCMAKE_INSTALL_PREFIX=/home/kacnep/vcmi/trunk/install -DENABLE_LAUNCHER=OFF

Проблема абсолютно аналогична и идентична. Подозреваю, какая то из библиотек-зависимостей имеет проблему (например, необходима пересборка и перелинковка после обновления ядра), либо в коде игры закопан баг, например, где то пробрались зависимости от Ot5 за пределы кода лаунчера (а лаунчер отключен именно по причине жёстких зависимостей от Qt5).

Буду рад любой помощи. Написать в английскую ветку могу только при помощи переводчика, т.к. языком не владею, поэтому сначала пишу сюда.

edt: из логов, которые сохраняет игра в ~/.cache/vcmi/ информативным оказался только VCMI_Client.log. Вот последние записи перед крешем:

2015-Nov-19 11:52:25.478525 TRACE global [afb25b40] - 	Human player interface for player 0 being constructed
2015-Nov-19 11:52:25.478593 TRACE global [afb25b40] - 	Initializing the interface for player 0
2015-Nov-19 11:52:25.539607 TRACE network [afb25b40] - Preparing interface for player 1
2015-Nov-19 11:52:25.539717 INFO network [afb25b40] - Player 1 will be lead by VCAI
2015-Nov-19 11:52:25.539808 INFO global [afb25b40] - Opening VCAI
2015-Nov-19 11:52:25.582016 INFO global [afb25b40] - Loaded VCAI
2015-Nov-19 11:52:25.582284 TRACE ai [afb25b40] - Entering VCAI::VCAI().
2015-Nov-19 11:52:25.582322 TRACE ai [afb25b40] - Leaving VCAI::VCAI().
2015-Nov-19 11:52:25.582374 TRACE global [afb25b40] - 	Initializing the interface for player 1
2015-Nov-19 11:52:25.582418 TRACE ai [afb25b40] - Entering virtual void VCAI::init(std::shared_ptr<CCallback>).

Итак, в продолжение написанного. Долгие копания во всех направлениях привели к следующему. Игра успешно собирается во всех случаях, но

  • если fuzzylite установлен в системе (пробовались версии 5.0 и 5.1 с гитхаба) - то вылетает эта вот ошибка, которая описана в предыдущих постах мной и RoM4iK;
  • если fuzzylite из системы удалить - то игра соберёт собственный (!) fuzzylite, который приложен вместе с ней в исходниках. И уже вместе с ним будет замечательно запускаться

В исходниках игры приложен fuzzylite версии 5.0 (согласно ChangeLog`у), и он собирается в статик-либу. Всё это жутко странно, сравнивать диффом исходники я не стал.

Таким образом, решение вопроса найдено. Для гентушников я подготовил ебилд (в личку или в почту).

И теперь возник СЛЕДУЮЩИЙ ВОПРОС: в процессе ковырятельств со сборкой, я всётаки установил launcher и появилась возможность менять настройки. Первым же делом я попробовал сменить разрешение, но получил в VCMI_Client_log.txt вот такое содержание:

2015-Nov-21 03:03:46.274859 INFO global [b4541a40] - Loading settings: 207
2015-Nov-21 03:03:46.274917 INFO global [b4541a40] - VCMI 0.98f (client)
2015-Nov-21 03:03:46.568485 INFO global [b4541a40] - Found 2 render drivers
2015-Nov-21 03:03:46.568598 INFO global [b4541a40] -    opengl (active)
2015-Nov-21 03:03:46.568660 INFO global [b4541a40] -    software
2015-Nov-21 03:03:46.568724 ERROR global [b4541a40] - Selected resolution 1440x900 was not found!
2015-Nov-21 03:03:46.568974 ERROR global [b4541a40] - Falling back to 800x600
2015-Nov-21 03:03:46.715615 INFO global [b4541a40] - Created renderer opengl
2015-Nov-21 03:03:46.719877 INFO global [b4541a40] -    Initializing screen: 99
2015-Nov-21 03:03:46.720201 INFO global [b4541a40] -    Initializing video: 0
2015-Nov-21 03:03:46.729792 INFO global [b4541a40] - Initializing screen and sound handling: 1

Not implemented feature? :slight_smile:

Для поддежржки других разрешений надо ставить отдельный мод через лаунчер vcmi/extraResolutions.

На счет фузилайта “наша” версия изменений не содержит (но может наверное отличаться от какого-то конкретного оф. релиза), а так да 5.0. В дебиане fuzzylite отдельный пакет и все типа нормально работает.

Выкладывай сразу на github/gist. Кому надо найдет.

Там с этим модом только все очень хитро на линуксе потому как он является субмодом VCMI который при этом не лежит в гите даже. Лаунчер после обновления репозиториев по-идее должен предлагать обновить его, но вот если этот мод у тебя уже где-то в /usr/share/vcmi/Mods лежит то будет фейл.

Короче надо разбираться:
bugs.vcmi.eu/view.php?id=2260

PS: И да, самый простой способ проблему решить это ручками его скачать, распаковать и положить в ~/.local/share/vcmi/Mods/
download.vcmi.eu/mods/repository/vcmi.zip

Там не всё так чисто с этим ебилдом :slight_smile: надо приписать к нему awk который будет выпиливать из мейкфайла проверку на наличие в системе fuzzylite и найти способ заставить линкер вязать не на системную либу, а на ту, которая идёт с кодом. А пока там просто костыль в виде проверки на наличие в системе fuzzylite и выхода с ошибкой если он есть.

А вот за это огромное спасибо, теперь можно начать играть :slight_smile:

По поводу fuzzylite - может быть с кем нибудь из разработчиков вместе попробуем разобраться, что не так с либой, устанавливаемой в систему? Мне нужны инструкции к действию. Могу попробовать запостить в багтрекер, но с языком всё грустно.

Ну мы и есть разработчики.

Насколько я понимаю проблема прежде всего в том, что fuzzylite это не libstdc++ или SDL2 со стабильным ABI и кодом, а потому если VCMI не будеть юзать свою версию, то есть вероятность что что-то сломается. При этом из-за того за что собственно отвечает либа (нечеткая логика, решения ИИ) понять что оно сломалось не так просто. Более того оно ранее при обновлении на новую версию либы именно так и ломалось, к частью сам автор fuzzylite помог пофиксить.

Тратить время на отслеживание изменений в fuzzylite тут никто особо желанием не горит, тем более что часть разработчиков сидит на винде, а я на Ubuntu 14.04 где fuzzylite вообще нет в репозиториях.

SXX, может тогда имеет смысл в мейкфайле сделать отвязку от системного fuzzylite и собирать/линковать во всех случаях собственную?

Конечно имеет, но для этого мне придется нормально разобраться с CMake. Если пришлешь патчик с радостью его потестирую на убунте, проверю чтобы ничего не ломал и замержу.

А так конечно запишу себе в список задач по cmake на будущее, т.к у меня давно есть желание переделать там несколько мест дабы можно было депы при сборке для винды из под линукса линковать статически (но не все).

PS: В Cmake такую штуку конечно надо пилить опцией, т.к для реп того же дебиана надо системные библиотеки использовать. Но гемор по сборке и совместимости там лежит на майтейнере, а не на нас.

Боюсь, мои познания в cmake бедны до безобразия. Я обошёлся простым костылём:

trunk\vcmi\AI\CMakeLists.txt:

-find_package(Fuzzylite)
+#find_package(Fuzzylite)

Игра собралась и запустилась при любых условиях - как при наличии FL в системе, так и при её отсутствии. Просто воткнул эту радость в ебилд и пойду выложу в оверлей.

Эта идея для будущего на годы вперед (возможно уже и озвученная). Пока говорить об этом оооооочень рано, но все же было бы очень круто если б была возможность

искать игроков и коннектится прямо в игре!!

Интересно насколько сложно это реализуемо…

С этого места попродробнее:) Ничо не поянял.

я сейчас без компа, скрин вставить поэтому не могу. Имел ввиду : новая игра - многопользовательская - и там где менюшка хотсит, тср ip итд кажется вторая кнопка снизу “игра по интернету” . так вот, в идеале сделать эту кнопку активной, чтобы ее нажать и увидеть список комнат открытых игр. Играть с людьми через саму игру это круто. Без всяких хамач, геймрейнджеров итд. В идеале, если будет исключена возможность читерства еще и сделать рейтинг. Ну это конечно вообще на грани фантастики)))
т.к будут ли люди массово для игры и будет ли сама игра в играбельном состоянии.

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

Ну, собственно, это и была идея на будущее)

Это все не настолько сложно реализовать когда будет играбельно. :wink:

Народ, а имеется ли русская версия хоты для VCMI?