Test build discussion

Will have to look at code to be sure.
That's another issue we need to deal with. We have no documentation on what we do and often we can't really remember what we coded. We need some sort of semi-automated documentation template we fill out each time we add something and it will remember and sort info like this and XML modders can look up details like this without having to resort to DLL code reading.

However I have no idea how to make such a system. The only thing I can think of is doxygen and while that would be a great addition, it is aimed more at DLL modders than XML modders. Also it is aimed at functions and classes rather than features and often a single feature is spread across multiple classes.
 
This is a list of issues that I want to comment. But as a general comment, I have to say that the gameplay is excellent, the flow is very fast considering the number of features it has, and the variety of things to do is amazing, you don’t get bored for sure.

-Spy reports:

On one occasion, I didn’t have enough funds for a spy report and I rejected it, but was done anyway with negative treasure funds as a result. And the report showed I had a trebuchet that I didn’t.
(spy report sav)

-Research achievements window.

I have double checked that when the research achievements window appears to show your advancements, it corrupts the city screen. Next time you enter into a city you only get the zoomed view and in the world map unit actions’ buttons disappear. Saving and reloading fixes the problem.

-Prospecting.

The system of layers prospecting and building all types of mines needs a bit of organization or explanation. I don’t know if prospecting a second layer would spoil the first layer, or I don’t know if it is advisable to build a mine on an alluvial mine.

Besides, the ore bonus icon should disappear when the ore has been depleted. Similarly, I think ore on the city plot doesn’t deplete.
Now it would make sense to abandon colonies, so that you may build cities where what you only want is the mining mountains nearby, but when all the ore has been mined, you may have no interest in having a city on that location.

-Anarchy.

The fact of anarchy preventing citizens from joining cities, and the civic requirements of the new civics brings a lot of fore planning, which is not necessarily bad. But you may find the situation where anarchy will finish next turn and you have no possibility to get a citizen to work gaining education, religion or whatever.

Shorter comments:
The implemented feature of right clicking on stalls doesn’t work.
I can’t buy shepherds or hunters from city screens.
On two or three occasions (in 800 turns) the delayed response still didn’t work. The scroll appeared but it didn’t call the king’s message. It fixes when reloading. But I must say that this feature now works perfectly 95% of times.
I also include some pictures that are self explanatory.

Suggestions:

Professions on map should depend on buildings. For example, monks can’t be created if you don’t have a church, or knights from military orders don’t need monarchy but they should need a monastery to be created or peddlers may be created only if there is a warehouse and so on.

If abandon city is not brought back, we could have a system to pillage city goods and enslave population apart from destroying or annexing it.

Some assert failed that I found:

I got this this issue when hoovering (most likely) over weapons on the city screen

Assert Failed

File: CvGameTextMgr.cpp
Line: 9458
Expression: iModifiedProduction == aiYields[eYieldType]
Message:

----------------------------

When selling wine and beer on the spice and silk trade map:

Assert Failed

File: CvTradeScreen.cpp
Line: 240
Expression: false
Message:

----------------------------

And this is a series of failed asserts that I collected.


Assert Failed

File: CvGameTextMgr.cpp
Line: 9458
Expression: iModifiedProduction == aiYields[eYieldType]
Message:

Assert Failed

File: CvArea.cpp
Line: 594
Expression: getNumBonuses(eBonus) >= 0
Message:

Assert Failed

File: CvPlayer.cpp
Line: 19775
Expression: eAnarchyCivic < GC.getNumCivicOptionInfos()
Message:

Assert Failed

File: CvUnit.cpp
Line: 6563
Expression: NULL != pCity
Message:

Assert Failed

File: CvTeam.cpp
Line: 3058
Expression: eWarChief != kTeamPlayer.getParent()
Message:

----------------------------------------------------------


Assert Failed

File: CvGameTextMgr.cpp
Line: 9673
Expression: iBaseModifier == kCity.getBaseYieldRateModifier(eYieldType)
Message: Yield Modifier in setProductionHelp does not agree with actual value
 

Attachments

  • build mine on no ore.jpg
    build mine on no ore.jpg
    207.5 KB · Views: 286
  • build quarry on no stone.jpg
    build quarry on no stone.jpg
    496.3 KB · Views: 242
  • hunter not an option.jpg
    hunter not an option.jpg
    394.8 KB · Views: 250
  • where did my elders go.jpg
    where did my elders go.jpg
    498.6 KB · Views: 283
  • spy report.jpg
    spy report.jpg
    330.5 KB · Views: 241
  • not able to leave city.jpg
    not able to leave city.jpg
    378.9 KB · Views: 206
  • Series of assert failed.ColonizationSave
    Series of assert failed.ColonizationSave
    580.6 KB · Views: 300
  • spy report.ColonizationSave
    spy report.ColonizationSave
    493.9 KB · Views: 228
  • transition thru civics.ColonizationSave
    transition thru civics.ColonizationSave
    601.9 KB · Views: 194
the flow is very fast considering the number of features it has
Kailric added a bunch of new features before I joined and he used the approach that it should work (that's the usual approach, right ;)). I noticed it had become annoyingly slow using an approach to find the slowest part and then rewrite those functions to do the very same (no new functions) in a faster way, we ended up with some functions, which have more features than vanilla, yet they still beat vanilla on performance. I reduced the waiting for AI time in RaR by 40% and I didn't measure in M:C, but I know the difference is much greater than that.

Still it is an ongoing battle against waiting time and I do think of new ways to measure and improve performance from time to time. The thing is as new code is added, if it can revert to being slow again.

-Research achievements window.

I have double checked that when the research achievements window appears to show your advancements, it corrupts the city screen. Next time you enter into a city you only get the zoomed view and in the world map unit actions’ buttons disappear. Saving and reloading fixes the problem.
Now that's a clear bug report, which should be possible to reproduce and fix and test if the fix works. My guess is that some variable is set to something it shouldn't contain or some other code reads it with the expectation that it should contain something else. The question is which one. Currently the only good hints are the screen names and the fact that it isn't saved.

I can’t buy shepherds or hunters from city screens.
You mean the immigration screen or ? I can't think of buying expert units in a city.

On two or three occasions (in 800 turns) the delayed response still didn’t work. The scroll appeared but it didn’t call the king’s message. It fixes when reloading. But I must say that this feature now works perfectly 95% of times.
Most likely it is the exe bug, which discards a valid offer. Something about taking friendship to the next level will only work if you are at war or something.

Professions on map should depend on buildings. For example, monks can’t be created if you don’t have a church, or knights from military orders don’t need monarchy but they should need a monastery to be created or peddlers may be created only if there is a warehouse and so on.
I kind of agree. I think it can be done with XML changes only. There is one potential issue though. Not being able to make peddlers can be a big issue in early game as they can be your only unit to transport yields between your cities. Maybe we could add a "transport unit", which is essentially a peddler without the ability to trade :think:
At some point the whole profession cargo slot will likely be improved a great deal. I would like a limit on how much each slot can contain, as it could make sense to use a more or less free early unit with one cargo slot with a capacity of say 10.

If abandon city is not brought back, we could have a system to pillage city goods and enslave population apart from destroying or annexing it.
I wonder what we should do about abandon cities. Maybe we can allow 0 units in a city, in which case the city does nothing. You can then use units outside to pillage the buildings to completely remove it. I kind of like the idea that it takes multiple turns to remove moats and castles because otherwise you just remove all of it if you know the city is lost to the enemy next turn. No fortifications makes it easier to retake later.

I will look at the asserts later. Some of them look potentially quite bad while the ones in CvGameTextMgr.cpp are presumably just a matter of incorrectly displayed text.

Thanks for the feedback. It is really helpful for improving the quality of the mod :goodjob:
 
Hi, guys! Thank you for making such a spectacular MOD!
I had an issue, that could not owercome. Please watch the save file

error message:

Assert Failed
File: CvCity.cpp
Line: 9625
Expression: false
Message: illegal Profession
 

Attachments

It is a test release and they are still making a good job improving it...

But yes, it is already amazing.
 
Hi, guys! Thank you for making such a spectacular MOD!
I had an issue, that could not owercome. Please watch the save file

error message:

Assert Failed
File: CvCity.cpp
Line: 9625
Expression: false
Message: illegal Profession

Thanks John, I'll look into this asap. Glad you like the mod. It definitely has "spectacular" potential.
 
Play testing report #2

-Bugs found:

Increased demands:

At a certain time, when lack of civic requirement triggers an anarchy, that requirement automatically turns to 300, (eg. If you fail to meet the requirement of 10 education, you fail into anarchy but the education requirement turns automatically to 300) That makes it even more difficult to recover back from anarchy. I have checked it with faith, fealty and education, but I have not checked what happens when there is lack of funds.

But this automatic requirement of 300 fixes to the normal needs when changing civic.


The failure SadJohn reported hasn&#8217;t occurred to me yet.

-Suggestions/Comments:

Spy reports has not presented any problems so far after the patch.

We should award/designate entrepeneuring cities that produce and export lots of goods. In medieval times the king granted a city to be a Market city. Or maybe we could recognize that they are convenient cities to get what people need and therefore attractive cities to live.

Manual trade route is a mess. Routes could be at least ordered alphabetically or something.

The fact of Peaceful wild animals preventing field work is a bit of a pain. I don&#8217;t also quite like too much citizen automatization.

When we have built city stalls or market, when we hoover the mouse over it, we can know the city market prices but we don&#8217;t have information about demand.

I have the feeling that Pages promote rather fast.

Buildings waiting for stuff to be completed is not shown on the city screen.

Clicking on my stack of 325 Elders takes about 35 seconds to be ordered on my Double Core/ 4 sub processes computer at 1,9 Hz and 4GB RAM.

The Pope keeps trying to move their troops into my lands and it is overruled by the game because I have no trade relations with him and the troops remain back on their previous plot.

Delayed response doesn't work on this occasion. (Save game included)

-Pictures:
300 resource demand after Anarchy.
My slowing down stack of 325 Elders.
When trading to vassals, we don&#8217;t have the &#8220;What would you give me for this?&#8221; option.
Notice that the civilization doesn&#8217;t revolt to anarchy even after nearly 200 years of not meeting demands after Papacy over ruling.


-Asserts Failed:

These two failures are related to a Serfdom civic change of another civ (I think). And from this situation on, you need to ignore the second failure whenever you load a save game. (Save game included)

Assert Failed

File: CvCity.cpp
Line: 4884
Expression: iValue >= 0 || eYield == YIELD_FOOD
Message:

Assert Failed

File: CvCity.cpp
Line: 5793
Expression: (iYield == YIELD_FOOD) || (aiYields[iYield] >= 0)
Message:

----------------------------------------------------------


Other assert failed:

Assert Failed

File: CvSelectionGroupAI.cpp
Line: 194
Expression: iTempHack < 90
Message:

----------------------------------------------------------
 

Attachments

  • 200 after unfulfilling education maintentance.jpg
    200 after unfulfilling education maintentance.jpg
    255.2 KB · Views: 236
  • Serfdom Civic.ColonizationSave
    Serfdom Civic.ColonizationSave
    123.7 KB · Views: 233
  • delayed response not working.ColonizationSave
    delayed response not working.ColonizationSave
    227 KB · Views: 279
  • 325 Elders.jpg
    325 Elders.jpg
    491.6 KB · Views: 249
  • what would you give me for that.jpg
    what would you give me for that.jpg
    263.7 KB · Views: 277
  • not meeting demands.jpg
    not meeting demands.jpg
    361.9 KB · Views: 269
Play Testing Report #3

I want to comment some issues I have found.

Military system.

I know that this is one of the features where some work will be done. Nevertheless, I want to comment that in the current system I never use soldiers other than Archers>Crossbows>Longbowmen.

This is so that when I am ready to have weapons, I have already researched Crossbows, so I never use Skirmishers or Infantry other than for training, and for me, Longbowmen are the most useful unit in the final stage of the game.

Archers should be more difficult to be produced, Skirmishers should have some more advantages, Crossbows should have some disadvantages and so on.

Promotions:

A Commander has the Skirmisher I promotion, a skirmisher also has the Skirmisher I promotion but a skirmisher Commander doesn't get skirmisher II promotion.

Also, when a Skirmisher is given Skirmisher II promotion, when he is back a Peasant, he loses the Skirmisher I promotion but retains the Skirmisher II one. Thus, when this unit gains some experience to promote, he can be offered either Skirmisher I or Skirmisher III.

Shorter comments:

Cities are no much at risk. When there are Marauders or Bandits around, it is safer to have no one outside the city to prevent attacks. They should rob undefended cities.

When the game checks Civics demands every turn, that should be done previous to citizens graduating. Because now we come across a situation that your Cavalrymen or your Students graduate and in the same turn processing you cease to meet fealty or education demands and you are kicked off to Anarchy.

A free Manor doesn't count as required building. Therefore, a palace can't be built when in Manoerism.

I came across a map with continents too far away to have a single silk road access.
It has never had sense to me going to the poles for trading anyway. I know the system is still been under development.

I think I already reported these failed asserts, but I do it anyway.
I experience them when hoovering the mouse over the Law Icon:

First,

File: CvGameTextMgr.cpp
Line: 9673
Expression: iBaseModifier == kCity.getBaseYieldRateModifier(eYieldType)
Message: Yield Modifier in setProductionHelp does not agree with actual value

----------------------------------------------------------
and then

Assert Failed

File: CvGameTextMgr.cpp
Line: 9458
Expression: iModifiedProduction == aiYields[eYieldType]
Message:

----------------------------------------------------------

I also include my favourite section of self explainatory screenshots.
 

Attachments

  • Church requires 30813 law.jpg
    Church requires 30813 law.jpg
    389.8 KB · Views: 234
  • exhausted hunting showing fur.jpg
    exhausted hunting showing fur.jpg
    370.8 KB · Views: 235
  • elder doesnt know hes been made redundant.jpg
    elder doesnt know hes been made redundant.jpg
    386 KB · Views: 230
  • learning at Sirmium progress bar misplaced.jpg
    learning at Sirmium progress bar misplaced.jpg
    268.7 KB · Views: 210
Play Testing Report #3

Military system.

I know that this is one of the features where some work will be done. Nevertheless, I want to comment that in the current system I never use soldiers other than Archers>Crossbows>Longbowmen.

This is so that when I am ready to have weapons, I have already researched Crossbows, so I never use Skirmishers or Infantry other than for training, and for me, Longbowmen are the most useful unit in the final stage of the game.

Archers should be more difficult to be produced, Skirmishers should have some more advantages, Crossbows should have some disadvantages and so on.

Naturally you will use the best unit for the job and at the moment Longbowmen are pretty much it with no reason to use other units. This is where a military expansion will make all the difference so changes will be made to make armies more diversified. You can post your ideas in the military threads.

Promotions:

A Commander has the Skirmisher I promotion, a skirmisher also has the Skirmisher I promotion but a skirmisher Commander doesn't get skirmisher II promotion.

Also, when a Skirmisher is given Skirmisher II promotion, when he is back a Peasant, he loses the Skirmisher I promotion but retains the Skirmisher II one. Thus, when this unit gains some experience to promote, he can be offered either Skirmisher I or Skirmisher III.

This sounds like a bug of some sort.

Shorter comments:

Cities are no much at risk. When there are Marauders or Bandits around, it is safer to have no one outside the city to prevent attacks. They should rob undefended cities.

I think they are suppose to "raid" cities. Not sure exactly what has been setup but its a good idea.

When the game checks Civics demands every turn, that should be done previous to citizens graduating. Because now we come across a situation that your Cavalrymen or your Students graduate and in the same turn processing you cease to meet fealty or education demands and you are kicked off to Anarchy.

Ok, so units are graduating, and then are not producing the required resources to prevent Anarchy. Yeah, this needs fixed. Just how to do this is the question as it can be a pain to have to reassign your graduates once again to prevent Anarchy. Graduates could be auto reassigned their previous profession, but this could lead to issues where you want your graduate to do something else and forget he has graduated because he isn't in the unity selection cycle. Perhaps a new command for graduates that you can set them to work previous profession, that would be convenient. Any ideas on this?

A free Manor doesn't count as required building. Therefore, a palace can't be built when in Manoerism.

Yeah, this would be a bug.
I came across a map with continents too far away to have a single silk road access.
It has never had sense to me going to the poles for trading anyway. I know the system is still been under development.

So, the map had no silk road? Well, technically it is not the "poles" it simply represents the edge of the map, the end of the "playing field" so to speak. Like in soccer you have a playing field, but the world continues on outside the playing field. So, if a player wants a soda and leaves the playing field, you would have to simulate that event. :)


I didn't report though that when the spy report window is going to appear, it freezes the game for a little while.

This is similar to the pause before Diplomacy and Construction Complete popups and I am not sure why this happens. Night do you have any incite into this?


Increased demands:

At a certain time, when lack of civic requirement triggers an anarchy, that requirement automatically turns to 300, (eg. If you fail to meet the requirement of 10 education, you fail into anarchy but the education requirement turns automatically to 300) That makes it even more difficult to recover back from anarchy. I have checked it with faith, fealty and education, but I have not checked what happens when there is lack of funds.

But this automatic requirement of 300 fixes to the normal needs when changing civic.

This would be a bug, thanks for the report.


-Suggestions/Comments:

We should award/designate entrepeneuring cities that produce and export lots of goods. In medieval times the king granted a city to be a Market city. Or maybe we could recognize that they are convenient cities to get what people need and therefore attractive cities to live.

Interesting idea here.

Manual trade route is a mess. Routes could be at least ordered alphabetically or something.

Yes, a better route manager is in need
The fact of Peaceful wild animals preventing field work is a bit of a pain. I don&#8217;t also quite like too much citizen automatization.

Hmm, this shouldn't be happening as Deer and Boar shouldn't be interrupting production. Are you sure it was peaceful animals?

When we have built city stalls or market, when we hoover the mouse over it, we can know the city market prices but we don&#8217;t have information about demand.

Demand currently isn't used. This whole system is under review and will be updated to a new system at some point.

I have the feeling that Pages promote rather fast.

Not sure about this, but their learn time can be modified in the XML. They should promote pretty quick though as you have to go squire then knight in only 300 turns ;)

Buildings waiting for stuff to be completed is not shown on the city screen.

Correct, this is a vanilla issue and it would be nice if it was addressed.
Clicking on my stack of 325 Elders takes about 35 seconds to be ordered on my Double Core/ 4 sub processes computer at 1,9 Hz and 4GB RAM.

How did you come by 325 elders?
The Pope keeps trying to move their troops into my lands and it is overruled by the game because I have no trade relations with him and the troops remain back on their previous plot.

Hmm, interesting pope action there, will check this out.


Thanks much for the excellent report!

Have you used the Auto Traders yet and their interface?
 
Clicking on my stack of 325 Elders takes about 35 seconds to be ordered on my Double Core/ 4 sub processes computer at 1,9 Hz and 4GB RAM.
I would like that savegame. It sounds like the best setup for profiling that I have ever seen. If anything can be done to speed up this part of the code, this savegame holds the key to analyzing and testing results.

Having that many units on a single plot sounds like a poor defense plan, but that's another story. If it is optimized to run well at 325, then it should speed up 20 as well ;)

Also, when a Skirmisher is given Skirmisher II promotion, when he is back a Peasant, he loses the Skirmisher I promotion but retains the Skirmisher II one. Thus, when this unit gains some experience to promote, he can be offered either Skirmisher I or Skirmisher III.
Sounds like lv1 requires a specific combat type while lv2 requires lv1 only. However a quick look in the xml file doesn't reveal any issues like that :confused:
 
Graduates could be auto reassigned their previous profession, but this could lead to issues where you want your graduate to do something else and forget he has graduated because he isn't in the unity selection cycle. Perhaps a new command for graduates that you can set them to work previous profession, that would be convenient. Any ideas on this?

Well, the idea I proposed is that when the AI has finished its turn and the game is making the preparations for your turn, checking for civics demands should be placed earlier in the End-of-Turn cycle before expelling students from school. That way you meet your demands, you continue with your current civics and the graduate awaits orders outside the city, fact that will remind you to assign a new student if you want to meet the demands next turn.

So, the map had no silk road? Well, technically it is not the "poles" it simply represents the edge of the map, the end of the "playing field" so to speak. Like in soccer you have a playing field, but the world continues on outside the playing field. So, if a player wants a soda and leaves the playing field, you would have to simulate that event. :)

Yeah, yeah, ...:rolleyes:

Hmm, this shouldn't be happening as Deer and Boar shouldn't be interrupting production. Are you sure it was peaceful animals?

Oops, let me double check it. :blush:

Have you used the Auto Traders yet and their interface?

I'll work on that next.

Thanks much for the excellent report!

My pleasure. :)

How did you come by 325 elders?

I would like that savegame. It sounds like the best setup for profiling that I have ever seen. If anything can be done to speed up this part of the code, this savegame holds the key to analyzing and testing results.

Having that many units on a single plot sounds like a poor defense plan, but that's another story. If it is optimized to run well at 325, then it should speed up 20 as well ;)

By capturing. And this is not all. I also captured a lot of other kinds of citizens so that I had to separate all that ammount of people into at least 3 stacks to make it manageable. All together there are over 450 citizens. And as you can imagine, I didn't want them into my cities, because it would be very unconfortable to play with such an amount of citizens.

The AI seems to pile up citizens and then it doesn't know what to do with them. When you are besieging cities, the AI piles them defenseless next to a city so you just go and capture the pile.

Human players (I have it tested only with me) don't pile up such a quantity, but I usually get at least 3 or 4 idle unemployed citizens waiting outside my cities.

I have always thought that there sould be a way to control over population of idle peasants. I always dreamed of having that idle piled-up stack of population consuming 1 food from the city they are waiting in or from a wagon if they are in the map, and start dying if there is not food available.

This way you have to control and manage well upcoming new citizens, and will prevent the AI from piling up citizens.

I attach the savegame.
 

Attachments

Back
Top Bottom