Filed / Tracking MainDroneBase Space POIs don't use DSL [00716]

Discussion in 'Tracking / Filed' started by ravien_ff, May 24, 2019.

  1. ravien_ff

    ravien_ff Rear Admiral

    Joined:
    Oct 22, 2017
    Messages:
    6,423
    Likes Received:
    12,030
    I don't know if this qualifies as a bug or it's just the way dynamic structure loading works with dronebases. Apologies if it's a known issue or working as intended!

    Mode: Survival
    Mode: Singleplayer

    SERVER NAME: NA
    SEED-ID: Happens on any

    If applicable:
    MODIFIED PLAYFIELDS: Yes (easier to see on custom playfields but should happen on default ones too)

    Reproducibility: Always
    Severity: Minor

    Type: POIs

    Summary: POI Bases under the "MainDroneBase" section of space_dynamic.yaml don't appear to utilize dynamic structure loading.

    Description: When adding custom POI bases to space_dynamic.yaml, POIs that are added under the "MainDroneBase" section will increase memory usage while you're in the playfield even while outside the 3km render range, and will also cause initial lag while first loading the playfield.
    POI bases under the general "POIs" section appear to use DSL and will not increase memory usage while outside the 3km render distance.

    This severely limits how many POIs you can spawn using the "MainDroneBase" section. The drone base is the only way to spawn multiple POIs using group name and have it pull the spawn name from the blueprint files. POIs added under the general POIs section must be added by blueprint file and have their spawn names individually set in the yaml which is a pain. :D

    This is fine under the general POIs section:
    Code:
        - Type: BA_Admin
          Name: [TSO_Variant1, TSO_Variant2, TSO_Variant3, TSO_Variant4, TSO_Variant5, TSO_Variant6, TSO_Variant7] 
          DisplayName: Trading Station
          Faction: Polaris
          Mode: Survival
          CountMinMax: [ 20, 20 ]     
          Probability: 1
          InitPower: True
          Position:
             PosXZMinMax: [1000, 5000]
             PosYMax: 5000
          Properties:
            - Key: Music
              Value: NebularClouds 
    


    The exact same POI would cause much higher memory usage under the MainDroneBase section:
    Code:
              - Name: [TSO_Variant1, TSO_Variant2, TSO_Variant3, TSO_Variant4, TSO_Variant5, TSO_Variant6, TSO_Variant7]
                Count: [20, 20]
                Faction: Polaris  
                FixedMaxSpeed: [20,20]
                Mission: Immobile
                MissionDescription:
                  Name: Immobile
                  Position:
                    PosXZMinMax: [1000, 5000]
                    PosYMax: 5000                
                StockDescription:
                  Name: [SpaceDroneLaser, SpaceDronePlasma]
                  AmountMinMax: [1, 2]
                  ExtraMinMax: [1,1]     
                Properties:
                  - Key: RegenAfter
                    Value: 720                         


    Steps to Reproduce: Create a custom space playfield and spawn a specific number of POIs in the MainDroneBase section and check memory usage in Windows. Then edit the playfield to spawn the same POIs under the general POIs section instead and check memory usage in Windows again. Depending on how many POIs you were spawning, memory usage can be 2x higher or more.

    Screenshots, Crash Logs, any other Relevant Information or Download links: I can create a save game or custom scenario with 2 space playfields to show the difference if requested.
     
    #1
    Andipro likes this.
  2. Pantera

    Pantera Administrator Staff Member

    • Developer
    • Moderator
    Joined:
    Aug 15, 2016
    Messages:
    3,418
    Likes Received:
    6,112
    Hi can you supply a setup to show this like you mention with a save game & scenario please ?
    Thanks.
     
    #2
  3. ravien_ff

    ravien_ff Rear Admiral

    Joined:
    Oct 22, 2017
    Messages:
    6,423
    Likes Received:
    12,030
    I'll get one set up and post it here.
     
    #3
  4. ravien_ff

    ravien_ff Rear Admiral

    Joined:
    Oct 22, 2017
    Messages:
    6,423
    Likes Received:
    12,030
    Here are 2 scenarios and 2 save games.

    Both scenarios or save games spawn you in a space playfield with 30 trade stations (TSO_Variant1) that spawn at least 5km away from the player spawn so they should all be out of render range and unloaded due to dynamic structure loading. The space playfield is identical except for how the trade stations are spawned. The DSLOn scenario or save spawns 30 trade stations using the POIs section of the space_dynamic.yaml, whereas the DSLOff ones spawn the trade stations under the DroneBaseSetup section. Both scenarios were created using seed 25 in the SSG and both save games use seed 25 as well, though seed should not matter in this case.


    Steps to reproduce:
    Start Empyrion (if you're already in it, completely exit the game and restart it so it's a fresh start)
    Start the scenario TestScenarioDSLOn or save game TestSaveDSLOn.
    Check memory usage in Windows Task Manager (for me it uses about 3.4gb)
    Use the map and teleport/godmode commands to see that there are trade stations spawned in the playfield.

    Completely exit out of Empyrion and restart the game.
    Start the scenario TestScenarioDSLOff or save game TestSaveDSLOff.
    Check memory usage in Windows Task Manager again. It will be much higher than previously (for me it uses about 6gb now).
    Use the map and teleport/godmode commands to see that there are the same trade stations spawned in the playfield as the previous scenario.


    Additional info:
    The high memory usage of the TestScenarioDSLOff scenario will continue even after exiting back to the main menu or if launching the TestScenarioDSLOn scenario. Only completely exiting out of the whole game and restarting it will drop memory usage back to the expected 3.4gb.
    You can safely spawn hundreds of POIs under the POIs section of space_dynamic.yaml due to DSL, but attempting to spawn a similar number of POIs under the DroneBaseSetup section will slow your computer to a crawl.

    I assume that freighters and patrol vessels need to stay loaded in memory since they travel around the playfield but stationary space stations shouldn't need to though I don't understand any of the technical aspects of how DSL works.
    Unfortunately the DroneBaseSetup section is the only place you can use the blueprint Groupname and Spawn names when adding POIs to a space playfield. If this DSL behavior can't be improved due to technical reasons, could we get the ability to use groupname and spawn names in the general POI section?

    Thank you for taking a look at this.
     

    Attached Files:

    #4
    Pantera and Pach like this.
  5. Pantera

    Pantera Administrator Staff Member

    • Developer
    • Moderator
    Joined:
    Aug 15, 2016
    Messages:
    3,418
    Likes Received:
    6,112
    Thanks for the simple use case it has been logged & will be looked into.
     
    #5
    ravien_ff likes this.

Share This Page