plans

This part of the configuration file is best left auto-generated from within the Server Manager.

Your server installation includes the /ServerManager web application with which you use configuration files to generate game sessions to which your players/users can connect. After you've created a game session, you'll find an 'Export with Current Plans' button in the ServerManager when viewing that game session. Pressing this button will export all plans created on this game session in a new configuration file and offer that file for immediate download.

This page thus only serves as a reference / check for all the data that the Server Manager auto-generates.

"plans": [
     {
       "plan_id": 1,
       "plan_country_id": 1,
       "plan_name": "NS_ENERGY_STARTING_PLAN_GREEN",
       "plan_gametime": -1,
       "plan_type": "1,0,0",
       "plan_alters_energy_distribution": 0,
       "layers": [],
       "grids": [],
       "fishing": [],
       "messages": [],
       "restriction_settings": []
     }
]
Field Type Description
plan_id int Unique identifier of the plan
plan_country_id int Unique identifier of the country/team to which this plan belongs.

1 being the administrator user, 2 being the region manager user. See also the datamodel > countries documentation.

plan_name string Name of the plan, as shown in the game client's plan list.
plan_gametime int Simulated month set as this plan's implementation date.

Setting this to -1 turns this plan into a so-called 'starting plan', i.e. a plan defined during the Setup state of the simulation, being basically the month before the official starting month/year as defined in datamodel.

plan_type string A comma-separated list of exactly three integer representations of booleans.

The first integer/boolean represents whether or not this plan involves the CEL energy simulation. The second integer/boolean represents whether or not this plan involves the MEL ecosystem simulation, as it affects the fishing fleets' country effort divisions. The third integer/boolean represents whether or not this plan involves the SEL shipping simulation.

plan_alters_energy_distribution int An integer representation of a boolean to indicate whether the plan includes a change to country-specific energy expectancies, relevant to the CEL energy simulation.
layers object[] List of layers for which geometry was added, altered or removed, as part of this plan. Explained further below in a separate paragraph.
grids object[] List of energy grid (orchestrated by the CEL energy simulation) that were created, altered or removed, as part of this plan. For CEL every (set of) energy source(s) properly connected through cables to every (set of) energy sockets is a grid. So any grid can be as simple or elaborate as the user/player wants it to be. Explained further below in a separate paragraph.
fishing object[] List of fishing fleets' country-specific effort divisions that were altered by this plan. Explained further below in a separate paragraph.
messages object[] List of messages specific to this plan that were sent around by different users. Explained further below in a separate paragraph.
restriction_settings object[] List of shipping safety zone restriction definitions, i.e., any planned safety zones for shipping around e.g. wind farm areas, or any other layer.

layers

    "layers": [
         {
           "layer_id": 89,
           "name": "NS_Wave_Farms",
           "layer_editing_type": "sourcepolygon",
           "geometry": [
             {
               "geometry_id": 9127,
               "FID": "08b3e76d-f60e-424a-af12-a82f343634b2",
               "geometry_persistent": 1682,
               "geometry": "[[3607758.75,4075406.75],[3609889.75,4075645.75],[3608873.25,4070194.0],[3606851.75,4070554.75]]",
               "data": {
                 "value": "0",
                 "Type_1": "Turbine 30 MW/km2",
                 "Name": "Wave farms",
                 "starttime": "2008",
                 "Title": "Wave farms"
               },
               "country": 3,
               "type": "0",
               "base_geometry_info": {
                 "geometry_id": 9127,
                 "geometry_mspid": 6647,
                 "geometry_persistent": 1682
               },
               "cable": {
                 "start": {
                   "geometry_id": 9136,
                   "geometry_persistent": 9136
                 },
                 "end": {
                   "geometry_id": 9180,
                   "geometry_persistent": 9180
                 },
                 "coordinates": "[3607758.75,4075406.75]"
               },
               "energy_output": [
                 {
                   "maxcapacity": 32265329,
                   "active": 1
                 }
               ]
             },
             ...
           ]
           "warnings": [],
           "deleted": [
             {
               "geometry_id": 8111,
               "geometry_mspid": 0,
               "base_geometry_info": {
                 "geometry_id": 8111,
                 "geometry_mspid": 17279,
                 "geometry_persistent": 8111
               }
             }
           ]
         },
         ...
Field Type Description
layer_id int Original unique layer identifier.
name string Name of the layer, originally derived from when the server used the meta > layer_name definition to create the session from which this plan was subsequently exported.
layer_editing_type string See above and meta > layer_editing_type.
geometry object[] A list of geometry that are involved in this layer of this plan.
→ geometry_id int Original unique geometry identifier.
→ FID string Original unique geometry FID string (if it was available when the server obtained the layer data from GeoServer to create the session from which this plan was subsequently exported).
→ geometry_persistent int Original unique identifier of the geometry from which this geometry might have been derived.

When a user makes a plan and adds new geometry to it, there is no pre-existing geometry from which this new geometry is derived. In that case the geometry_persistent and geometry_id values are identical. When a user makes a plan and alters existing geometry in it, there is pre-existing geometry from which this new geometry is derived. In that case the geometry_persistent refers to the original, pre-existing geometry, and the geometry_id is (still) the unique identifier of this planned alteration to the geometry.

→ geometry string GeoJSON coordinates of the geometry (point, line, polygon) at hand, based on the projection system at hand.
→ data object Any geometry data properties / variables. Can literally be anything, it depends on what was stored at and thus imported from GeoServer when the server first created the session from which this plan was subsequently exported.
→ country int Unique identifier of the country/team which owns this geometry. The country/team identifier should of course still exist in this configuration file. See datamodel > countries.
→ type string String representation of the integer identifying the type layer type to which this geometry belongs. The layer type should of course still exist in this configuration file. See meta > layer_type.
→ base_geometry_info object References to identifiers that persist between sessions created by a single configuration file, allowing the server software to map geometries properly to each other again when this plan is imported upon session creation.
→ → geometry_id int Original unique geometry identifier. Is not necessarily the exact same every time a session is created.
→ → geometry_mspid int Original unique geometry MSP identifier. Is always the exact same every time a session is created. If empty, then the server knows that this geometry is newly created by this plan.
→ → geometry_persistent int Original unique identifier of the geometry from which this geometry might have been derived. Is not necessarily the exact same every time a session is created. See also previous geometry_persistent remark.
→ cable object Keep null if this geometry is not a energy cable of which the CEL energy simulation should be aware for its grid calculations.
→ → start object References to the geometry that serves as the starting connection point for this cable geometry. E.g. a wind farm polygon.
→ → → geometry_id int Geometry_id of said starting connection point.
→ → → geometry_persistent int Geometry_persistent of said starting connection point. See also previous point about this variable's relation to geometry_id.
→ → end object References to the geometry that serves as the ending connection point for this cable geometry. E.g. a landing station / socket point.
→ → → geometry_id int Geometry_id of said ending connection point.
→ → → geometry_persistent int Geometry_persistent of said ending connection point. See also previous point about this variable's relation to geometry_id.
→ → coordinates string GeoJSON coordinate of the point that represents the start of the energy connection. Required by the CEL energy simulation to do its calculations.
→ energy_output object[] Maximum capacity of this geometry.
→ → maxcapacity int Maximum capacity expressed in Watt.
→ → active int Whether this maximum capacity is the active one. Always 1 in this plan configuration context.
warnings object[] Always empty as of v4.0.2. Previously any plan warnings listed here would be imported, but it was deemed unnecessary and risky to continue, as all warnings are generated by the client, not the server.
deleted object[] Any pre-existing geometry that this plan is deleting.
→ geometry_id int Geometry_id of the geometry marked for deletion. Is not necessarily the exact same every time a session is created.
→ geometry_mspid int Geometry MSP id of the geometry. Bit confusing in this context.
→ base_geometry_info object References to identifiers that persist between sessions created by a single configuration file, allowing the server software to map geometries properly to each other again when this plan is imported upon session creation.
→ → geometry_id int Geometry_id of the geometry marked for deletion.
→ → geometry_mspid int Geometry MSP id of the geometry.
→ → geometry_persistent int Geometry identifier of the geometry from which the concerned geometry was derived. See also earlier geometry_persistent remark.

grids

    "grids": [
         {
           "grid_id": 1,
           "grid_persistent": 1,
           "name": "Red-Orange Inter 2",
           "active": 1,
           "energy": [
             {
               "country": 4,
               "expected": 31875755
             },
             {
               "country": 7,
               "expected": 0
             }
           ],
           "removed": [
               {
                   "grid_persistent": 9166
               }
           ],
           "sockets": [
             {
               "geometry": {
                 "geometry_id": 9167,
                 "geometry_persistent": 9167
               }
             },
             {
               "geometry": {
                 "geometry_id": 9169,
                 "geometry_persistent": 9169
               }
             }
           ],
           "sources": [
             {
               "geometry": {
                 "geometry_id": 9129,
                 "geometry_persistent": 1684
               }
             }
           ]
         },
         ...
       ]
Field Type Description
grid_id int Unique identifier for the energy grid being defined in the plan.
grid_persistent int Unique identifier for the energy grid on which this energy grid definition is based. Will only be different from grid_id if this grid definition alters a pre-existing grid. So if these two IDs are exactly the same, the server knows that this energy grid definition is the initial one that creates the energy grid to begin with.
name string A name for this energy grid, as defined by the player/user in the game client under Energy Distribution.
active int 0 or 1, so functioning as a boolean, to indicate whether this energy grid definition is the active one. In this context this is always 1.
energy object[] The expected energy distribution for this grid, given the sockets being a part of this grid and the countries/teams that own them.
→ country int Unique identifier of the country/team which expects to receive energy from this grid. The country/team identifier should of course still exist in this configuration file. See datamodel > countries.
→ expected int The amount of Watt in energy capacity that this country/team is expecting from this grid.
removed object[] Any energy grids that this plan has removed completely.
→ grid_persistent int The unique identifier of the energy grid that is being removed.
sockets object[] A list of sockets (the ending points) that make up this energy grid.
→ geometry object The identification data of geometry that is (one of) the sockets in this energy grid. So this geometry should exist because it is imported from GeoServer upon session creation, or it is actually added upon session creation because it is included in this plan (see the layers definition further up).
→→ geometry_id int The unique geometry identifier.
→→ geometry_persistent int The unique identifier of the geometry on which this geometry is based / from which this geometry is derived. If this is the same as geometry_id, then this geometry is the original geometry. So if this is different from geometry_id, then this value represents the identifier of the original geometry. See also the layers definition further up.
sources object[] A list of source (the starting points) that make up this energy grid.
→ geometry object The identification data of geometry that is (one of) the sources in this energy grid. So this geometry should exist because it is imported from GeoServer upon session creation, or it is actually added upon session creation because it is included in this plan (see the layers definition further up).
→→ geometry_id int The unique geometry identifier.
→→ geometry_persistent int The unique identifier of the geometry on which this geometry is based / from which this geometry is derived. If this is the same as geometry_id, then this geometry is the original geometry. So if this is different from geometry_id, then this value represents the identifier of the original geometry. See also the layers definition further up.

fishing

"fishing": [
    {
        "fishing_id": 1,
        "fishing_country_id": 3,
        "fishing_plan_id": 4,
        "fishing_type": "Bottom Trawl",
        "fishing_amount": 0.0142857,
        "fishing_active": 1
    }
]
Field Type Description
fishing_id int Unique identifier of this fishing effort value set.
fishing_country_id int Unique identifier of the country/team to which this fishing effort value set belongs. References the meta > layer_type > value of whatever layer was defined as the countries/teams layer under datamodel > countries.
fishing_plan_id int Unique identifier of the plan at hand. Technically irrelevant in this context.
fishing_type string The string identifier of the fishing fleet at hand. References MEL > fishing > name, being that spot where fishing fleets are defined in the first place.
fishing_amount float The share value of this country's/team's fishing fleet, the main reason for this value set to exist. Ranging between 0 and 1. So in this example the share of country/team three's Bottom Trawl fleet is 1.4%.
fishing_active int 0 or 1, acting as a boolean, to indicate whether this fishing value is active. When importing this plan again, this is always set to 0 anyway, because the server code controls when a plan becomes active and thus when a fishing value becomes active.

messages

   "messages": [
         {
           "country_id": 1,
           "user_name": "Admin",
           "text": "Changed the plans status to: Design",
           "time": 1600163971.3005
         }
       ],
Field Type Description
country_id int Unique identifier of the country/team to which this plan message belongs. References the meta > layer_type > value of whatever layer was defined as the countries/teams layer under datamodel > countries.
user_name string Username belonging to this plan message, as shown in the game client next to the message itself.
text string The actual message.
time float The UNIX timestamp of the actual time when the message was sent.

restriction_settings

"restriction_settings": [
    {
        "country_id": 3,
        "entity_type_id": 0,
        "size": 0.560656,
        "layer_name": "NS_Wind_Farms_Implemented"
    }
]
Field Type Description
country_id int Unique identifier of the country/team to which this shipping safety zone restriction belongs. References the meta > layer_type > value of whatever layer was defined as the countries/teams layer under datamodel > countries.
entity_type_id int The layer type unique identifier to which this shipping safety zone restriction is applied. References meta > [layer_name, see two rows down] > layer_type > [key].
size float Size of the shipping safety zone radius from the edges of the geometry in question, ranging from 0 - 1. In the game client this is transferred to kilometres by multiplying the value by 10.
layer_name string Unique identifier of the layer to which this shipping safety zone restriction is applied. References meta > [layer_name key]. The integer layer identifier isn't used because that identifier is determined by the database upon session creation, and technically thus might not always be consistently the same.

Back to the main configuration data schema page.

This page was last edited on 15 April 2024, at 11:31. Content is available under GPLv3 unless otherwise noted.