Trunk discussion / complains


Hello, I’ve recently tried to compile VCMI trunk and I have some questions concerning it.
I followed … Windows%29 to make sure everything goes smoothly (using Visual2013, building for x64, manually compiled boost).
First of all, after opening the solution, VS asks to upgrade all projects to v120 – should I do it locally or keep them as they are in trunk? This doesn’t seem to affect compilation, so I guess v120 is okay.
I had to change some minor details during compilation, and I’m not sure these are just mistakes in newly added code or some issues in my config (CEmptyAI.cpp -> wrong include path CRandomGenerator.h should be …/…/lib/CRandomGenerator.h and in CMT.cpp #if DISABLE_VIDEO should be #ifdef DISABLE_VIDEO).

The bigger problem is that I had to add /bigobj and increase /Zm compilation flags for many projects. Can it be an issue on my system?

After these changes the solution compiles and runs correctly as long as I disable ERM project (this one caused more problems and I didn’t really dive into them for now).
I hope I’ll be able to contribute something to the project. Its size looks quite intimidating though. :wink:


Thanks for the info, I fixed the include header bug. Clang silently ignores this, but MSVC triggers an error.

Project files are saved with VS11 format, Visual Studio 2012 is deprecated, but still supported. Perhaps we reorganize root source folder, so we can support several vs project files.

IMO this is not an issue on your side, I had to add those flags to my projects as well. Perhaps someone should commit those changes to git?


I updated coding guidelines and added that subpoint:

It’s nothing special, but I recognize this from time to time, that we’re using abbrevations a little bit too often.


Yes. It simply means that VS will use the Visual Studio 2013 (v120) compiler.

Not an issue.
What values are needed for /Zm and whether the /bigobj is needed depends on the compiler and libraries version. I guess we should set this in the global property sheet for a value high enough to make it work for everyone.

There’ no need. Visual Studio project files are backwards/forwards compatible since the 2010 version, format is the same. It’s just a matter of selecting appropriate compiler version in the properties. The “upgrade” simply sets the toolset to the current VS version.

[Even though I’m the one to blame for that in many places.]


Now Gelu doesn’t seem to upgrade elves to Snipers, see


If you try to go through gates and a message appears “you can’t go here, talk with blah-blah first” and you try to reach something that is situated after these gates, a game will freeze but it won’t crash.


If a creature wants to join your army and you don’t have empty slots, a new window appears to help you change this or that creature. I wanted to upgrade elves to Snipers (Gelu’s ability) but it doesn’t seem to work. I can even see how much money I need to do this operation but when I press OK nothing happens.


KroArtem, we have bugtracker for minor issues.


yup, but:

  1. sometimes I’m a bit lazy to submit a ticket
  2. sometimes I write a big comment for an existing ticket, press “submit” and mantis throws an error, something like “seems like you sent your comment twice!” Then all written text disappears. It’s annoying. It demotivates. It makes me avoid using mantis.
  3. Sometimes those bugs are just false positives. In case somebody here writes “yes, I’ve got the same problem!” then it’s time to submit a ticket.


Something strange happened today:

I’ve reloaded this game and had the following during enemy’s turn:


Can anybody try to launch this save? It freezes my machine and I can’t even go to tty1 or to reload the system. (1.25 MB)


I can’t load save - > error
VCMI_Server_log.txt (30.2 KB)
VCMI_Client_log.txt (141 KB)


I would like to clean up mantis project a bit. Can we close old resolved mantis tickets? Newer resolved mantis points should be checked if they’re really fixed (by tester or alternatively another developer which didn’t fix that mantis point).

Is it possible to configure mantis ticket creation, so that you can only set a priority if you are a developer or admin? Would be nice to priorize mantis tickets, so that we can easier pick a mantis point out of the pool.


Can we use atomic data types? GCC 4.6 and VS12 supports them.


What are these?

Besides, I still use VS2011.


You can safely assign and read primitive data types like int, boolean, pointers, etc… concurrently without locking/unlocking mutex or sth. like that. A few locks could be removed from logging API for example.

I think you use Visual Studio 2012, I don’t know about 2011. I think you meant the internal version number VC11. Anyway Visual Studio 2012 supports atomic data types.


Yes, that’s right. According to feature list, these are supported in MVS2012.


Maybe it’s because of 666 in name of save? :mrgreen:


may be because it is done in Linux :mrgreen: . I do not know


Was gcc-4.7 support dropped?