OoliteProject / oolite

The main Oolite repository.
https://www.oolite.space
553 stars 70 forks source link

Insta-dock time adjustment - does the game simulate 20min activity? #87

Open CmdrBugbear opened 10 years ago

CmdrBugbear commented 10 years ago

Not sure if this has been noticed. I was being a generous citizen flying in-system and decided to escort a Boa and Sidewinder into the main station aegis. Once there, I pushed ahead and hit Shift-C to insta-dock. As expected, my clock jumped forward 20min. I carried out my business and boosted out for my next jump.

I did notice, though, that as I was preparing for jump, the Boa and Sidewinder were still en-route to the station. After a 20+min delay, shouldn't they have docked by now?

So I'm wondering, does the game simulate 20min of activity when you insta-dock?

cim-- commented 10 years ago

No, it doesn't. The only time skip which does partially is that on launch (10 minutes) ships which are currently in the docking approach at the current station are moved to being docked, and ships which have just launched are moved a little out of the way so you don't run into them.

It's not really practical to actually simulate - a simulation cycle (excluding graphics) takes about 5ms to run (heavily variable with computer speed, number of OXPs, etc.), and you need at least 15 cycles per second simulated to give good results. So, a 40 minute clock advance (20 to fast dock, 10 to refuel, 10 to launch) would take between 30 seconds and five minutes to simulate, depending on computer and simulation quality.

Another option - since 40 minutes is a long time in Oolite terms - is to remove everything non-static from the system and re-add fresh population as if re-entering the system. Doing that properly is tricky, though - the ship the player docks with might be non-static itself (e.g. a Behemoth or a Bulk Hauler), and until 1.80 is released and has been out for a very long time, we won't be able to distinguish between static and non-static items anyway. Also making that sort of approach tricky; the 40 minutes is split into completely independent 20, 10 and 10 blocks - you probably wouldn't want to do this for just a 10 minute delay.

talaxian commented 10 years ago

Don't really like that Idea... especially if for example I have a cargo shepherd out in the black somewhere... (even if all the cargo has been picked off by other ships I still like to recover the device itself)

Is there any possibility of speeding up the simulation running in the background while docked? (eg could you effectively run the simulation at at double speed until the time difference is made up) Even if the player isn't docked long enough to make up the entire time difference, it should at least give the player the impression that more time has passed in the outside world than they actually spent trading and catching up on the news.

cim-- commented 10 years ago

It really depends on the PC. The GUI graphics are nowhere near as heavy as the in-flight ones, so on my PC there's plenty of room to run the simulation at about 4x or maybe even 8x while docked without noticeably affecting GUI response. On a slower PC (or the Pandora) with OXPs which add a lot more ships to the system, I'm less sure. Maybe, as you say, it doesn't actually matter exactly how many extra simulation cycles are added in. I'll have more of a think about it.

Another potential catch and note-to-self: the longer you stay in the same system, the more random bits of uncollected debris (alloys, cargo pods) will build up. If we speed up the simulation while docked that might actually reach a significant problem on slower computers. Maybe some sort of cleanup of these is needed.