daid / EmptyEpsilon

Open source bridge simulator. Build with the SeriousProton engine.
https://daid.github.io/EmptyEpsilon/
GNU General Public License v2.0
528 stars 177 forks source link

Request - Advanced Engineering Station #136

Closed lunerfox closed 2 years ago

lunerfox commented 8 years ago

Right now, the engineering station is able to instantly route power and coolant to any subsystem on the fly, allowing for instant changes to min/max the ship's capabilities.

Such dramatic responses end up feeling game-y, since realistically, coolant and power plants need time to distribute their resources. Which is why I'm proposing the addition of an Advanced Engineering mode.

Similar to the advanced science interface, the engineering station puts limitations on routing power and coolant, rewarding advanced planning and strategy.

All changes to subsystem coolant and power levels is based on set points, which the subsystem will match given some time based on an S-curve.

The Engineer may dedicate additional reactor power and coolant to get faster responses, at the cost of having less coolant to go around.

Fouindor commented 8 years ago

This is a really good idea. But why make a S-curve distribution progression ? Wouldn't a linear progression be good enough ? Maybe instead of "advanced engineering", have a "Distribution speed" parameter which can be Slow/Fast/Instant.

lunerfox commented 8 years ago

@Fouindor Yes I think an S curve might be unnecessarily complex. I would add that distribution speed should be different for adding power/coolant vs. removing.

It should always take longer to increase power (More power, more resistant to change), typically systems want to

leoszeto commented 8 years ago

(Continuing from the last comment)

Typically systems are biased towards the de-energized state, so any setpoints lower then the current setpoint should have a faster response.

It's likely sufficient to just have 2 linear rates (resourceRateUp & resourceRateDown), modified by power level of the reactor (More overall power = Better system response)

Ex: resourceRateUp = resourceRateUpBase + resourceRateUpPwr x PwrSysLvl

daid commented 8 years ago

On engineering itself, as a bigger picture. Currently, it's mostly a straight copy from how the Artemis system worked.

I have a few ideas that could overhaul the whole way engineering (both system management and repairs) work. But the main issue here is keeping the complexity of engineering in par with the complexity of other stations. Currently it's already the station with the most controls and the most things it needs to pay attention to.

lunerfox commented 8 years ago

Completely agree with the design of engineering station being mindful of complexity; Initially I was thinking of the presets Artemis used as a way to reduce it, but that also brings in other issues during play.

Daid, what are some of your thoughts on how engineering station could be overhauled?

daid commented 8 years ago

One complete overhaul idea is to make it like a sort of 2D "Space Engineers"/"Big Pharma" Instead of having coolant, power, and repairs are different "systems" so to say. You build your subsystems out of blocks, blocks for coolant, blocks have heat/health.

Need more engine power? Hook up an extra Flux Invertor and Power Stabalizer to that system. Need a quick boost of beam weapons? Hook up an emergency power booster.

(It's just an idea I'm having. Not sure if it's easy enough to understand for players)

Fouindor commented 8 years ago

It may send up the complexity through the roof it seems, especially for new players.

lunerfox commented 8 years ago

Building off the idea of blocks, maybe part of the Engineer's responsibility is to perform upgrades to the ship.

Taking the concept from FTL, the engineer could start with a number of "Free" blocks, and would put blocks in to upgrade various subsystems. This would allow a higher maximum power to the subsystem, allowing the captain to customize their ship towards a play style.

Subsystems can still be driven beyond their limit, but would be unstable and cause heat buildup. Damage to a subsystem may even cause a block to be destroyed.

Additional blocks can be obtained through the reputation system, providing more uses for the reputation resource.

jozan commented 8 years ago

I do like the idea of wiring. It would make the engineering station more complex of course but it also makes it more unique. And thats what I'd like to see this game heading. Each station is unique and would require a bit of practice to master but not too much. Maybe some kind of difficulty setting can to be implemented for new players?

nallath commented 8 years ago

We already have a bit of a difficulty setting; You can enable certain parts of the game when setting up one (frequencies of shields / beams being one of them). I'd imagine the same to be also possible for the other parts. It does add complexity on our end though; all combinations of enabled / disabled features do need to make sense.

jozan commented 8 years ago

@nallath You're right! To over come complexity of having a lot of options would it be better to unlock options only if certain conditions are met? This way it would be a lot easier to balance the game. Anyway, I'm just writing wild ideas. ;)