OK, if you don't mind, I am going to be posting my notes about the save file format here.
There are three types of delimiters, '|', ',', and ':'. Not sure what the difference between all of them are yet, but '|' seems to be the "top level" delimiter. As such, I will call a field to be a section separated by the '|' character, with the first field being field 1.
"," and ":" are apparently used for lists of stuff, like properties of an object and all that. As such, I will be calling each thing separated by them sub-fields.
For all values, assume a numeric type unless other specified
The save I am looking at is from the basic tutorial that was paused before the first game cycle was allowed to run. As such, some of the generalizations I am making may not be true.
Some fields have headers, which is always two numeric digits with no delimeter. The first actual piece of data comes after the header.
Anyways.
Field 1: Version number of AI War save was made in
Field 2: UNKNOWN
Field 3: UNKNOWN
Field 4: A large collection of numbers, blanks, and one boolean. Possible a description of the settings used for the galaxy. Currently, meanings of sub-fields unknown
(I'll break this down later)
Fields 5-?: Human Player 1
And so on for each human player, each player taking at least 7 fields, with the exception for player one, which has at least 8 fields
For each human player:
1st field for player:
Header: 00
7 sub-fields, separated by ':':
Sub-field 1: Always 1 (?)
Sub-field 2: Player number
Sub-field 5: Player name (string)
Sub-field 6: Something to do with player type? (-196 for active human player, -1 for player not present, -65536 for AI player)
Sub-field 7: Something to do with player type? (2 for active human player, 1 for player not present, 1 for AI player)
Others UNKNOWN
2nd field for player:
Header: 08
3 sub-fields separated by ':':
Sub-field 1: Current metal (Fixed integer, shift amount TBD)
Sub-field 2: Current knowledge
Sub-field 3: Current crystal (Fixed integer, shift amount TBD)
3rd field for player:
Header: 09
4 sub-fields separated by ':':
Others UNKNOWN
4th field for player:
Header: 11
4 sub-fields separated by ':':
Sub-field 1: UNKNOWN (boolean)
Sub-field 2: UNKNOWN (boolean)
Others UNKNOWN
5th field for player:
Header: 12
9 sub-fields separated by ':':
Sub-fields UNKNOWN
6th field for player:
Header: 13
33 sub-fields separated by ',':
Sub-field 23: UNKNOWN (unknown type, allowed to be blank)
Sub-field 29: Always 400?
Sub-field 30: UNKNOWN (boolean)
Sub-field 31: UNKNOWN (boolean)
Others UNKNOWN
7th field for player (player 1 only):
Header: 14
13 sub-fields separated by ',' (with exceptions):
Sub-field 1: UNKNOWN (ends with ':')
Sub-field 6: UNKNOWN (unknown type, allowed to be blank)
Others UNKNOWN
As only player 1 has this info, I'm guessing it has to do with host settings.
8th field for player:
22 sub-fields separated by ',':
Seems to be some encoding of past information. I guess for the graphs and all that when they were still in the game.
Sub-field 16: UNKNOWN (has even further sub-fields with different delimiters, '^', '@')
Sub-field 22: Encoding of past resource information (?) (has even further sub-fields a different delimiter, '%')
Others UNKNOWN
After that comes a description of the AI players
After that comes to what seems to be a description of the planets.
After that, the descriptions of each ship.
And then finally is a descriptor of lobby settings used.
I will break down these sections later.
I think that these long lists of parameters will make more sense after I cross check them with the constructors of their representative class.