Thanks to the developers! (& suggestion for savegames)
Posted: Sat Sep 13, 2014 6:34 pm
Hi,
I played the original Elite, Frontier and Frontier 2 when they were released - their atmosphere and immersion is legendary. I recently discovered Pioneer, and it's the game I've long awaited :)
Real distances, newtonian physics, an enormous procedurally generated universe and modern PC power gives a captivating experience. A feature of Pioneer I am particularly fond of is the ability to do proper exploration of planets and moons in uncharted systems. A big thank you to the developers for the time dedicated to bringing this game to its current impressive state. I may be able to help with the project at some point (I have C++, physics and computer modelling experience, but no games programming experience).
Compatibility of savegame files with future releases is a feature that will greatly enhance Pioneer - in the sense that players will know that the time spent in-game will not be lost (my savegame became incompatible with latest release in early August, so I've got to start again, or forfeit all new features released since then). I did look at the source code to see if I could figure out where the save/load game code was. It's probably much more tricky than I'm thinking - when loading an older savegame file, when attempting to read some data that doesn't exist in the file (added in the newer version) then the code would have to use a default value for the data. So all new data would have to be accompanied by a "default" value.
I reckon that not all data would need to be loaded from an old save game file - player stats, credits, location, ship and equipment would probably do. Everything else could be default newgame data.
To my understanding, there is no header in the binary save game files, and the bytes have to be read in order. Something that is within my ability, is to write a program that reads a savegame file from version X and creates a savegame file for version Y. Is it possible for me to obtain the savegame file format for versions X, Y etc?
I'd need something like:
<data description> | <num bytes> | <type> | <array size> | <default value> (if this is new data, i.e. not saved/loaded in older versions)
note: num bytes = sizeof(type) * array size
e.g.
player name | 64 | char | 64 | no need for default value
credits | 4 | long | 1 | no need for default value
some new data | 32 | long | 8 | default value: 0, 0, 1, 10, 0, 1, 3, 1000
more new data | 8 | double | 1 | default value: 42.81
I think most savegame data could be copied directly from old to new file, but some might need parsing into variables, processing and then written to new file.
Is it easy for me to get hold of this information? My apologies if there's more to it than I'm thinking!
The savegame file conversion program would be for windows, but anybody would be welcome to the source code.
I'd be willing to have a go at writing a backwards-compatible save/load module for Pioneer, but I suspect there's much more to it than I'm aware of, plus I'd need some help in getting started. A savegame conversion program seems a more realistic task for me. If it works, then it may be possible to integrate it with Pioneer itself.
Please let me know if what I suggest is do-able (or not).
Many thanks to whoever has dedicated time and energy to Pioneer :)
Cheers,
Nick
I played the original Elite, Frontier and Frontier 2 when they were released - their atmosphere and immersion is legendary. I recently discovered Pioneer, and it's the game I've long awaited :)
Real distances, newtonian physics, an enormous procedurally generated universe and modern PC power gives a captivating experience. A feature of Pioneer I am particularly fond of is the ability to do proper exploration of planets and moons in uncharted systems. A big thank you to the developers for the time dedicated to bringing this game to its current impressive state. I may be able to help with the project at some point (I have C++, physics and computer modelling experience, but no games programming experience).
Compatibility of savegame files with future releases is a feature that will greatly enhance Pioneer - in the sense that players will know that the time spent in-game will not be lost (my savegame became incompatible with latest release in early August, so I've got to start again, or forfeit all new features released since then). I did look at the source code to see if I could figure out where the save/load game code was. It's probably much more tricky than I'm thinking - when loading an older savegame file, when attempting to read some data that doesn't exist in the file (added in the newer version) then the code would have to use a default value for the data. So all new data would have to be accompanied by a "default" value.
I reckon that not all data would need to be loaded from an old save game file - player stats, credits, location, ship and equipment would probably do. Everything else could be default newgame data.
To my understanding, there is no header in the binary save game files, and the bytes have to be read in order. Something that is within my ability, is to write a program that reads a savegame file from version X and creates a savegame file for version Y. Is it possible for me to obtain the savegame file format for versions X, Y etc?
I'd need something like:
<data description> | <num bytes> | <type> | <array size> | <default value> (if this is new data, i.e. not saved/loaded in older versions)
note: num bytes = sizeof(type) * array size
e.g.
player name | 64 | char | 64 | no need for default value
credits | 4 | long | 1 | no need for default value
some new data | 32 | long | 8 | default value: 0, 0, 1, 10, 0, 1, 3, 1000
more new data | 8 | double | 1 | default value: 42.81
I think most savegame data could be copied directly from old to new file, but some might need parsing into variables, processing and then written to new file.
Is it easy for me to get hold of this information? My apologies if there's more to it than I'm thinking!
The savegame file conversion program would be for windows, but anybody would be welcome to the source code.
I'd be willing to have a go at writing a backwards-compatible save/load module for Pioneer, but I suspect there's much more to it than I'm aware of, plus I'd need some help in getting started. A savegame conversion program seems a more realistic task for me. If it works, then it may be possible to integrate it with Pioneer itself.
Please let me know if what I suggest is do-able (or not).
Many thanks to whoever has dedicated time and energy to Pioneer :)
Cheers,
Nick