It is too grindy and just pointless... You just click through the same choices over and over, waiting for some new content you haven't seen and most of the time get the same placeholder instead. I really can't imagine if it's even possible to make that kind of free roam good, it's always the same boring and repetitive stuff.
Fix #1: Dynamic descriptions.
Check a global variable to flag the player seeing the "placeholder message" and display it only if it hasn't been seen before. This gives the player dynamic feedback. Also, she no longer rereads messages since all messages are new. The same principle applies to area descriptions and dialogue exchanges.
SugarCube Example:
You enter the area. <<if !$describe_area_name>>
<<set $describe_area_name to true>>
This displays the area description, since you're seeing it for the first time. This text will not re-display when entering this area again unless you set $describe_area_name back to false.<</if>>
Applying conditionals to <<links>> rather than merely to prose is even better.
<<if !$talk_mom>><<link 'Talk to Mom.' 'talk_mom_passage'>><<set $talk_mom to true>><</link>>
<</if>>\
Fix #2: Provide guidance.
Markers and hints assist players by pointing them in the right direction to unlock content, but more importantly it tells them
if there is more content to be unlocked
and when there isn't.
Carmilla's Offer Examples: Mom tells me to talk to Catherine. But when I do, the exchange is unaltered. What am I supposed to think? Is there something missing from my conditional flag (such as the wrong time)? Or should I believe the content simply isn't available yet? I don't know because the game doesn't tell me. On the other hand, asking Carmilla for advice at night is a good example of providing guidance. Though lacking in concrete hints, Carmilla gives me visibility and feedback on my progress.
Popular Example: Image galleries can serve this purpose. If images are locked, you know there are more to find. If they're all unlocked, then you know not to waste your time with continued searching or grinding. There may even be a hint beneath a locked image to reduce headaches.
SugarCube Example:
<<widget 'CarmillaCounterUp'>>\
<<if $carm_count < $max_carm_count>> <<set $carm_count += 1>>
Notification: $carm_count / $max_carm_count Carmilla scenes unlocked.
<</if>>\
<</widget>>
<<CarmillaCounterUp>> displays to the player as "Notification: 3 / 12 Carmilla scenes unlocked."
This widget can even be taken a layer deeper, to accept characters as input arguments and dynamically display scenes counts for any character.
Fix #3: Navigation.
Clicking to navigate vast overworlds with hard-coded passage links can be tedious. An alternative travel method can be implemented into a navigation menu which jumps directly to the desired passage link.
Example:
<<if !$cut_scene>><<link 'Sleep' 'fast_sleep'>><</link>><</if>>
Note: Disallow fast travel during cut scenes.
Fix #4: Content depth and moon logic.
The deeper and wider the available content is, the more there is to discover in the overworld. This makes unlocking content easier and increases immersion. For example, clicking a passage link may trigger one randomized event from a list of possible events and then remove that event from the available list for the next time that passage link is clicked, removing the link when the list empties.
Also, if the trigger flag for unlocking content is ridiculous and unexplained (e.g. Go to the girl's bathroom on a Sunday with a full moon, without anyone telling you to do so), the player will be rightfully annoyed and disengaged. Either make the trigger obvious or at least explain exactly what's required for the unlock to occur.
Fix #5: Passing time.
If content is time-gated (e.g. Event triggers only in the afternoon), it can be annoying to be in the right place at the wrong time. A "waiting button" in a menu which passes time solves this problem by moving time forward without leaving that location or passage.
Fix #6: Streamlining.
If a player clicks on a passage link, it should either be to advance a scripted cut scene forward, dynamically interact with the overworld, or make a meaningful choice such as a decision with consequences. Clicking link after link to accomplish nothing besides passing time feels bad (causing the feeling of grind) and should generally be streamlined.
Carmilla's Offer Example: Let's say I only want to progress with Madison, these are the least amount of links that can move my relationship with her forward one tick: Workout with Madison -> Leave Gym -> Go to Bedroom -> Sleep -> Wake Up -> Go Downstairs -> Catch the Bus -> Get Off Bus -> Go to Class -> Leave Classroom -> Go to Gym -> Madison is Here -> Workout with Madison. All I really want to do is Workout with Madison -> Sleep -> Workout with Madison, but there are
ten other links I also have to click
each time.
These fixes are merely technical, reducing interface friction. Obviously,
good writing will increase the quality and immersion of an overworld through its characters and lore more than any game design can. But good writing is a more complicated topic that likely requires more than a simple comment to do it justice.
Playing the game, I also felt my patience dwindle around day 6-7, primarily because any grind requires proportional payoff (and transparency of what that payoff will be) in order to feel like it's worth it. It's okay to have some grind, but clicking twelve identical passage links each day needs to be balanced with a reward that's better than simply tweaking a couple lines of dialogue within an already samey dialogue block.
Ironically, I know I need to take my own advice here with my own projects and that all of this is easier said than done. But I see a lot of potential in this project and each small optimization will compound into a better and better product each time.