vmo wrote: ↑Fri, 14. Jan 22, 01:35
The difficult thing is almost never serializing and writing the data to disk. The difficulty is almost always that the runtime organization of the data looks completely different from the on-disk representation.
Indeed. But
"my code is a mess, so it performs terribly" isn't an excuse I'd wager any of us are willing to pass up the chain to our superiors.
If that's the assumption -- and I'm not saying it is -- then there's no harm in us presuming to present a better model.
vmo wrote: ↑Fri, 14. Jan 22, 01:35
I would bet that converting from the runtime data model to the on-disk representation is the bulk of the work, which is why saving is CPU bound.
I, good sir, will gladly bet you a Coke.
Thing of it is, it doesn't really matter where the bottleneck lies -- only whether or not it's fixable.
We have a number of industry standards at our disposal, as does the EgoSoft team, and if we know how to wield them...
...well, perhaps we can't write a drop-in replacement, but we can illustrate potential in the hopes it reaches the right link in their proverbial chain.
vmo wrote: ↑Fri, 14. Jan 22, 01:35
Ehli's post on the other thread is the explanation that IMO is most likely the closest to the actual situation.
Aye... aye.
And if he or she had portrayed as much in the manner of portent to which they seem to believe to carry themselves, it might have been more well received.
But... frankly... it seemed like every time Ehli took a swing... Ehli punched Ehli in the nose... and I was more than happy to let that happen
Still, we're working in hypotheticals here.
For as much as I believe that Ehli knows the material, the assumption that I do not...
...or more to the salient point, that players have no right to question the current inner workings...
is equal parts hypothetical and ridiculous.
- Imperial Good estimated that there's an ECS (entity-component system) at play, to which we have no direct working knowledge -- simply based on savegame tag notation -- and the assumption at least feels likely, even if they don't consider it a wholesale "ECS" in-house... though if it was a wholesale ECS, then the runtime data model should be inherently easy to serialize.
- I estimated that libxml2 was the most likely serialization mechanism, and upon further inspection, was correct -- and I'm hoping I'm not the only one on this forum who knows how to use it... it's simple, but there are a number of potential performance hacks.
- We've already determined that multi-threading savegame compression pigz-style is at least a viable option given the current library in use (zlib) -- though we've yet to determine the beneficial magnitude of such a change.
I can't say we're
certainly going in the right direction.
It's a series of stabs in the dark -- best guesses -- but those best guesses are made with a general assumption of developer skill level, a toe-deep knowledge of available tools, some background in at least tangentially related fields, an internet full of resources and best practices, and, hopefully, some good intentions (yeah, yeah... go ahead and tell me what's paved with what... my sentiment stands).
Everyone chiming in appears to have a different background, and that's great.
But no one person's background -- unless it's
as a developer at EgoSoft -- will properly qualify any of us to make hard assertions.
...and even then... wouldn't that just be asking someone stuck in the middle of the Minotaur's Maze for the quickest way out? ...a fellow traveler mired in quicksand to throw us a rope?
No, I don't know that we're moving in the right direction.
I do know that I don't shy away from "impossible" problems...
...and here we've got significantly more than
an army of one to work with.
Save times have been bugging players for years, and I never underestimate passionate players.
vmo wrote: ↑Fri, 14. Jan 22, 01:35
We can only guess at the runtime data model, which is why I said earlier that it's unlikely that we can offer any useful "help" to Egosoft on this matter.
All we have to do is provide reasonable, viable, and (most importantly)
working models to prove that our goals can be accomplished, at least under ideal conditions, and hope that they can make said conditions a reality.
But communication is paramount. Civil discourse has moved a mountain or two before