Give the player freedom to manage time?

A place to discuss things that aren't specific to any one creator or game.
Forum rules
Ren'Py specific questions should be posted in the Ren'Py Questions and Annoucements forum, not here.
Post Reply
Message
Author
fierylion
Newbie
Posts: 9
Joined: Sat Apr 25, 2020 12:51 am
itch: fierylion
Contact:

Give the player freedom to manage time?

#1 Post by fierylion »

Are there any example of a VN that gives the player fluid time control? As in they can go through 24 hours of the day (choosing to skip time if needed) and go to different locations as they like. All VNs I played so far limited the player in many ways time-wise, such as player can choose to go to different locations, but the day is only split into 3 parts (morning, afternoon, evening). Are there any VNs that allow you to go through each hour and minute of the day?

I am trying to implement that kind of time freedom in my VN and would like to see how others do it because it is more difficult than I thought. The player has to click the skip time button a lot to go through the day, and it's hard to keep track of which events happen at what time.

User avatar
Jackkel Dragon
Veteran
Posts: 283
Joined: Mon Mar 31, 2014 7:17 pm
Organization: Nightshade, Team Despair
itch: jackkel-dragon
Location: USA
Contact:

Re: Give the player freedom to manage time?

#2 Post by Jackkel Dragon »

That difficulty you're having is why most games (not just VNs) don't include things like day cycles unless it's necessary for the game or mostly aesthetic. If there are three different times of day where events happen, most developers make those the time slots and give the player unlimited time to decide what to spend those slots on. It's easier to implement, easier to track, and most players accept the streamlining of the time system.

Now, if you require a 24 hour day system for some reason, you need to consider a few things. Skipping time freely is one helpful tool, but players may also want to know when and where to go to see events. You have to decide if schedules, reminders, or indicators will help players find locations with events. You'll also need to set up at least three interconnected systems if you want a consistent game flow: the time tracker, a set of locations, and a set of events with time/location conditions. If you're using Ren'Py, this probably means creating custom Python classes and objects to track this data and tie events to labels.

As for how people have already done this... I've not seen it done in any VN I've played. Games with time management and time limits usually abstract the details for the sake of simplicity.
Main Website
Includes information about and links to many of my current and past projects.

Major Game Projects
[Nightshade] Eldritch Academy, Eldritch University, Blooming Nightshade, Flowering Nightshade, Life as Designed
[Team Despair] Corpse Party D2 series

fierylion
Newbie
Posts: 9
Joined: Sat Apr 25, 2020 12:51 am
itch: fierylion
Contact:

Re: Give the player freedom to manage time?

#3 Post by fierylion »

Thank you for your detailed reply! I believe detailed time management is required for my VN based on other design decisions. I was hoping to study a similar work to see how they remind the player of events. But it looks like I'll have to implement my own. I'm thinking of having a simple weekly calendar, for each day I would list the events , each event showing only the event name and their start-end times. I'll also prompt a small reminder 1 hour before each event start. In addition, I might have a grace period of 5-10 minutes late.

User avatar
Alianora_La_Canta
Newbie
Posts: 16
Joined: Tue Apr 06, 2021 8:53 am
Projects: Budacanta
Organization: ImpararBuddy
Tumblr: alianoralacanta
itch: alianora-la-canta
Location: Derbyshire, United Kingdom
Discord: Alianora La Canta#8170
Contact:

Re: Give the player freedom to manage time?

#4 Post by Alianora_La_Canta »

The visual novel I'm developing tracks 24 hours independently of system time... ...though at the moment the demo has a bug/quirk where it is possible to have a 26-hour day when using the computer. (Guess what I'm currently troubleshooting? Also, guess who's planning on having most "days"' activity end before midnight in future to get round this problem and some related ones? And if only we actually could add 2 hours onto our days simply by using our computers...)

A certain amount of the freedom of the 24-hour approach is illusory. You still have to program enough things to do to fill all that time, as well as provide at least some of the player guidance Jackkel Dragon discusses. Time-skipping isn't allowed in Budacanta, though skipping certain events is, but even then I had to be careful to make sure it was clear what was happening. In the demo, the player is also automatically brought to the next "plot event" when I told the player it was going to be time for it to happen. In other words, it's currently impossible to be late for anything. While I am planning on it being possible to miss/delay certain events later on, it's important to make sure players are unlikely to do so by accident.

I'd also recommend not giving the player too many options at once for using their "free time", especially in the beginning. Having just a few options with which to orient oneself makes it much easier to choose one and therefore make progress in the game. You can always gradually add extra options as the game makes progress and your player has plot/character reasons to do additional things. Some parser games have good solutions to the problem of gradually adding more content that can be usefully applied here - The Weight of a Soul is a recent example worth studying.

Mechanically, there are three variables holding the time which need to go between your character list and the main part of the script:

Code: Select all

default day = 1
default hour = 10
default minute = 11
Note the numbers are Budacanta's starting values; you can use any other values that make sense for your game. You'd almost certainly also want:

Code: Select all

default week = 1
(It doesn't handle minutes below 10 very well, a bug I'm currently working around rather than fixing).

At points where it would be possible for the minute to become an hour - actually, that's not currently possible in Budacanta. But it will be, and if I don't find a better way, I am considering the following:

Code: Select all

if minute >= 60:
	$ hour += 1
	$ minute -= 60
As for the hour turning into the next day, the mechanism I'm using is:

Code: Select all

if hour >= 24:
	$ day += 1
	$ hour -= 24
However, to combine them is a bit more complicated, else you find yourself skipping the entire midnight hour:

Code: Select all

if minute >= 59:
	$ hour += 1
        $ minute -= 60
        	if hour >= 23:
                	$ day += 1
                	$ hour -= 24
                else:
                	pass
        else:
            if hour >= 23:
                $ day += 1
                $ hour -= 24
else:
	pass
The full version of Budacanta is only meant to run across 12 days, and does not state-track weeks (though these will be implied by the activities on offer). However, the same concept could also be applied to weeks, as long as you know yourself what number day of the week applies to which day (Ren'Py prefers adding and taking away from numbers rather than words):

Code: Select all

if day >= 8:
	$ week += 1
	$ day -= 7
If you need to know what day of the week it is, you could use a tuple to map each day to a day of the week, though I've never actually done this to check the exact code that does the job.

Anything that moves time on gets the relevant lines of the following:

Code: Select all

$ minute += 1
$ hour += 1
$ day += 1
$ week += 1
Months, if you get that far, will be more complicated and I have no relevant experience to offer. In all cases, if you're setting it on a different world where time works differently, please adjust the numbers to suit.

I was hoping to be able to put in an all-purpose code block along the following lines into the start of the script, with the idea it would automatically check it (this will save a ton of code later on). However, I'm not doing very well with it and won't presume to offer advice on that element.
Last edited by Alianora_La_Canta on Mon May 03, 2021 9:00 pm, edited 1 time in total.

User avatar
tinysamm
Newbie
Posts: 23
Joined: Sun Apr 25, 2021 4:23 pm
Completed: Confession Center, Black Cherries, Scary Gourmet
Projects: Glamour Team Go!
Tumblr: tiny-design
itch: tinysamm
Location: Bellevue, WA
Contact:

Re: Give the player freedom to manage time?

#5 Post by tinysamm »

Very few narrative focused games outside of farming sims (Story of Seasons, Rune Factory, Stardew Valley) implement a full day system. It adds a pretty big constraint on the player in regards to what they can choose to do, and for some it may even lead to a degree of analysis paralysis. VNs that do have this kind of system implemented typically structure time into predetermined chunks, where the player can make specific decisions at certain times, or freely perform actions during others.

The biggest thing to consider is "What is this going to do that makes the game more engaging?" Is the player going to be repeating the same day over and over again? In that case, having preset events at each time may be workable, but the amount of content you'd need to make could quickly outstrip your means. I hope you can find a good solution for your project, and if you're still having trouble finding examples, it may be prudent to look outside of VNs/VN-adjacent works for your inspiration :)
-tinysamm

fierylion
Newbie
Posts: 9
Joined: Sat Apr 25, 2020 12:51 am
itch: fierylion
Contact:

Re: Give the player freedom to manage time?

#6 Post by fierylion »

Alianora_La_Canta wrote: Mon Apr 26, 2021 10:46 am The visual novel I'm developing tracks 24 hours independently of system time
...
Thank you so much for your detailed reply! Sorry I was busy with finals and couldn't respond. I think (like me) you should use a library to keep track of time, rather than incrementing them (and checking them) manually since you won't have to take care of so many edge cases.
tinysamm wrote: Tue Apr 27, 2021 11:11 pm The biggest thing to consider is "What is this going to do that makes the game more engaging?" Is the player going to be repeating the same day over and over again?
I would say even though the player will repeat many routines, it won't be boring due to the context of the game (I can't describe in detail without being nsfw). You are right though, I should provide an option for the player to skip boring routines, maybe an auto skip checkbox next to scheduled tasks.

Right now I have an extremely basic working prototype demo that I want to show you guys to really express how I wanted the gameplay system to feel like. Here is the prototype system link (completely SFW as long as you don't look into the game files) https://fierylion.itch.io/vn-system-tes ... tEsoYFG6mA (Works on phones too)

The game has working basic systems:
- 24 hour day, with the smallest time unit being a minute
- 1 Planned event: the part-time job
- The planned event will show up in your journal and as a notification 30 mins before the event starts
- Basic navigation, map, and scene backgrounds (standard of a basic VN)
- Food system: Player need to eat at least 2k calories daily
- The game keeps track of energy (stamina) which is required to perform some tasks.

User avatar
Alianora_La_Canta
Newbie
Posts: 16
Joined: Tue Apr 06, 2021 8:53 am
Projects: Budacanta
Organization: ImpararBuddy
Tumblr: alianoralacanta
itch: alianora-la-canta
Location: Derbyshire, United Kingdom
Discord: Alianora La Canta#8170
Contact:

Re: Give the player freedom to manage time?

#7 Post by Alianora_La_Canta »

fierylion wrote: Tue May 04, 2021 3:26 am Thank you so much for your detailed reply! Sorry I was busy with finals and couldn't respond. I think (like me) you should use a library to keep track of time, rather than incrementing them (and checking them) manually since you won't have to take care of so many edge cases.
Sorry, I don't understand what you mean by "using a library to keep track of time". Also, I can't tell how your time system works because the game freezes on my computer after the first text box (which is probably before the time system does anything).

The question tinysamm asks is a good one. In my case, what incrementing time on a 24-hour clock gives me is much more granularity, resulting in a more satisfying challenge and more opportunities for exploration - the two big themes of the game - while allowing relatively efficient code. You might think copying some time wraparound code every time the time increments takes lots of space, but nowhere near as much as repeating a room every 10 minutes for (say) 11 days would. I'm not expecting there to be a requirement to go into rooms multiple times in a row, but there are places in my visual novel where it would break suspension of disbelief to prevent it - and also break suspension of disbelief if I split time into large blocks (even 10-minute blocks, at some points, would be too big).

fierylion
Newbie
Posts: 9
Joined: Sat Apr 25, 2020 12:51 am
itch: fierylion
Contact:

Re: Give the player freedom to manage time?

#8 Post by fierylion »

Alianora_La_Canta wrote: Tue May 04, 2021 5:41 am Also, I can't tell how your time system works because the game freezes on my computer after the first text box (which is probably before the time system does anything).
Press the top left arrow to exit the intro scene

User avatar
Alianora_La_Canta
Newbie
Posts: 16
Joined: Tue Apr 06, 2021 8:53 am
Projects: Budacanta
Organization: ImpararBuddy
Tumblr: alianoralacanta
itch: alianora-la-canta
Location: Derbyshire, United Kingdom
Discord: Alianora La Canta#8170
Contact:

Re: Give the player freedom to manage time?

#9 Post by Alianora_La_Canta »

fierylion wrote: Tue May 04, 2021 12:35 pm
Alianora_La_Canta wrote: Tue May 04, 2021 5:41 am Also, I can't tell how your time system works because the game freezes on my computer after the first text box (which is probably before the time system does anything).
Press the top left arrow to exit the intro scene
OK, that enabled me to get past the introduction.

Time is moving even when I'm not doing anything - is that supposed to happen?

There does appear to be some sort of timing system going on. Granted, I don't know what I'm supposed to be doing or get the journal to open, but the time part appears to run.

Post Reply

Who is online

Users browsing this forum: No registered users