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

I still believe that the Space Race Victory should have been left much as it was in RoM as it lets people play to the mid-Transhuman if they want.
Yeah, currently space race victory and science victory are pretty much same thing now, with mid-transhuman spacerace you would build starship as in originally designed space race.

Diplomatic victory also could be in middle transhuman - that is first you force others to align civics with your civics and then on victory players and AIs would be unified into single proto-interstellar civilization.

Religious and cultural victories are achieved in first part of game.
Cultural victory could be delayed if it required 5 cities on Standard map size (scaled by map size) on maximum culture level.

Domination and conquest victory timeframe depends on AI, handicap and player's skill.
 
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.
 

Attachments

SVN 10042
There was an event where one of my Gatherers became a Decorated Champion. It didn't get the actual promotion but the event shouldn't chose a Gatherer to promote.
 
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:
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

                # if settlers and workers
                if bSettlersAndWorkers:
                    isettlers = iPopulation/iPopulationForSettlers
                    iworkers = (iPopulation - iPopulationForSettlers * isettlers)/iPopulationForWorkers
                else:
                    isettlers = 0
                    iworkers = iPopulation/iPopulationForWorkers

                for i in range(0,iworkers):
                    CyMessageControl().sendModNetMessage(900, pHeadSelectedCity.getID(), iUniqueWorkerUnit, 0, playerID)
                for i in range(0,isettlers):
                    CyMessageControl().sendModNetMessage(900, pHeadSelectedCity.getID(), iUniqueSettlerUnit, 0, playerID)
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!!!
 
I think my game crashed while writing a save, I added it in case it's useful for finding the exact spot.
56 bytes - this save is trashed.

Upload minidump file, its in BTS folder.
 
I know the save is bad, but the size might help someone familiar with the process to guess what point it failed at.
 

Attachments

I know the save is bad, but the size might help someone familiar with the process to guess what point it failed at.
It failed instantly on beginning.
How many GB of ram you have?

Saves have usually few MB of size.
 
I know the save is bad, but the size might help someone familiar with the process to guess what point it failed at.
Because of the SVN 10040-10042 Fixes I strongly suggest that Before you start another New game clear the cache folder again.

This game that crashed was started under an older .dll SVN 10023.
 
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:
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

                # if settlers and workers
                if bSettlersAndWorkers:
                    isettlers = iPopulation/iPopulationForSettlers
                    iworkers = (iPopulation - iPopulationForSettlers * isettlers)/iPopulationForWorkers
                else:
                    isettlers = 0
                    iworkers = iPopulation/iPopulationForWorkers

                for i in range(0,iworkers):
                    CyMessageControl().sendModNetMessage(900, pHeadSelectedCity.getID(), iUniqueWorkerUnit, 0, playerID)
                for i in range(0,isettlers):
                    CyMessageControl().sendModNetMessage(900, pHeadSelectedCity.getID(), iUniqueSettlerUnit, 0, playerID)
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!!!

Do you know if any of these are pepper2000's? Reason I ask is he does not have much time now to fix things like this.
 
Because of the SVN 10040-10042 Fixes I strongly suggest that Before you start another New game clear the cache folder again.

This game that crashed was started under an older .dll SVN 10023.
Since some time crash dump file indicates wrong version.
I have SVN 10042 and forced game to crash and got MiniDump_10023.
I guess @Thunderbrd or someone who was compiling messed somewhere with DLL SVN version.
It should be MiniDump_10040, as this is last time it was compiled.
Last two compilations were in 10022 and 10040.

Basically there is mismatch between SVN when DLL was compiled and number in Minidump file name.
 
Last edited:
Because of the SVN 10040-10042 Fixes I strongly suggest that Before you start another New game clear the cache folder again.

This game that crashed was started under an older .dll SVN 10023.

I updated by deleting the old folder and copying the SVN and deleted cache in AppData\Local\My Games\beyond the sword right before starting the game. Can the DLL be cached somewhere else?

I have 16 GB of RAM.
 
Last edited:
I updated by deleting the old folder and copying the SVN and deleted cache in AppData\Local\My Games\beyond the sword right before starting the game. Can the DLL be cached somewhere else?

I have 16 GB of RAM.
You did the right process. And the cache folder does not contain the DLL or a copy of the DLL. It stores game data for quicker loading and your normal set up for playing a mod, In this case Caveman2Cosmos.
 
Since some time crash dump file indicates wrong version.
I have SVN 10042 and forced game to crash and got MiniDump_10023.
I guess @Thunderbrd or someone who was compiling messed somewhere with DLL SVN version.
It should be MiniDump_10041, as this is last time it was compiled.
Last two compilations were in 10022 and 10040.
With the mini dump listing at 10023 it says his game was using the 10022 DLL.
 
I think my game crashed while writing a save, I added it in case it's useful for finding the exact spot.
Do you have an auto save or Manual save before this autosave?
 
With the mini dump listing at 10023 it says his game was using the 10022 DLL.
I got that minidump number too when I forcefully crashed game even if I started it on last SVN - 10042.
Flag also says wrong revision - I started new game.
Spoiler :
F8nGSbT.jpg


Start new game by yourself on last SVN revision.

I have chipotle on, opened console with "~", typed "help" to search for crash command, and typed App.Crash and got this MiniDump.

This SVN revision mismatch between actual SVN and version in DLL was inconsequential until recent overhaul.
 

Attachments

Last edited:
I got that minidump number too when I forcefully crashed game even if I started it on last SVN.
Flag also says wrong revision - I started new game.
Spoiler :
F8nGSbT.jpg


Start new game by yourself on last SVN revision.
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:
 
In T-brd's last Commit with the DLL look to see if their 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.
There is version file but its content says what was SVN on PREVIOUS DLL compilation not current DLL compilation.
For example if DLL was compiled in X and X+Y SVN, then version file, minidump and flag would say X revision, not current X+Y revision.
If DLL was complied every revision then this system would work.
But not when there are huge changes in DLL going on irregular SVN revisions.

This is what Version file updated at SVN 10040 says (it is like this since 2016 if not earlier):
#define SVN_PREV_REV 10022 // Current SVN rev at build time
#define SVN_REV (SVN_PREV_REV+1) // Assumed will be the rev after the rev it was built from <-This assumes DLL is compiled every SVN revision.
And here in my previous post you see forced minidump and flag say DLL is on revision 10023.

If you want minidump number and flag display revision, display revision where DLL was compiled last time you can't use (SVN_PREV_REV+1), you must use number of revision, that you are committing now.

Basically minidumps and flag hover are artificially outdated, as they show number of SVN, where DLL was compiled before last compilation.
 
Last edited:
You will have to ask T-brd why it show the Previous version when doing a new DLL. In this case svn 10022 vs 10040.
 
You will have to ask T-brd why it show the Previous version when doing a new DLL. In this case svn 10022 vs 10040.
I tagged him already few posts above.
It was case at least since 2016, maybe since first revisions.

Sadly sourceforge acts up when trying to check older commits.
 
Back
Top Bottom