Into the depths of code...

Some companies make lip service to the term "Our customrs are our partners.."

At Stardock, we mean it literally. VERY literally. ;)

Here is a link to the MAP file of Beta 3D. So if it crashes, you can actually look up where it crashed. This is only a step away from handing out source code.

Here's how it works:

When the game crashes, it'll give an address like 00001:00ab2134

That tells you the function it crashed.

You then look at the map file and see what functions are around there.

At the bottom of the crash log, you'll see other addresses. Those indicate what functions were called just before that one.

So what causes a crash?

Here's an example from one of the reports from today:

Game was crashing in GetSectorOwner().
Just before that it was in AIEvaluateHumanStrategies();

In beta 3D we now have a new flag called IsShipDead so that we can make the game more multithreaded, we don't destroy ship objects (the memory they use) immediately. We mark them as dead and then take them off the map.

Well, in that particular crash it was in AIEvaluateHumanStrategies and looking at:

if(pGalaxy->GetSectorOwner(pShip->GetSectorX(),pShip->GetSectorY());

Well in this case that ship was dead and so it returned a wacky value for its location since it was no logner on the map. This caused it to crash.

The fix was obvious: Check to make sure the ship isn't dead.

This was all found through the map file.

So here's a link to the latest map file:

http://draginol.stardock.com/temp/galciv.txt

143 views 0 replies