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.