Numeric game difficulty controls

Discussion in 'Suggestions' started by Darinth, Feb 3, 2021.

  1. Darinth

    Darinth Commander

    Joined:
    Jan 11, 2021
    Messages:
    109
    Likes Received:
    96
    ### --- Difficulty settings ---
    ### Notice: Changing some of the difficulty settings require to start a new game in order to take effect
    ### - PLAYER -----------------------------------------------------------------------------------
    ### Determines the content of your equipment when you start a new game
    ### Possible values: Easy, Medium, Hard
    # DiffEscapePodContent: Medium

    ### Influences the overall player progression speed by earning more or less XP
    ### Possible values: Faster, Normal, Slower
    # DiffPlayerProgression: Normal

    ### Influences the speed of degradation when using weapons and tools
    ### Possible values: Low, Normal, High, Off
    # DiffDegradationSpeed: Normal

    ### Sets the backpack drop mode on death of players
    ### Possible values: DropNothing, DropBagOnly, DropEverything
    # DiffPlayerBackpackDrop: DropEverything

    ### - LIFE STATS -------------------------------------------------------------------------------
    ### Influences the speed of food consumption
    ### Possible values: Low, Normal, High, Off
    # DiffFoodConsumption: Normal

    ### Influences the speed of oxygen consumption
    ### Possible values: Low, Normal, High, Off
    # DiffOxygenConsumption: Normal

    ### Influences the impact of temperature and radiation on the player
    ### Possible values: Low, Normal, High, Off
    # DiffRadiationTemperature: Normal

    ### - RESOURCES --------------------------------------------------------------------------------
    ### Influences the average amount of ore that a deposit contains
    ### Possible values: Rich, Normal, Poor
    # DiffAmountOfOre: Normal

    ### Influences the average number of deposits per planet
    ### Possible values: Plenty, Normal, Few
    # DiffNumberOfDeposits: Normal

    ### - ENEMIES ----------------------------------------------------------------------------------
    ### Influences the overall difficulty when attacking enemies
    ### Possible values: Easy, Medium, Hard
    # DiffAttackStrength: Medium

    ### Influences the overall number of drones that are present on a planet
    ### Possible values: Low, Normal, High, Off
    # DiffDronePresence: Normal

    ### Influences the frequency of the drone base attacks
    ### Possible values: Low, Normal, High, Off
    # DiffDroneBaseAttack: Normal

    That's the difficulty options taken from the gameoption_example.yaml. The problem that I have with it is that, in many cases, there's no way to know exactly what they do. Now I acknowledge that some of them there's not a good way to know, as an example I believe I ran across a post somewhere that says DiffEscapePodContent is controllable via the scenario. Those specific phrases each can have a specific set of items assigned to it.

    Many of these properties, however, could've been numeric and more detailed. DiffAmountOfOre could've easily been a numeric multiplier. 1.0 means 'normal' or 1x. 1.5 means 50% more, 0.25 means only 25% of normal, etc...

    DiffAttackStrength I'm assuming modifies health and attack power of enemies, but I'm not completely certain. If that's correct, it should probably be split into a DiffNpcDamage and DiffNpcHealth, with each one being a multiplier. It'll allow both way more fine-tuning to the server difficulty and more intuitive knowledge of what these properties do.
     
    #1
    Track Driver and ravien_ff like this.
  2. Track Driver

    Track Driver Rear Admiral

    Joined:
    Jun 28, 2016
    Messages:
    798
    Likes Received:
    1,591
    I don't want to go anywhere near those files:eek:, but I like what you propose.
     
    #2
  3. Kassonnade

    Kassonnade Rear Admiral

    Joined:
    May 13, 2017
    Messages:
    2,816
    Likes Received:
    4,111
    Just take a look at some of the game's default playfields and you will get some kind of idea why things are never as simple as we can imagin. When I read that a "stamp" is given a thousand tries just to make sure it will spawn while all others have small values, it points to something more complex than simple algorythms. Another example is that POIs and items "at the top of the yaml" have better chances to spawn than the following ones, and the further down the list some things are the less chances they have. This can be explained by the fact that the "rules" apply to playfields that range from 32 km2 to 2048 km2, so simply "doubling" values would not translate well to make things look similar from a class 2 to a class 5 planet. Making content for class 2 and class 3 to be sufficiently "dense" could easily feel too sparse on a class 4 or class 5, and inversely making relatively dense content on a large playfield is garanteed to drop many things out on a small playfield.

    Because the playfields are generated by a procedure that injects some amount of "randomness" and to avoid having everything packed into one spot or strangely aligned on playfields, there are some "rules" that specify "not in X area/ biome" or "not closer/ further than X distance from Y" and this is what can cause problems when trying to pack everything on a small playfield. I speculate that by putting some numbers in the gameoptions.yaml, Eleon would just get more feedback from "numbers not being respected" while in fact there is no way to garantee this, because terrain is generated first, then all the deco and POIs "try" to get placed, and I'm sure the floor in Eleon's office is covered with hair pulled off from rage and despair... ^^

    I still remember when they first tried to make "everything dock to everything" work...

    For "DiffAttackStrength" you can have a look at FactionWarfare.ecf to get an idea how many values interact with each other, and also to EClassConfig.ecf where individual components are defined. It is a bit more complex than simple hitpoints per entities.
     
    #3
    Last edited: Feb 4, 2021

Share This Page