Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: Run calendar/worldgen at certain intervals rather than continuously.  (Read 995 times)

Chevaleresse

  • Bay Watcher
  • A knight, returned from a journey weary and long
    • View Profile
    • Patreon

As the title says: run the calendar progression (or full worldgen with protection for your fortress) once or a few times per year rather than a constantly running thing. This would make larger worlds a lot easier on the computer, as well as possibly allowing full worldgen instead of the partial implementation that the calendar has.
Logged
GM of Trespassers V2.
If you like my work, consider becoming a patron. (Since apparently people think this is a requirement: no, my game(s) are free to play and always will be.

neblime

  • Bay Watcher
  • More GG more skill
    • View Profile
Re: Run calendar/worldgen at certain intervals rather than continuously.
« Reply #1 on: July 31, 2014, 11:55:40 pm »

Do you mean while you're in fortress mode?  that might be a bit wierd if you never play certain parts of the year, or miss whole years in a row.  that means invasions and other events will wierdly not happen or be delayed, unless your fort isnt protected which also doesnt sound much fun
Logged
http://i.imgur.com/Gv6I6JO.png
I am quite looking forward to the next 20 or 30 years or so of developmental madness

Chevaleresse

  • Bay Watcher
  • A knight, returned from a journey weary and long
    • View Profile
    • Patreon
Re: Run calendar/worldgen at certain intervals rather than continuously.
« Reply #2 on: August 01, 2014, 12:07:46 am »

Do you mean while you're in fortress mode?  that might be a bit wierd if you never play certain parts of the year, or miss whole years in a row.  that means invasions and other events will wierdly not happen or be delayed, unless your fort isnt protected which also doesnt sound much fun

I suppose with invasions actually, yknow, existing now that might be an issue. My idea is this:

Suppose we have a fortress in its fifth year or so. When that fortress hits winter, the game stops for a moment and computes everything that happened during autumn. If the conditions are right, it will trigger an invasion (or multiple ones, if you're unfortunate) and other events that should be coming into effect.
Logged
GM of Trespassers V2.
If you like my work, consider becoming a patron. (Since apparently people think this is a requirement: no, my game(s) are free to play and always will be.

Scruiser

  • Bay Watcher
    • View Profile
Re: Run calendar/worldgen at certain intervals rather than continuously.
« Reply #3 on: August 01, 2014, 12:40:50 am »

Hmm... isn't this just focusing the lag and delay onto a single moment?  Like normally the world-gen is spread out across each day of in game time, with a little FPS loss continously.  This suggestion would give one huge burst of lag all at once as the game sits there for like a couple of minutes?  Explain if you have any optimizations or ways of avoid this problem.

The other problem I see is that this solution will become increasingly hackish and buggy as more features are added to worldgen that interact with the fort.  Right now, it is only trade, liaisons, migrants, thieves, snatchers, and invasions.  But what about when there are travelers leaving and entering regularly to visit the tavern?  Or military dwarfs traveling on and off map regularly to train the hillocks dwarfs?  Or when fortress wildlife is synced up with the world's wildlife and migrations pass through?  It seems like there are a lot of cases like this that break or become hard to handle if you only update world-gen once a month.

Third minor issue is that it makes the game predictable.  The player knows that between the start of each season, they are totally safe from the outside world-gen.  They could open up their gates, do stuff outside, then seal themselves off before the start of the next season. 

If you can answer those three issues well, I will be more open to the idea.  But right now I see it causing more problems than it is worth.
Logged
Things I have never done in Dwarf Fortress;

- Won.

KingKaol

  • Bay Watcher
  • This is a magma.
    • View Profile
Re: Run calendar/worldgen at certain intervals rather than continuously.
« Reply #4 on: August 01, 2014, 07:36:55 pm »

Invasions/events wouldn't have to happen all at the same time, they could be pre-calculated to occur at some future day during the upcoming season.
Logged

samanato

  • Bay Watcher
  • @ Gardevoirite
    • View Profile
Re: Run calendar/worldgen at certain intervals rather than continuously.
« Reply #5 on: August 01, 2014, 09:44:58 pm »

Invasions/events wouldn't have to happen all at the same time, they could be pre-calculated to occur at some future day during the upcoming season.

That would actually be less than desirable I feel.  Players in .34.11 and before have already rigged automatic death-traps to go off in the late season, and knowing exactly (or even approximately!) when a siege will come after the liaison's arrival only makes this easier. 
Logged

Chevaleresse

  • Bay Watcher
  • A knight, returned from a journey weary and long
    • View Profile
    • Patreon
Re: Run calendar/worldgen at certain intervals rather than continuously.
« Reply #6 on: August 02, 2014, 02:50:48 am »

Invasions/events wouldn't have to happen all at the same time, they could be pre-calculated to occur at some future day during the upcoming season.

That would actually be less than desirable I feel.  Players in .34.11 and before have already rigged automatic death-traps to go off in the late season, and knowing exactly (or even approximately!) when a siege will come after the liaison's arrival only makes this easier. 

They wouldn't be set to occur specifically at the same time every year; the timing would be determined while worldgen ran.
Logged
GM of Trespassers V2.
If you like my work, consider becoming a patron. (Since apparently people think this is a requirement: no, my game(s) are free to play and always will be.