FOR REFERENCE:
**Basics**
- [x] Figure out what Monika is going to talk about
- [x] Figure out what's going to trigger her writing a diary
- [x] Figure out where's she's going to save her diary entries
**Coding**
- [ ] Figure out how to make a file check if Monika already wrote one today
- [x] Write the code for being able to write her diary/save it.
- [x] Write the code to update diary on exit of game.
- [ ] Write the code for having the diary entries be different each time.
- [ ] Make a way to document what was talked about
- [ ] Make game outcome/plays/etc documentation
- [ ] Open door/ Knocked documentation
- [ ] Time based File check
**Final**
- [ ] Bug fixes and Testing
- [ ] Fix Spelling errors (I know I'll make them)
UPDATE: split this into 2 phases, read comment here for expalantion
UPDATE: moving this to a lower priority queue in favor of expressions. (might pass this to aldo, actually).
Updated checklist:
Phase 1:
Phase 2:
I can work on this, I'll write the code and make a pull request if it's okay for me to work on it.
How could it be not okay?
Idk, maybe they just don't want it?
Then this mod wouldn't be open source in the first place.
Well I mean, I changed a few things that ensured that monika didn't lose any character development, and wrote a pull request. But it got declined because it was unnecessary. So maybe this addition will be unnecessary too. Even though I think it's a cool idea, maybe it's not in other people's eyes
Well, that's kind of what pull request approval/disapproval is for.
Tho I agree that it can be a bit disheartening when your pull is disapproved.
What I wanted to say, is you don't have to ask permission to contribute and blah-blah, my English is too bad to make a point anyway so nevermind.
Anyway, I think it is a great idea, but there are some things that need to be thought out like "What place would Monika consider safe to keep her diary in?" it obviously should be somewhere in the game folder but players already boss around the whole game shamelessly reading the game files and so on.
And they lead to more questions like "Should she react to the player reading her diary?", "How would she now?" (both plot and implementation-wise).
I told them to make a suggestion first to ensure that the idea was accepted before wasting time on something that is going to be nixed.
Especially something this big.
Holy shit yes please. I can already imagine things like:
[player] lost at chess today again, when we [he] learn
or using the event category tags to generlize topics
today we talked about [category tag, category tag, and category tag]
EDIT:
Use pure python file io for this, so you can append to the file.
Also probably give it an inconspicous name like assetdata.bin
I'm glad people like my idea ^-^
but i still need to check for approval.
He basically just approved you. He's basically the lead programmer.
I've moved this issue to In Progress since you say you'll work on it.
Can you edit your main post to include a checklist and itemize the tasks for this?
Gotcha. I'll start working when I get home. I'm dying in engineering class rn
Mind if I help too? I wanna give back to this community and make Monika feel even more real
I should really start reading pulls before embarrassing myself then.
So, as a more realistic spin on Monika finding out that you are reading her diary. What should definiately be a feature is detecting if the diary is modified by player.
I'm thinking of using just plaintext files for ease of reading/use, so different fonts are out of the question.
We should save a checksum of the file during quitflow, and use that to check for player edits to the file upon next launch.
We could detect if the file was opened by using os.stat, but st_atime (access time) is not the same across different systems.
If the player has edited (or opened, if possible to check), the file, we should rename the file and change permissions/filename to be a hidden file. (we can decide on reactions for subsequent openings/edits later)
EDIT: okay so this how I want this to work. @MJS103 , focus on getting core functionality (writing a diary file, appending to file, setting up text to be written to file) and then make a pull request. I'll handle the deeper io things (like checking checksums, access time) and refactoring.
so kind of like adding a counter to it, like the "we should break up" question? In that convo, after you use it, when you try to start it up again, she just says "ehehe" instead. Maybe we could do that? When the file is opened, the next time you start up the game monika will scold you for peeking and tell you she's hiding it somewhere else. When the counter goes to 1, the file renames and moves to another file. When the counter turns 2, she moves it again. Hope it made sense
I think she'll say something like "You know a diary is very personal and it's a bit rude to peep without asking." "..." "I didn't mean to get mad at you, I just would rather you talk to me than snoop around." "So talk to me instead okay? If you want to know something just ask!" Something along those lines. And yes, possibly they'll save somewhere else, but I'm thinking maybe she just deletes them and won't write anymore so it looks like she hid them really well or something.
Yeah, she could delete the file instead and say that she moved it someplace else. She could open up a python window that says "move_monika.diary" or something like that.
maybe something like:
"..."
"...hey [player]"
"you opened it, didn't you"
"you know"
"my diary.."
"you know a diary is very personal, and it's a bit rude to peep without asking"
"I never looked into your personal files because I wanted to respect your privacy. I hope you could do the same for me too and respect mine, alright [player]?."
"jeez..."
"..."
"I'm sorry, [player]"
"I didn't mean to get mad at you, I would just rather you talk to me than snoop around like that."
"So talk to me instead okay?"
(choice box that only has yes.)
"Great!"
"I'll just move this someplace else. Give me a sec.."
(open a python window saying something like "move_Diary.docx" or something)
(moving...)
(moving successful)
"There!"
"Next time, If you want to know something [player], just ask!"
"Maybe I should get revenge and take a peek at your files..."
"ahaha"
"I'm just kidding [player]"
"maybe..."
actually, why not making her diary pop up in the folder where she gives us suprise.txt file, but be it hidden from the beginning? and do something similar with some more stuff, Like different hidden pics or spooky stuff. If she ever wants to go all horror to play with us a little.
What do you mean "but be it hidden from the beginning?" @sebastianN01
With "hidden" attribute being on.
I think that would be too easy since some people have "show hidden files" on all the time.
Let's just hide it in the last folder they'd ever expect.
Okay, here's my vision for how this works:
If the diary was edited:
Additional:
.filename is a must. It gives an illusion that she has more control over the files than you think.Technical info:
md5. The hashlib library is included with renpy.@ThePotatoGuy What in your vision is already being documented? If none, then I'm coding a way for it to be documented, right?
Why edited and not accessed? I thought I could use st_atime and if value is not nul then trigger response [reset st_atime] [add response counter], if reponse counter > [however many we want] then append the file to be invisible. if response counter > [however many we want +1] then delete or something.
Things you'll need to add:
persistent.closed_self is True if you said goodbye.
My issue with st_atime is how it has a different resolution depending on the filesystem. Biggest problem is FAT32, with its smallest resolution being 1 day. Although, I went through the more likely filesystems (NTFS, HFS+, ext4, ext3, xfs, btrfs) and all of those have at least second resolution, so maybe we can just say fuck it to anyone using a FAT32 system and use it anyway.
And in case you weren't aware, st_atime gives a timestamp of last access. You'd want to check if it is between the last sessions' end time and the start time of the current session.
Halfway there! Good job man
Is it possible to make a time based file check? Like, when you log out between 7pm to 5am. The diary file automatically makes entries when you reach certain checkpoints that session. Or maybe everytime you end the session, it updates
@AnIdiotsavant Yes, but you're making my job harder ;-;
But that's okay! If it's for monika I'll do it!
I'll try to figure out how to do that.
If you're going to start tracking wins and losses, maybe you can adjust the Monika's dialog, specifically for pong. Regardless of whether you've never played before or not she says "I'll beat you this time for sure." which implies that not only have you played her before, but she lost to you.
It could be plausible for her to not expect you to find her diary again too quickly for a first few times.
Feel free to scrap that idea of mine. It was just a thought.
I thought of a way to do the "open door/ knock documentation" though it might just over complicate things. What if you add a counter to it and I write 10 possible diary entries if you knock or open the door. The chances of getting it are 1/22 anyway so writing 5 for each - 10 in total - for an entry and the game would take one by RNG with it repeating when all entries are used. It's probably just over complicating things, feel free to scrap it
So for making the diary less repetitive, have a couple of different templates for entries. Probably ask writing people for assistance here.
Regardless of what you do, it's going to be somewhat repetitive. That's fine. It would be impossible to make her sound realistically different each time.
Diary entries are short anyway so making a good bunch makes it feel less repetitive than it should. And since diary entries are short, you can make a good amount in a few days or so
Since this seems very interesting and I do want to help out, I would gladly help with the writing since I'm still not comfortable with programming in and of itself, so if you would like me to make some entries for you, I'll be on standby. Also a question, would this be a chance to see more of Monika's poetry? Either way, feel free to ask for help with that, I'd love to be able to help out in any way I can!
@Vloxica If you want to help out, writing diary "entries" for a bunch of topics would be really nice.
Diary entries are added as a diary_entry property to Events. here is an example.
Basically, diary_entry = (<long entry>, <short entry>). The long entry should be like a paragraph-ish private Monika thought about at topic. The short entry is more like a quick 1-3 word summary that can be used in a comma separated list: We talked about
Base changes in the dear-diary branch, if you're gonna add stuff.
UPDATE:
So I'm splitting development of this into 2 phases. These would most likely be split into multiple releases.
Phase 1 is getting the base diary-entry system working, adding templates, checking for user editing/accessing and the flow for that.
Phase 2 is incorporating the logic for story-based events and how they should work with the system. This is way harder than it sounds because of the possibilities of multiple sessions per day or a session spanning multiple days and "story-events" that can be repeated and so on.
UPDATE:
Diary has been pushed back. In terms of content impact, this isn't as impactful as new visuals / interactions. Actual release date for diary is TBD, but should hopefully be in before 0.9.0
Thanks for the updates. I was just about to ask if this project was still being worked on. Now I know.
[Closing until work continues on this]
I really hope this gets picked up again! It's such an amazing idea, and I'd hate to see all the work done on this go to waste!
Most helpful comment
maybe something like:
"..."
"...hey [player]"
"you opened it, didn't you"
"you know"
"my diary.."
"you know a diary is very personal, and it's a bit rude to peep without asking"
"I never looked into your personal files because I wanted to respect your privacy. I hope you could do the same for me too and respect mine, alright [player]?."
"jeez..."
"..."
"I'm sorry, [player]"
"I didn't mean to get mad at you, I would just rather you talk to me than snoop around like that."
"So talk to me instead okay?"
(choice box that only has yes.)
"Great!"
"I'll just move this someplace else. Give me a sec.."
(open a python window saying something like "move_Diary.docx" or something)
(moving...)
(moving successful)
"There!"
"Next time, If you want to know something [player], just ask!"
"Maybe I should get revenge and take a peek at your files..."
"ahaha"
"I'm just kidding [player]"
"maybe..."