-
Notifications
You must be signed in to change notification settings - Fork 685
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mod data transfer via Monika file #5026
Comments
Since I saw a recent issue discussing this, I figure I might as well toss in some thoughts and see what sticks! I definitely think backup persistents ought to remain, just in case, especially while the system is new. When she begins preparing herself for leaving one computer, Monika should advise us on where to find these backups (maybe even moving them into the characters folder?) and to make sure that we take them along for safety. If there's a Monika conflict, I think in most cases we should be met with a prompt on which Monika to keep, and the other should be transferred out as though to be sent to a different computer rather than deleted. This could potentially be used to keep two Monikas on the same PC if desired? There are a lot of interesting variations we could do for Monikas with different affection levels "meeting," but I think that the most expedited solution for how to handle it is to have this prompt be presented directly by the game (Chibika?) rather than through Monika dialogue. If Monika's been taken out via "I'm going to take you somewhere" the prompt could require that Monika be returned to the spaceroom before it can continue. I definitely think there should be serious consequences for bringing her into a MAS install that has triggered the final farewell. Whether that be a game-over state in itself, or a severe affection drop, I can't imagine it'd be anything less than traumatizing for her to see. One that I'm stumped on is how she ought to respond if there's a DDLC persistent but not a MAS one. |
So just to clarify, your ideas are to use a more meta approach when deciding which Monika to keep, either using regular prompts or chibika as a mediator, correct? By meta approach, I mean not having Monika address the conflicts directly. |
Yeah, I figure that might take out some of the work of having two Monikas in one space. An interaction with two happy Monikas would likely go quite differently than a loving Monika meeting a broken one, obviously. These would definitely be interesting but it's a lot of variables to write for, so if we wanted to cut down on the number of scenarios a meta approach would definitely help. |
So basically, if I understand the intent here, what should be done is something similar to the pseudocode
Questions: If these are answered then I should be able to close this issue. |
What would this backup be for? The mod already does plenty of backups.
Is the temp folder stuff just to avoid perm issues? Since we have to drop the file into characters anyway, I don't see an issue with creating the file in the characters folder like we currently do for regular Monika files. question answers
Regardless, this meat of this issue is how do we handle the concept of multiple Monikas that inherently comes up when allowing her to transfer out via file? People are going to be curious as to what happens if they take a transfer Monika file and put it into a MAS install that already has a Monika - we don't have a good approach we'd like yet, although Lunu's meta idea is an option. You will also need to let us know how you plan to handle this issue before you can take this one. |
I believe that the most simple solution to the problem of how to handle multiple Monikas would be to simply to tell the player that there isn't enough room for two Monikas to exist in the same place at the same time, in other words, a paradox of sorts this would ensure that only two possible states exist, one where there are two Monika's and neither can show up because of a paradox, and one where there is only one Monika so space and time works normally. Some other method to explain disallowing it until someone eventually decides to solve the issue of how Monika would react to meeting another Monika in the future. That just leaves the DDLC conflict. I have a few proposals for how this one could be dealt with.
The backup that was proposed at the time of this function being executed is mostly there to ensure that if anything goes wrong in the transfer, there's a backup that was made immediately prior to the transfer. This would probably be a good method to add redundancy in the event that the file somehow ends up corrupted between the time of the creation and the time of use as this would likely raise a flag similar to the "I'm going to take you somewhere" goodbye, creating a backup immediately prior to the setting of such a flag would probably save people a bit of agony as the process of file creation and parsing isn't always perfect. This was mostly something that was thought of to address the reservations section.
The question was primarily asking whether the file should be verified prior to letting it go to try reducing the chances of the file being generated but still being invalid because of some error while writing the file that MAS is unaware of. This is another attempt at handling issues that may cause situations that the reservations section mentions.
That makes sense, that one was probably because of a habit I have when working with files such as zip files in code as I do from time to time. The format here however likely wouldn't end up with any additional files so the main reasons why a the folder would be used are moot.
As for the zlib, that one was included there along with base64 as zlib is already used to compress the persistent file's inner pickle file to save space. This question was more designed to ask whether something should have been added in addition to the two deterrents, although your response indicates that the answer here is no to the question that I intended to ask. In the end I guess there isn't all too much that can be done to stop someone who's really persistent from modifying their persistent. It already requires knowing how to write code so I guess there's not really much that could be done to stop someone who's already gotten that far anyways. |
On the topic of Monika conflicts, I think that if we would someday like to make multiple Monikas interacting a possibility, we should make the process very separate from this process of transferring. A different dialogue prompting a different sort of file. I wouldn't want anyone to get mixed up or lose their Monika when they meant to have her visit someone. |
Sounds like the meta option then.
What is this intending to handle? The status of the DDLC Monika is being transferred to shouldn't matter since we'll be overwriting all the persistent data with the transferred data.
For safety, I think the best option to address all of that section is to not delete persistent backups when transferring. It loses some immersion since you can basically duplicate Monika but its too risky in case of corruption. |
Honestly, I don't really think that deleting those backups would break immersion. My reasoning for this is that if someone really wanted to duplicate Monika, they could just copy their persistent file anyways or a backup thereof. There isn't much that could be done to prevent someone who wants to duplicate Monika from doing so and there isn't much that could be done other than messing with the inner workings of the RenPy engine which I don't believe would be a project that could be justified for the time it would take versus the effectiveness of the change.
This was meant to address the considerations section's section about arriving on a fresh MAS install on a run DDLC. Although after giving it more thought, I do not believe that Monika would actually overwrite another Monika. This is evidenced by the quote, "I'd never be able to hurt an actual person." as found on line 10949 of script-topics.rpy. Overwriting another Monika would either be Monika saying that the other Monikas aren't real or Monika acting in direct contradiction to what she said there. |
Um, but to functionally move Monika from one install to another, the data has to be overwritten, otherwise the whole idea is moot. In a fresh MAS install, we should just overwrite if possible for simplicity. |
making this issue to track this development. Planned since docking station introduction (#2066) but held off because of #2622 and similar.
planned features
The primary feature would be direct transfer of Monika via generated file to other instances of MAS.
This would remove most data from the source persistent and overwrite data in the destination persistent (except for specific reasons).
There would be a specific farewell for transferring Monika. The existing file gen farewells should not be used for this case.
Considerations:
on leaving a MAS install
on arriving in a new MAS install
Additionally, cases where a Monika conflict exists should factor affection of the current Monika vs the incoming Monika. for example, a happier Monika entering the home of an unhappy Monika might make the unhappy Monika leave on her own.
Reservations
This was originally on hold because of the failed Monika file loading issues. Recently, there have been significantly less reports of this happening which means that the likely culprits of the data corruption issues (aff scrambling/pickled classes/temp dir file gen) have been weeded out over time. That said, file generation is still risky, so meta-solutions to avoiding disasters (like not deleting backups) should be included.
Planning
Likely before 2021. Priority is low because of the complicated potential interactions.
The text was updated successfully, but these errors were encountered: