naev / naev

Naev is a 2d action/rpg space game that combines elements from the action, rpg and simulation genres.
https://naev.org
Other
834 stars 202 forks source link

[Proposal] Difficulty Setting #1772

Closed bobbens closed 2 years ago

bobbens commented 3 years ago

Currently the current difficulty setting is a choice the player is given at the beginning on whether to use 0.5 time modifier or not (as in everything happens at half the speed). I think this has several issues:

  1. You can't change difficulty in-game
  2. The setting makes the game significantly slower, although out-of-combat parts are mainly mitigated with autonav.
  3. It is not really a very strong advantage, and doesn't really scale to extreme values, e.g., you couldn't make a very easy mode that would be 0.25 time modifier without it being fairly unplayable.

Given that we recently implement intrinsic ship stats 961d7afbd57babf6b546f91972e2c29eb01eb2a9 , I would propose using that to give difficulty modifier instead. I would suggest the following changes:

  1. Have the difficulty in the option settings. Have it only visible when a pilot is loaded and allow it to be changed at any time (it is a single player game after all, and if people want an option to disable this it could be provided during game creation).
  2. Have several difficulty modes consisting of either bonuses or maluses to all ships belonging to the player faction (including the player). Something like the following could work

Note: armour/shield/energy would include both max values and regen.

LJDude commented 2 years ago

tl;dr: Some things you could modify in addition to these are enemy spawn rates, safe lane effectiveness, and stealth & detection effectiveness. Oh, also extreme mode just for kicks and giggles.

I must say, I like the names you came up with, and my idea already lines up with... well, actually just one of these points. Now that I think of it, buffing/nerfing the player would probably be a lot easier than buffing/nerfing every other ai ship in the game like in my idea. You'd just set up some sort of global modifier for all the ships & outfits etc. or something, I don't quite know how this game works. I'm curious to see how you'd implement it.

Something I'd add to this is the spawn rates of enemy ships: I would set it up so that the amount and strength/class of ships is decreased somewhat for the easy modes and increased for the harder modes.

One thing I forgot to mention in my discord post is safe lane mechanics. In the easier modes you could make it so that pirates stay even further away from safe lanes instead of however far away they'll stay once safe lanes are finished. The reverse goes for the harder difficulties: the harder the mode, the less effective the safe lanes.

One last thing you could potentially modify for this is the effectiveness of the players' stealth and detection. In the easier modes, the players detection would be increased and either the detection of other ships or the time to be detected would be decreased. Vice versa goes for the harder modes.

Another difficulty you could potentially add to this just for kicks and giggles is extreme. This mode wouldn't have safe lanes, stealth is so skewed it's basically useless, the stats you brought up would be murderous, and the spawn rates are so wild you'd have pirate kestrels in gamma polaris. I don't really know, I'm just spewing at this point. At the end of the day, this is your game (and yeah, it is open source, but I don't know how to code).

LJDude commented 2 years ago

Ah right, one thing I forgot to mention here is the speed setting. Considering that we already have controls for increasing the speed (pressing `), why not have something similar for slowing down? Pressing shift + ` would 0.5x speed and then 0.25x speed, similar to how the increase works. Perhaps it could be incorporated so that only the easier modes get access to these speeds (i.e. story mode can go down to 0.25x, easy mode just to 0.5x, and then normal + just has speedup), or maybe not since there would already be some modifiers for those modes. Another idea for how this would control is that when you've set a speedup, pressing shift + ` would either bring it straight back down to 1x (i.e. pressing it on 2x or 4x would bring it to 1x and from there goes to 0.5x etc.) or could just bring it down a notch (e.g. pressing it on 4x would bring it to 2x). The reverse would be the same for pressing ` normally. The notches sounds a lot simpler to me. The question from there is whether to keep the cycle from 4x -> press ` -> 1x or change it to not go anywhere (it get maxed out) or have it go all the way to 0.25x (the entire thing is a loop).

bobbens commented 2 years ago

Did the base implementation, the specific values and difficulties modes probably need significant modifications.

bobbens commented 2 years ago

Ok, did it a bit more proper. Can probably close this :)