shovelmonkey wrote: ↑Wed, 5. Jan 22, 04:55
Most good debates benefit from a devil's advocate. Imperial Good's replies seem to be met with good natured responses from the OP. In fact, from the untrained eye it would seem to be quite the friendly battle. Something lacking these days. Probably why I'm enjoying it.
Hah, and here I thought
I was the one playing Devil's Advocate by starting the thread
Anyway -- debate yes, battle no. We're on the same side here. We both want to see what's best for the game.
Falcrack wrote: ↑Wed, 5. Jan 22, 01:33
xixas wrote: ↑Tue, 4. Jan 22, 22:53
...
Imperial Good's doing their best to shoot holes in said proposal
Imperial Good does his best to shoot holes in every proposal, no matter how sensible it may be, it's a recurring theme I've noticed, although he seems to prefer shooting holes in proposals that come from me!
This was, indeed, intended as a good-natured ribbing.
Moderators are the team's gatekeepers on the forum. It's their purview to catch and reign in the ridiculous before requests get out of hand or threads go off the rails.
If the conversation requires double Devil's Advocate, so be it
iznogood wrote: ↑Wed, 5. Jan 22, 00:25
I agree creating a world snapshot, and serializing it to xml, while the game is running might be extremely hard BUT:
Currently the world is paused while this happens, and that might be acceptable if the game at least made proper use of the available cores.
So... I start with the big ask, and then you come in with the soft sell?
Suppose I could be on board with that strategy, lol.
Please pardon me if I don't give up just yet, though.
I do, however, believe the conversation's reached at least a temporary impasse.
Given enough time, I can cut a performant path around almost any obstacle, but I think we've gone full circle back to where the conversation began.
Neither of us have eyes on the code, so neither of us can define
precisely what the obstacle is... so
Imperial Good has no choice but to tow the proverbial line --
i.e.
"it's too complicated to explain why, but it's just not possible"
And without further information, that's the safe default -- it gives deference to proven developers' rationale and protects their time to work on what they believe they
can accomplish.
What it does
not do, however, is bring us any closer to improving or explaining a long standing community grievance.
Improving would be preferable, while explaining would allow further community discussion and/or brainstorming.
Whether the team wants that kind of granular scrutiny at the moment is a separate question.
Community engagement and walled garden approaches are both viable ways to make a great game, and it depends heavily on strength of vision.
It doesn't seem like the team's lacking in product vision, or that they're floundering for new features. The release cycle is steady.
So community engagement's not necessarily the best thing right now, especially while they're pushing hard on 5.0.
In that light, if we're to discuss it, I'd like to take the pressure off and say I think the discussion should be had for discussion's sake -- not necessarily for the sake of getting something done
right now.
--
So, someone correct me if I missed something, but I think here's what the community would like to see in regards to the save feature, in order of biggest to smallest ask:
- Backgrounded saves that don't interrupt play -- the topic of this discussion
- Action queues -- the ability to use the map and command screens to queue up additional actions as if the game were paused
- Multi-threaded serialization -- shorten the save time by dividing serialization processing
- Multi-threaded compression -- shorten compression time for compressed saves by dividing compression across multiple cores
I still firmly believe #1 is possible, but it may require someone semi-specialized in performant data packing, and would certainly be a time sink for both Dev and QA.
I haven't seen too much discussion on the second topic (please link if I missed that thread).
It might be a pain to queue up events like that, but if the UI's already written as an event messenger then it may only require a secondary UI state processor capable of reading and applying a message queue on top of the frozen data in real time.
The rationale against #3 (that it's non-trivial) is effectively the same as for #1, minus the potential performance implications and huge QA time sink.
It requires significant testing, but from QA's side that test is mainly saving and loading complex data sets on a loop -- non-trivial, but not quite
"is the -entire game- still running correctly" like with #1.
If non-triviality is really all it is, then it'd be nice to see this scheduled as a future todo instead of writing it off as undoable.
I'm not sure why #4 isn't already a thing. Almost all modern compression libraries have an option to compress across multiple threads.
Do we happen to know what version of what library is used for save compression?