Single Player bugs and crashes v38 plus (SVN) - After the 20th of February 2018

In T-brd's last Commit with the DLL look to see if there is a file that has version in it's name. If it's not there, then yes he forgot to update the version when he did the commit.

I'm still in the process of "fixing" my computer after win 10 did a Forced Re-install of win 10 Pro. I lost over 200GB of personal data. Many of my old directories are gone. It wiped out my Music Library when it decided I should use Spotify. It wiped out 5 years of personal photos ( many family photos). So I dumped win 10 and am in the process of finishing up a re-install of win 7 Pro 64. 1 156 updates finished and waiting on some more to show up. Re-installing Steam, Gog, and all my games. Pita win 10 No More! :mad:
Sorry to get off topic, but I feel your pain, Joe. Had major issues with my computer, one of which was trying to update to Win 10 Creators Update (already had Win10 from the free "upgrade") after a few days at the shop, the IT guy called me and said he was having so many problems trying to update would it be okay if he just re-installed Win 7. I said "YES PLEASE!"
 
Sorry to get off topic, but I feel your pain, Joe. Had major issues with my computer, one of which was trying to update to Win 10 Creators Update (already had Win10 from the free "upgrade") after a few days at the shop, the IT guy called me and said he was having so many problems trying to update would it be okay if he just re-installed Win 7. I said "YES PLEASE!"
Problems like these with Windows 10 is why I never would install it.

Having two disks (or one divided in partitions, basically making computer see multiple smaller disks instead of one larger) helps when Windows 10 or any other system suddenly has meltdown.
 
There are lots of wrong usages of getInfoTypeForString in various Python files.

Example number one:
Code:
if gc.getInfoTypeForStringWithHiddenAssert("IMPROVEMENT_SANITIZE_WATER") > 0:
This is wrong because 0 is a valid number here and it has to be >-1
Code:
if gc.getInfoTypeForStringWithHiddenAssert("IMPROVEMENT_SANITIZE_WATER") > -1:

Example number two:
...
This is also wrong because getInfoTypeForString returns -1 if the Type doesn't exist and that makes it necessary to always check if the returned value isn't -1 or NO_UNIT or NO_........ before using that value.
In that piece of code this error is made 5 times.

There are lots of spots like these two!!!
Yeah, I've seen loads of those errors when I've worked on my python performance modmod.
 
Example number two:
Code:
               iWorker = gc.getInfoTypeForString("UNIT_GATHERER")
                iSettler = gc.getInfoTypeForString("UNIT_TRIBE")
                if CyTeam.isHasTech(gc.getInfoTypeForString("TECH_SEDENTARY_LIFESTYLE")):
                    iWorker = gc.getInfoTypeForString("UNIT_WORKER")
                    iSettler = gc.getInfoTypeForString("UNIT_SETTLER")

                iUniqueWorkerUnit = iWorker
                iUniqueSettlerUnit = iSettler
In example 2 it is correct, if I remember correctly, because -1 is the only false value in Python all other values are true.

edit why can I no longer use workers to upgrade my palisades to forts but have to raze it and build the fort afterward?

edit 2 I can replace the palisade with a watch tower then replace that with a fort!
 
Last edited:
I have a new AI report.
In the prehistoric era, everything is going well. Hunters and towns were built. AI declared war and after that tried to defeat its enemy. Sometimes even cities was conquered!
But in the Ancient era, I began to see some problems.
1) Using too many dogs. I saw a hunter with ten dogs and attacking stacks with ~ 40 dogs - more than half. A dog or two are useful, but 40?
2) Problems with crime. Some cities had a big crime value. AI had dozens of enforcers, but he did not use them in the fight against crime, but just kept them on the stack. The situation with crime stabilized towards the end of the era.
3) Strange wars. Sometimes AI declare a war and don't trying to defeat their enemy. He declares a war not at the request of a friend - I know this cituation. Unlike the situation with crime, this is increasing problem by the end of the era.
Logs of second half of Ancient era was attached.
3 has always been an AI strategy since vanilla. Sometimes they just get all emotional about some diplomatic thing and declare a war without intending to actually even send an invasion force. Sometimes they're nowhere near being ready to launch an attack and being at war triggers them to get ready more but yeah, this isn't really a bug, just some of the funny behavior you get from the AI not being human.

1 and 2 are probably aspects of some things I just fixed. However, if it persists, I'm sure I'll be able to fix it soon. I will continue to do some testing soon and will be watching for feedback after today's commit. If you see it continuing, report it again please.
 
In example 2 it is correct, if I remember correctly, because -1 is the only false value in Python all other values are true.

Definitely not correct at all because if you call getInfoTypeForString and the Type doesn't exist it returns -1. Everywhere you use the return value of getInfoTypeForString you have to check if it returns -1 or a valid index.

False is 0 by the way.
 
I have no idea how version tracking and posting works. It's all been done automatically. Ask Koshling.
@Koshling your automatic version tracking lags one DLL compilation behind as evidenced here.

Both minidump and flag hover will say "SVN 10041" after next DLL compilation.

Aaand SVN 10043 with DLL change is here.
Lets screenshoot flag and crash game to get minidump. Both of them will show "10041" - previous version with DLL change.
Spoiler :
LmCSkeD.jpg


This is suddenly visible as very deep changes are happening.
 

Attachments

Last edited:
In example 2 it is correct, if I remember correctly, because -1 is the only false value in Python all other values are true.
Wrong, there are many "False" values in python, but -1 is not one of them.

The statement:

if X:​

Is False when
X =
0 or 0.0
Integer or float​
None
Void​
[]
Array​
()
List​
{}
Dictionary​
False
Boolean​
"" or ''
String​
Probably more variable types that I forgot.

Everything else within those variable types is "True" for the statement.


 
Last edited:
Out of curiosity...
I wonder if it will round towards zero if we change the current:
<iAmountPerTurn>
<Div>
<Mult>
<AttributeType>ATTRIBUTE_POPULATION</AttributeType>
<Constant>11</Constant>​
</Mult>
<Constant>-3</Constant>​
</Div>​
</iAmountPerTurn>

To:
<iAmountPerTurn>
<Mult>
<Div>
<Mult>
<AttributeType>ATTRIBUTE_POPULATION</AttributeType>
<Constant>11</Constant>​
</Mult>
<Constant>3</Constant>​
</Div>
<Constant>-1</Constant>​
</Mult>​
</iAmountPerTurn>

That it would be done in several steps like so: ( population = 10 )
IntegerValue = 11*10 = 110
IntegerValue = 110 / 3 = 36.66 = 36
IntegerValue = 36 * -1 = -36

instead of:
IntegerValue = -1 * 11 * 10 / 3 = -36.66 = -37

Can someone check in how many steps the calculation would be done? (@AIAndy ?)

It doesn't really matter much whether it rounds up or down for the handicap property per population modifiers, the steps between the difficulties will be pretty much the same regardless.
This answer might be somewhat late, but the Div tag uses standard integer division, which should truncate towards 0, so (10 * 11) / -3 should be -36, not -37. That means the change outlined here should not change anything (except for adding another calculation step).
 
This answer might be somewhat late, but the Div tag uses standard integer division, which should truncate towards 0, so (10 * 11) / -3 should be -36, not -37. That means the change outlined here should not change anything (except for adding another calculation step).
Ah right, was a brain fart on my part, of course it always rounds toward zero.
 
After a long autoplay observation, it looks like I do still have some repair to do on see invisible unit calls(maybe) and a tweak to infiltrator ai. I'll try to work those in but release isn't really advised until I get those tackled. They shouldn't be tough (famous last words.) This is as much a note to me as it is to the rest of the team, but it's also to let you know what I'm working on from here and what's been noted officially needs a little work.

EDIT: I just saw a city attack stack come in with lethal effectiveness. Very nice to see. I'm not thinking I'll need to improve on that right now.

However, as observed by others, nations that need (or want) to transport settlers across the waves do need some work on that. They have the settlers waiting for the transports that never arrive. Might just be a priority problem but could be deeper than that. Not sure. Just takes them a LONG time to get anywhere with that and it really holds up progress for those nations.
 
Last edited:
Definitely not correct at all because if you call getInfoTypeForString and the Type doesn't exist it returns -1. Everywhere you use the return value of getInfoTypeForString you have to check if it returns -1 or a valid index.

False is 0 by the way.
So, I mis-remembered. It happens:lol: especially as you age
 
However, as observed by others, nations that need (or want) to transport settlers across the waves do need some work on that. They have the settlers waiting for the transports that never arrive. Might just be a priority problem but could be deeper than that. Not sure. Just takes them a LONG time to get anywhere with that and it really holds up progress for those nations.
I wonder if its related to AIs inability to go to space.

One of group wonders has red blob.
Also good job Whisperr :)
Spoiler :
cw2mzQw.jpg


I'm testing Blitz/Noble/Standard.
Why some animals have red tape invisibility in addition to terrain and camouflage?
Spoiler :
R0toQgA.jpg

By the way two wild cats are hunting my hunters :p

I researched all prehistoric techs.
It seems like AI still doesn't like to utilize gatherers to improve land.
At least not to extent I use them.
Also I'm getting third city as I approach sedentary lifestyle.

AI is less effective at converting wild animals to myths than player.
 

Attachments

Last edited:
Why some animals have red tape invisibility in addition to terrain and camouflage?
Visibility, not invisibility. All animals do. They don't care about politics so you can't hide from them that way.
By the way two wild cats are hunting my hunters
It's what they do. They've recently figured out that the Smilodon may be the only animal ever to have evolved specifically to prey on homo primates. According to a recent article I read anyhow.
AI is less effective at converting wild animals to myths than player.
And they always will be due to the complexity of the overall task. Is this on teleporting hunting rewards or not?
Also good job Whisperr :)
We were wondering how many times you would bring it up. Sorry if a blood vessel burst behind your eye as you were waiting. ;)
 
Last edited:
Visibility, not invisibility. All animals do. They don't care about politics so you can't hide from them that way.
Ah then it was random display issue.

It's what they do. They've recently figured out that the Smilodon may be the only animal ever to have evolved specifically to prey on homo primates. According to a recent article I read anyhow.
So big cats are most deadly group of animals I guess.

And they always will be due to the complexity of the overall task. Is this on teleporting hunting rewards or not?
I have teleporting hunting rewards on.

We were wondering how many times you would bring it up. Sorry if a blood vessel burst behind your eye as you were waiting. ;)
You never responded, so I thought that report was ignored or forgotten.
 
Updated to latest, C2C fails to load
XML parsing SAX error: Assets\xml\art\CIV4ArtDefines_Building.xml : expected end of tag 'fInterfaceScale' at line 30813
LoadXML call failed for xml\art\CIV4ArtDefines_building.xml
Assert failed CivArtFileMgr.cpp line 101 SVN Rev 10041 Expression false
ArtInfo: 'ART_DEF_BUILDING_CULTURAL_AFRICAN' was not found.

Repeat assert failed 'ERROR" not found

Civ4 goes down at this point.
 
Updated to latest, C2C fails to load
XML parsing SAX error: Assets\xml\art\CIV4ArtDefines_Building.xml : expected end of tag 'fInterfaceScale' at line 30813
LoadXML call failed for xml\art\CIV4ArtDefines_building.xml
Assert failed CivArtFileMgr.cpp line 101 SVN Rev 10041 Expression false
ArtInfo: 'ART_DEF_BUILDING_CULTURAL_AFRICAN' was not found.

Repeat assert failed 'ERROR" not found

Civ4 goes down at this point.
Got the same error
 
Back
Top Bottom