Trunk discussion / complains


gcc 4.7? It should work - we usually bump requirements only after most of distros get a newer version. If there are some compile issues with 4.7 then they must be fixed.


emplace is supported from gcc 4.8. At gcc 4.7 it causes error:

  6%] Building CXX object lib/CMakeFiles/vcmi.dir/rmg/CRmgTemplateZone.cpp.o
/mnt/anythings/game.src/vcmi/lib/rmg/CRmgTemplateZone.cpp: In member function ‘bool CRmgTemplateZone::findPlaceForObject(CMapGenerator*, CGObjectInstance*, si32, int3&)’:
/mnt/anythings/game.src/vcmi/lib/rmg/CRmgTemplateZone.cpp:465:7: warning: unused variable ‘ow’ -Wunused-variable]
/mnt/anythings/game.src/vcmi/lib/rmg/CRmgTemplateZone.cpp:466:7: warning: unused variable ‘oh’ -Wunused-variable]
/mnt/anythings/game.src/vcmi/lib/rmg/CRmgTemplateZone.cpp: In member function ‘void CRmgTemplateZone::placeObject(CMapGenerator*, CGObjectInstance*, const int3&)’:
/mnt/anythings/game.src/vcmi/lib/rmg/CRmgTemplateZone.cpp:518:10: error: ‘class std::set<int3>’ has no member named ‘emplace’
/mnt/anythings/game.src/vcmi/lib/rmg/CRmgTemplateZone.cpp:519:9: error: ‘class std::set<int3>’ has no member named ‘emplace’
make[2]: *** [lib/CMakeFiles/vcmi.dir/rmg/CRmgTemplateZone.cpp.o] Error 1
make[1]: *** [lib/CMakeFiles/vcmi.dir/all] Error 2
make: *** [all] Error 2


gcc 4.7 should be okay now. If something goes wrong with 4.7 again - notify me in some way (like post here) or submit pull request with fix.

I also removed (already broken) support for 4.6 so now VCMI requires at least gcc 4.7.2 (4.7.0 and 4.7.1 are not usable due to compiler bug).


I just tested quickly with vcmisilmaril all scenarios of all campaigns, There are no problems with map loading nor placeholder replacement. So all campaigns should be playable. Besides that there are still a few campaign related smaller issues.


Can I close all “ancient” resolved mantis tickets?

I would like to implement transition effects, see:
Should I wait for SDL2 or can it be implemented currently? I would begin with fade out effect when picking resources, etc…


I guess so… Or you can just set up filters on your side to hide them by default.

I suggest either waiting for SDL2 or using AVS branch as base - SDL2 had some changes here like rename of SDL_Color::unused (which we use for alpha) to SDL_Color::a.

Last time I checked OpenGL support was not functional - you had to use software mode (in settings set video/driver to “software” to enable it). Everything else should work.


I will wait for SDL2.


So I closed resolved mantis tickets older than 1. June 2013. All resolved mantis tickets targeting release 0.95 and 0.94 can be checked if they’re really fixed/implemented. This would be a task for our testers, is there anyone willing to do this?


I think I can do this, but where shall I post results, in related mantis tickets or at this forum?
I also think that I’ll have to skip such tickets in which are included saves older than vcmi 0.95b because I won’t be able to load them. What do You think about this?


Very good=)Set tested mantis tickets to closed if they’re fine, reopen or comment if something isn’t OK. Close tickets with saves included older than 0.95b if the problem can’t easily be re-checked (without save). That should be OK IMO:)


Ok, I’m giving up for now. I’ve checked almost a half of selected tickets. I’ll probably continue tomorrow.

Edit: Ok, it seems that I’ve closed all resolved tickets targeting 0.94 and 0.95 release. I also skipped 12 tickets, because they were recently created, so I couldn’t test them anyway. And in the end I’ve found few tickets which should be rechecked.


Thanks a lot! This was very fast. Perhaps Warmonger (2 tickets) and Ivan (2 tickets) can check these tickets.


Still not managed to find time and work on terrains battlefields moving to terrain configuration.
But i hope this will change - i plan to go to vacation, hope i can manage to work on it this/next week.

Also i’d like to add “cost” section to hero class JSON structure to make heroes with differentiated price.
For example gods can be made (heroes with exceptional abilities) with high price. Or mercenary heroes that already has relativily big army on start.
What do you think of it?


I don’t think that hero recruit cost should be connected to hero class. Why it should depend on class and not on specific hero? Why it should not depend on hero level/skills? Or perhaps it should depend on recruitment location?
IMO we should leave hero cost as it for now. At most - move it to defines in defaultMods.json or whatever its name.

I’m OK with un-hardcoding things that have clear dependencies (e.g. produced resources are clearly property of town building) but othervice - it is better to leave it to scripting.


I think you should stop stuffing imbalanced elements in the game. The idea itself is interesting, but how it will work?
What if player chooses super-hero as atarting hero or picks it from level 1 prison? Anyway, we already can create new heroes with unusual stats and mark them as “special”. Eveyrthing else can be part of custom mods with scripts.
Besides, I don’t remember anybody else proposing or discussing this feature. For now, better focus on battlefields /terrains as there is a demand for them.


If hero is of “neutral” faction, he will not get it from start.

What will be so bad about it? Prisons are useless 99% of time. At least they will give chance to get army.

No means no, I will not do this feature than.


Had this crash today with the latest trunk version:

Our heroes don't move anymore, exhaustive decomposition failed
Striving to goal of type BUILD
Considering goal BUILD
Trying to realize BUILD (value 1.000)
Failed to realize subgoal of type BUILD (greater goal type was BUILD), I will stop.
The error message was: BUILD has been realized as much as possible.
Looking into Жеддит, MP=1630
Moving hero Жеддит to tile 9 39 0
Adding query 475 - Blocking dialog query with 0 components - {Опора глаз}

Здесь обитают Бехолдеры. Хотите ли вы взять их к себе на службу?. Total queries count: 1
[New Thread 0x7fffda7fb700 (LWP 7093)]
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::lock_error> >'
  what():  boost: mutex lock failed in pthread_mutex_lock: Invalid argument

Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffda7fb700 (LWP 7093)]
0x00007ffff3cbdf79 in __GI_raise ([email protected]=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56	../nptl/sysdeps/unix/sysv/linux/raise.c: Нет такого файла или каталога.
(gdb) bt
#0  0x00007ffff3cbdf79 in __GI_raise ([email protected]=6)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007ffff3cc1388 in __GI_abort () at abort.c:89
#2  0x00007ffff45c96b5 in __gnu_cxx::__verbose_terminate_handler() ()
   from /usr/lib/x86_64-linux-gnu/
#3  0x00007ffff45c7836 in ?? () from /usr/lib/x86_64-linux-gnu/
#4  0x00007ffff45c68f9 in ?? () from /usr/lib/x86_64-linux-gnu/
#5  0x00007ffff45c74aa in __gxx_personality_v0 ()
   from /usr/lib/x86_64-linux-gnu/
#6  0x00007ffff405cff3 in ?? () from /lib/x86_64-linux-gnu/
#7  0x00007ffff405d517 in _Unwind_Resume ()
   from /lib/x86_64-linux-gnu/
#8  0x00007fffe48bdb65 in ~thread_exception (this=0x7fffda7fac00, 
    __in_chrg=<optimized out>) at /usr/include/boost/thread/exceptions.hpp:60
#9  ~lock_error (this=0x7fffda7fac00, __in_chrg=<optimized out>)
    at /usr/include/boost/thread/exceptions.hpp:117
#10 boost::unique_lock<boost::mutex>::lock ([email protected]=0x7fffda7fad50)
    at /usr/include/boost/thread/lock_types.hpp:339
#11 0x00007fffe48be15f in ~lock_on_exit (this=<synthetic pointer>, 
    __in_chrg=<optimized out>)
    at /usr/include/boost/thread/pthread/condition_variable.hpp:52
#12 boost::condition_variable::wait (this=0x7fffdbffd9d8, m=...)
    at /usr/include/boost/thread/pthread/condition_variable.hpp:74
---Type <return> to continue, or q <return> to quit---
#13 0x00007fffe488d88b in wait (this=0x7fffdbffd9b0)
    at /usr/include/boost/thread/barrier.hpp:52
#14 operator() (__closure=0x7fffca9992b8)
    at /build/buildd/vcmi-0.95+svn3616~ubuntu14.04.1/AI/VCAI/VCAI.cpp:2435
#15 boost::detail::thread_data<VCAI::requestActionASAP(std::function<void()>)::__lambda29>::run(void) (this=0x7fffca999100)
    at /usr/include/boost/thread/detail/thread.hpp:117
#16 0x00007ffff6a8ca4a in ?? ()
   from /usr/lib/x86_64-linux-gnu/
#17 0x00007ffff686b182 in start_thread (arg=0x7fffda7fb700)
    at pthread_create.c:312
#18 0x00007ffff3d8230d in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111

As you can see it was during AI’s turn, don’t know when it happens, but I saw this boost::exception twice or more before.


Found bug on 0.95c today.
Made several artifacts with


But in game artifact was allowed to move to stack only (game not allowed to give it to corresponding slot to hero or to commander).
Then I removed “CREATURE” from list:


And artifacts still didn’t passed to hero, but worked on commander

Only when I left hero only


artifacts were passed to hero and worked.


Of cause 0.95b


Just saw new commit … 122a18006e

What on earth is the purpose of “routines for loading random objects from Json”? :open_mouth:

Otherwise, good job!