endless-sky / endless-sky

Space exploration, trading, and combat game.
https://endless-sky.github.io/
GNU General Public License v3.0
5.84k stars 1.03k forks source link

Request: running game time #3924

Closed Nescio0 closed 6 years ago

Nescio0 commented 6 years ago

Currently the game time advances by one day every time your flagship:

However, you can spend hours in a single system and blow up thousands of ships without the game date and time advancing. Or you could unpark ships at the other end of the galaxy, observe them jumping towards you, and see them arrive in your system on the same day. To me, this is unrealistic and breaks immersion. Why should time stand still if you're flying around? Space fights etc. ought to be time-consuming.

What I recommend and request is the game time to be running continuously (as is done in many other games) and advance a day perhaps every 24 minutes (1440 s) or 1000 seconds (16.67 min) in real time. The game should only be paused when you press Esc. During everything else (flying around, re-outfitting your ships, visiting the spaceport or shipyard, reading missions or other messages, etc.) game time ought to be running uninterruptedly.

Wrzlprnft commented 6 years ago

but would that just shift the immersion break to jumping and trade/mission style gameplay?

Tadrix commented 6 years ago

You do this, and all balancing involving game time vs. real time goes out the window.

reading missions or other messages

I see an issue here. First, not all people read at the same pace. Second, this is a story driven game. People might et frustrated and skip the texts even if they'd like to read them, in this way missing much of the game's content.

Finally, when you are flying, everything in the game is happening in real time (except for hyperspace travel); there's no point in implementing date change every 24 hours because nobody will hang around the same system this long.

Wrzlprnft commented 6 years ago

after thought. game time advancement is bound to -prevent crew/ship number abuses -balance of playstyles -balance of the economy (trading/missions) which in this proposal are currently not adressed.

solardawning commented 6 years ago

Sure, just add in an 8 or 12 hour fast forward when the player hyperspaces/jumps, and keep the 1 day (24h) fast forward on landing. (Makes sense: repairs, refueling, shore leave, brawls at the spaceport bar, etc.) Then you can fit time advancement as proposed in the OP into gameplay within a system, and show an advancing clock during gameplay.

Tadrix commented 6 years ago

Currently, landing doesn't advance the time. Only taking off (and that makes sense too, because you can start unloading your delivery right away usually).

Sure, just add in an 8 or 12 hour fast forward

Why not 11 hours? But that can't be done, because everything in the game is currently based off of one jump taking one day. So following that suggestion it would be more like… say, each jump advancing the clock by 21 hour and 59 minutes (a joke example), Which again brings us to it not being worth it.

What do you need the clock for? There are no timed missions inside the system anyway. Keep it simple.

Wrzlprnft commented 6 years ago

i am not sure wether “adding in-system advance timer“ is included in the “get rid of the time jumps for continous time advancement“ of the OP, but that would work better

Nescio0 commented 6 years ago

To clarify, the running game time is in addition to the current system, not instead of. Every time you go to a different location the date still advances by one day. Meanwhile the clock is constantly running (perhaps 1 s real time played is 1 min game time). If you have e.g. a rush delivery, you should hurry to your destination as soon as possible, not waste time on blowing up pirates or capturing Unfettered ships. Something similar is present in Naev.

jafdy commented 6 years ago

That could spring an extra unexpected day on people as all the time you are flying you are slowly adding up to an extra day. The obvious solution is to reset the timer every time today advances for any reason but that means that if you jump/land at the wrong moment an extra day could advance for seemingly no reason.

MCOfficer commented 6 years ago

i can see a bunch of arguments against it, but i just wanted to throw this idea in: what if time also passes while on a planet? i was thinking about the way oolite handles this: you attach an additional cannon? 5h. new paintjob? 1h. load 30 tons cargo? 30 minutes. etc etc

gunqqer commented 6 years ago

Stuff like that would dis-insentivise trying new builds, especially in times of war like the free worlds when you have a lot more timed missions. We should want people to try new things and not just stick with the same thing

Zitchas commented 6 years ago

While this addition would definitely make the game more realistic, I'm still not seeing any increase in the fun value. It adds a bit of pressure to parts of the game that currently have none, dis-incentivizes experimentation, and makes general exploration of the worlds much less friendly. And there is no reward for doing so - this doesn't add anything, just removes.

(Honestly, this seems like a nerf aimed at players boasting about how they paid off their debt in the first couple days through mining and capturing. Which theoretically can achieve much higher profit margins on a per day basis than any of the alternatives available at the start because they don't rely on doing a lot of jumps to ferry people or cargo. Personally, I don't think that such a change is necessary: ES isn't a scored, competitive, or mp game, after all.)

I could see this being a great addition for veteran players that already have a good grasp of how different things interact and don't need as much time for experimentation.

This would also be a significant break from the EV series, which could be a detriment for those of us who started playing ES because we were looking for a modern version of EV.

solardawning commented 6 years ago

For context: Nescio0 is describing a feature in another game with similar mechanics to Endless Sky; NAEV. I bet that after he played NAEV he thought that the clock fit in and felt more intuitive than the day only advancing on takeoff/hyperspace travel. I'd bet that, because I had the same experience- I played it, and thought 'this feels good'.

However, NAEV also has game mechanics that rely on it (specifically: timed delivery missions between multiple planets within the same system), while Endless Sky only has inter-system missions, and travel in Endless Sky is much quicker in terms of real player-time. (Endless Sky has much faster travel, allows players to hyperspace from anywhere rather than specific exit/entry points to a system, automated landing, etc.)

Zitchas commented 6 years ago

Thanks for the context. It is interesting to know that there is a similar game that does make use of a continuous flow of time like that.

That being said, I think that in this case it is an additional reason to not adopt it: I think it is fairly clear that adding the continuous flow of time would significantly change the nature of the game. While I wasn't a fan of continuously flowing time before, knowing now that there is another similar game out there that does it makes me more reluctant to include it, as this change will simply be making ES more similar to other games on the market, thus losing a bit of its distinctiveness.

If this was a business decision and we were trying to squeeze NAEV out of the market by stealing their customers, sure, maybe consider it. But this isn't a business, and if they use a continuous flow of time like that, their game is going in a different direction than the Escape Velocity series and ES are going. The more they diverge, the less they are competitors to each other, and the more diversity in the gaming market. To me, having a greater diversity in games is a good thing, and we should avoid eliminating differences unless there exists a clear benefit to doing so.

In this particular case, I don't see a clear benefit, and I do see quite a few problems or disadvantages to implementing the continuous flow of time.

MessyMix commented 6 years ago

While I wouldn't say "don't add real-world time flow just because another game is doing it", I too don't see really that many upsides to implementing a mechanic that would require significant work to bring about.

Because, after all, NAEV is an EV clone, and ES is an EV clone, so I don't think it's necessary to actively avoid similarities -- but I think in this case, real-world time flow isn't a viable mechanic.

Nescio0 commented 6 years ago

Actually I didn't want to start a Naev vs ES discussion. I named Naev only as an example to show running time can work. I could have named other games, e.g. Patrician III, Sim City, (Open) Transport Tycoon Deluxe, etc., but those are less similar. However, whether another game did or does something or not shouldn't be an argument either way.

As stated earlier, the primary reason I'm requesting running time is because the current absence of it breaks immersion, at least for me. ES is not really a turn-based game, yet time behaves as such. An additional benefit is that it adds a sense of urgency to rush missions (run away instead of boarding pirates). Furthermore, it would open up new possibilities such as intra-system missions (e.g. pod race against a few NPC alongside a couple of checkpoints; you get a reward if you're the first to finish).

tehhowch commented 6 years ago

I have some comments on "running game time" in boarding-related issues. For example, https://github.com/endless-sky/endless-sky/issues/2978 and https://github.com/endless-sky/endless-sky/issues/871

Note there are some relevant posts in those threads from MZ.

On the subject of continuous time, adding it is not a trivial task. The rebalancing alone would take several weeks for volunteers, playtesting longer. That isn't to say don't try it, just that you will need to put in serious work for the code changes to be considered. I'm sure MZ has other more interesting projects he'd like to add to the game, rather than tear out existing mechanics and add a different one instead.

Nescio0 commented 6 years ago

Although I don't know for sure how difficult it is to actually implement in practice, in theory it's quite easy:

every frame: second++ if(second == 60) minute++, second=0 if(minute == 60) hour++, minute=0 if(hour == 24) day++, hour=0

Lorantine commented 6 years ago

extra calculations for the game and no set idea about landing and jumping yet? nice

Nescio0 commented 6 years ago

To clarify, the running game time is in addition to the current system, not instead of. Every time you go to a different location the date still advances by one day.

Lorantine commented 6 years ago

exactly 1 day so 24 hours, 1440 minutes, 86400 seconds? heard you wanted realism so seems a little sloppy

Nescio0 commented 6 years ago

exactly 1 day so 24 hours, 1440 minutes, 86400 seconds? heard you wanted realism so seems a little sloppy

What are you trying to say? Of course one day game time equals 24 hours game time equals 1440 minutes game time equals 86400 seconds game time, just like there are exactly seven days in a week game time. The exact time rate per frame can be figured out later once the mechanism is in place, but I suggest starting with something easy, e.g. 1 second per frame (i.e. for every 24 minutes real time played one day game time is added), but perhaps a default rate of 2 or 3 would turn out to be better. Added time for actions can be changed later as well, but should currently stay the same (e.g. every time you depart from a planet still one day game time is added, at least for now; later this might be changed to perhaps one hour game time times the size of your fleet).

DingusShingleton commented 6 years ago

While I can appreciate what you want to be able to do with this (timed races and stuff would be pretty neat), I'm not sure this is the way to do it. This would mean that every once in a while while you are flying around a day would just pass while you are sitting there. I think that could be confusing and annoying if you are trying to do rush missions for example. It would be a pain to be like 7 seconds from landing on your target planet and just fail the mission seemingly randomly.

endless-sky commented 6 years ago

This doesn't sound like something that would make the game more fun or interesting. And, it would introduce all sorts of issues, because currently all changes in the game state (planets moving in their orbits, commodity prices changing, mission events, etc.) happen when a day passes. For example, if a day were passing in real-time, all the planets would have to be moving very slowly instead of being stationary, so they wouldn't suddenly "jump" to a new position when the clock rolled over.

Wrzlprnft commented 6 years ago

i think i've come to a conclusion for myself after thinking about it. my main concern is that it takes away the time control of the player. currently, every time advancement is a result of a player action, which results the underlying, maybe subconcious feeling of a rush most real time games have, versus turn based ones. so, it is a way deeper decision to the feeling of the game, at least for myself, than i initially thought, and i vote against changing it from the current system.

Nescio0 commented 6 years ago

It seems the consensus is against. Thank you all for participating in this discussion.