Page 1 of 1

Information request

Posted: Thu Feb 14, 2008 4:40 am
by DaveFrommer
Hi all,
I have been playing this game for about 4 weeks now and love it!!! Something I have been looking for for many many years. I find it very easy to learn and understand with an intuitive interface (At least for an experienced wargamer -- more decades than I care to count :p leure: --)

Ok, schmozzing out of the way :innocent:

Since I am very detailed oriented and a software developer I was examining thee various save files and there is a lot of useful informatio in there, Through experimentation, I was able to figure out what a decent chunk of the numbers represent, but not all of them.

Is there a document somewhere that documents the .hst, .trn, and .rod file structures?

Posted: Thu Feb 14, 2008 7:48 am
by Rafiki
Hi DaveFrommer, and welcome to the forums Image

I haven't seen a specification for the formats for those files, but I know that there are others who have been looking at them. I suggest asking any questions you have about specific sections, and see what answers you can get from those familiar with the files :)

Posted: Thu Feb 14, 2008 9:43 am
by Pocus
The files formats are much less interesting than how to scripts setups and events in my opinion. Actually, no one should really have to look into the actual files, as scripting is done with XLS files.

Posted: Thu Feb 14, 2008 9:49 am
by Rafiki
I imagine that DaveFrommer might be wanting to make something like a savegame analyzer, given the files he's interested in?

Posted: Thu Feb 14, 2008 9:51 am
by Pocus
that would be interesting then!

Posted: Fri Feb 15, 2008 1:21 am
by DaveFrommer
Thanks I will identify what I know and don't know about the format and see if anyone can help me.

I am indeed interested in writing more of an analyzer so I can track history of what happens to individual units throughout a game. Organizational structure changes, etc.

I am also examining the battle log and seems to be lots of good info there to produce a more detailed battle result by unit.

I do love playing games, but have almost as much fun analyzing results and writing code :-)

I have played around with the various files and the spreadsheets and experimented with modding. Looks like a great deal of info is exposed for this purpose :cool:

I can see what little free time I have fast disappearing

Posted: Fri Feb 15, 2008 2:05 am
by DaveFrommer
Here is what I have deduced so far from the .hst file format. Anyone have any information to add?


<Scratch that, pasting an excel speadsheet copy into a post doe not work!!?

<Lets try attaching the .xls>

More up to date analysis

Posted: Fri Feb 15, 2008 4:18 am
by DaveFrommer
Here is a little better organized sheet of my analysis to date

Posted: Fri Feb 15, 2008 10:29 am
by Pocus
Faction level data

Code: Select all

  _nbIntegerData = 40; {30-39 :p laceholders}
  // indexes of integer data
  _idxUID          = 0;
  _idxKind         = 1;
  _idxDefType      = 2;
  _idxMoney        = 3;
  _idxPriceInc     = 4;
  _idxAILevel      = 5;
  _idxOffsetX      = 6;
  _idxOffsetY      = 7;
  _idxAllianceUID  = 8;
  _idxAutoRaiseOn  = 9;
  _idxVPWinLevel   = 10;
  _idxRulSudDeath  = 11;
  _idxRulPettyWar  = 12;
  _idxVPTotal      = 13;
  _idxWinStatus    = 14;
  _idxCurrentTurn  = 15;
  _idxPassive      = 16;
  _idxUnSelectable = 17;
  _idxRailPool     = 18;
  _idxRiverPool    = 19;
  _idxBlockadePerc = 20;
  _idxMoraleWin    = 21;
  _idxMoraleLoose  = 22;
  _idxMorale       = 23;
  _idxConscript    = 24;
  _idxWarSupply    = 25;
  _idxForeignEntry = 26;
  _idxConscLosses  = 27;
  _idxMaxCombiUnit = 28;
  _idxRedeployUse  = 29;
  _idxMaxEntrench  = 30;

  // faire progresser l'indicateur d'effacement dans Serialize

  _nbStringData = 40; {33-39 :p laceholders}
  // indexes of string data
  _idxNote         = 0;
  _idxVictoryCond  = 1;
  _idxRempls       = 2;
  _idxAutoRaiseUID = 3;
  _idxAutoRaiseNum = 4;
  _idxAutoDismiss  = 5;
  _idxObjRegions   = 6;
  _idxWinParams    = 7;
  _idxLooseParams  = 8;
  _idxWinParamsVP  = 9;
  _idxLoosePrmsVP  = 10;
  _idxSpecialRgn   = 11;
  _idxLoyatyCoeff  = 12;
  _idxOnAttack     = 13;
  _idxNavalPoolUID = 14;
  _idxBlockadeUID  = 15;
  _idxHarborNoBlock= 16;
  _idxHarborBlock  = 17;
  _idxUnitsPool    = 18;
  _idxBuiltActors  = 19;
  _idxActorsPool   = 20;
  _idxPrisoners    = 21;
  _idxTrsAssetsInfs= 22;
  _idxRevoltInfos  = 23;
  _idxCapitals     = 24;
  _idxAIPoolRatios = 25;
  _idxCombiUnitsNb = 26;
  _idxGarrInfos    = 27;
  _idxScorchEarth  = 28;
  _idxSEOneTurnCmd = 29;
  _idxPassword     = 30;
  _idxRelationships= 31;
  _idxRelationsBias= 32;
Group level data

Code: Select all

  _nbIntegerData = 28; {26-27 placeholders}

  // indexes of integer data
  _idxUID            = 0;
  _idxLinkedUID      = 1;
  _idxStartGameSpace = 2;
  _idxStartSubSpace  = 3;
  _idxUnitCapacity   = 4;
  _idxFaction        = 5;
  _idxOriX           = 6;
  _idxOriY           = 7;
  _idxEndGameSpace   = 8;
  _idxEndSubSpace    = 9;
  _idxFightAgainst   = 10;
  _idxTargetUID      = 11;
  _idxDisengaging    = 12;
  _idxAngle          = 13;
  _idxDstX           = 14;
  _idxDstY           = 15;
  _idxPosture        = 16;
  _idxPrevSubSpace   = 17;
  _idxInCityScape    = 18;
  _idxEntrenchLevel  = 19;
  _idxSpecOrderDays  = 20;
  _idxInterceptFac   = 21;
  _idxInterceptUnt   = 22;
  _idxPrevPosture    = 23;
  _idxUINoMerge      = 24;
  _idxROE            = 25;

  _nbStringData = 5; {- placeholders}
  // indexes of string data
  _idxName         = 0;
  _idxNote         = 1;
  _idxStoredPath   = 2;
  _idxSpecOrders   = 3;
  _idxAIInfos      = 4;
Unit level data

Code: Select all

  _nbIntData = 20; {16-19 : placeholders} // ! CopyGameProperties pour donnĂ©es modifiables par joueur
  // indexes of integer data
  _idxUID             = 0;
  _idxUnitType        = 1;
  _idxCombiKind       = 2;
  _idxStartSubSpace   = 3;
  _idxActivation      = 4;
  _idxParentGrpUID    = 5;
  _idxFactionUID      = 6;
  _idxDaysSpent       = 7;
  _idxSupplied        = 8;
  _idxBeenActive      = 9;
  _idxRgnDaysSpent    = 10;
  _idxTurnHideValue   = 11;
  _idxFixType         = 12;
  _idxBesiegedUID     = 13;
  _idxPrevCombiKind   = 14;
  _idxRelocatedFrom   = 15;

  _nbStrData = 10; {was:6; - Placeholder} // ! CopyGameProperties pour donnĂ©es modifiables par joueur
  // indexes of string data
  _idxName          = 0;
  _idxShortName     = 1;
  _idxCombiName     = 2;
  _idxNote          = 3;
  _idxInternalName  = 4;
  _idxMergedUnits   = 5;
  _idxFlavorName    = 6;
  _idxFlavorIName   = 7;
  _idxGHQName       = 8;
  _idxParentGHQ     = 9;
Sub-unit level data

Code: Select all

  _nbIntData = 22 {17-21: placeholder};
  // indexes of integer data
  _idxUID        = 0;
  _idxModelUID   = 1;
  _idxHealth     = 2;
  _idxExp        = 3;
  _idxBeingBuilt = 4;
  _idxcuSupply   = 5;
  _idxcuAmmo     = 6;
  _idxcuPower    = 7;
  _idxTurnsNoSup = 8;
  _idxcuCohesion = 9;
  _idxGHQStrat   = 10;
  _idxGHQOff     = 11;
  _idxGHQDef     = 12;
  _idxSenChange  = 13; {*}
  _idxPOLChange  = 14; {*}
  _idxCanUpgrade = 15;
  _idxStratMod   = 16;
  _idxOffMod     = 17;
  _idxDefMod     = 18;

  _nbStrData = 1;
  // indexes of string data
  _idxName      = 0;
Did I said I like people wanting to do third party tools? :siffle:

Posted: Fri Feb 15, 2008 1:12 pm
by DaveFrommer
Thanks man, That is awesome.

I got a start last night on a treeview of the Organizational structure. I am using C# with DotNet 2.1. This definitely filed in the blanks for the structure.

I forget sometimes how much fun I used to have coding (I do exclusively data warehousing and design the last 6 years) but spent 17 years as a programmer in various languages.

Posted: Sat Feb 16, 2008 4:52 am
by DaveFrommer
I have some questions on the Gamesim section at the top of the .hst file

{Gamesim}
1000001 -- ID of the faction hosting? human player if single player
2695 -- current turn number
2703 -- last turn number
1862 Shiloh -- scenario Name
str1862ShilohDispName
str1862ShilohDescription
USA| -- faction 1 name
CSA| -- faction 2 name
0 -- marks end of faction list?
str1862ShilohBackground1
str1862ShilohBackground2
str1862ShilohVC_USA
str1862ShilohVC_CSA
1 -- ?
AACW 1.09 -- Game Version
24 -- TurnsPerYear (Used instead of global value in turnsformat.opt?
2695 -- Current Turn??
8103 -- ?



Also, to verify I am using the turn numbers correctly? This is the number of turns from the YearFirstTurn setting in the turnsformat.opt file?