A Guide to Minor Factions and the Background Sim

There was no way to reliably measure this production value and whenever we tried to do so it appeared that supplies always reached max cap within a day.

I highly doubt that... Production does not reach its stock in one day without outside help.

For example the system with the shield engineer "Laksak" would have to have such a high "buy" frequency that it just so "happens" to be permanently on one bracket/bar despite apparently being able - by your theory - to refill in one day. It actually just doesn't get the materials it needs to produce more than on bracket one.

To put this into perspective, it is a multi-billion system, producing hundreds and hundreds of thousands of goods even on bracket one. So if you were to buy so much produce it can't refill, you must talk about tens of thousands of players. The traffic does not support that. And they all would have to mass trade, Python or Cutter style.
 
Last edited:
Does the API info detail what commodities are consumed to manufacture another as we were discussing earlier?

If the above was the full detail, then I guess not or it is something else that is hidden or not listed as this was a station demanding the finished product. So a snapshot of Clothing at a supplying station would be interesting because I would expect to see the textiles used in production listed in some fashion (no pun intended there) or other.

The structure of the record suggests there is nothing else. There are a lot of fields meaningless for an user interface - this API was once intended for the defunct companion app - so I believe it is in fact an exact representation of the underlying data pulled straight from the database.
 
The structure of the record suggests there is nothing else. There are a lot of fields meaningless for an user interface - this API was once intended for the defunct companion app - so I believe it is in fact an exact representation of the underlying data pulled straight from the database.

I would still like the full data for let's say:

Bauxite demand in a refinery (and a permanent consume good like clothing as well) and Aluminium production in the same. So we can see if there is a clear difference between goods for the people and good for the industry.

I wouldn't put it past FD to make "any" good acceptable to buff production in the station, but I hope that we can't refine Lithium out of cloths.
 
The structure of the record suggests there is nothing else. There are a lot of fields meaningless for an user interface - this API was once intended for the defunct companion app - so I believe it is in fact an exact representation of the underlying data pulled straight from the database.

Are you suggesting that the API detail displayed is old? Where did it come from if not produced by yourself?
 
My misunderstanding. So could you reproduce the API snapshots I mentioned earlier for Clothing for example?
Of course. So, I am now in an outpost, economy Industrial/Refinery.

Here is clothing:


{
"baseConsumptionQty": 171.5,
"baseCreationQty": 178.5,
"buyPrice": 226,
"capacity": 92375,
"categoryname": "Consumer Items",
"consumebuy": "4",
"consumptionQty": 30496,
"cost_max": "463.00",
"cost_mean": "285.00",
"cost_min": 262.20260869565,
"creationQty": 31709,
"demand": 1,
"demandBracket": 0,
"homebuy": "60",
"homesell": "56",
"id": "128049241",
"market_id": null,
"meanPrice": 285,
"name": "Clothing",
"parent_id": null,
"rare_max_stock": "0",
"rare_min_stock": "0",
"sec_illegal_max": "2.65",
"sec_illegal_min": "1.20",
"sellPrice": 211,
"statusFlags": [],
"stock": 45246,
"stockBracket": 2,
"stolenmod": "0.7500",
"targetStock": 39333,
"volumescale": "1.1500"
},

And for a previous request, Aluminium production and Bauxite demand:

{
"baseConsumptionQty": 338.64,
"baseCreationQty": 813.89,
"buyPrice": 262,
"capacity": 946116,
"categoryname": "Metals",
"consumebuy": "4",
"consumptionQty": 240621,
"cost_max": 536.22434782609,
"cost_mean": "340.00",
"cost_min": "330.00",
"creationQty": 433731,
"demand": 1,
"demandBracket": 0,
"homebuy": "61",
"homesell": "57",
"id": "128049176",
"market_id": null,
"meanPrice": 340,
"name": "Aluminium",
"parent_id": null,
"rare_max_stock": "0",
"rare_min_stock": "0",
"sec_illegal_max": "2.60",
"sec_illegal_min": "1.20",
"sellPrice": 244,
"statusFlags": [],
"stock": 510325,
"stockBracket": 2,
"stolenmod": "0.7500",
"targetStock": 493886,
"volumescale": "1.1600"
},

{
"baseConsumptionQty": 1194.62,
"baseCreationQty": 0,
"buyPrice": 0,
"capacity": 1186673,
"categoryname": "Minerals",
"consumebuy": "7",
"consumptionQty": 848836,
"cost_max": 320.85565217391,
"cost_mean": "120.00",
"cost_min": 107.14434782609,
"creationQty": 0,
"demand": 29391,
"demandBracket": 1,
"homebuy": "35",
"homesell": "29",
"id": "128049165",
"market_id": null,
"meanPrice": 120,
"name": "Bauxite",
"parent_id": null,
"rare_max_stock": "0",
"rare_min_stock": "0",
"sec_illegal_max": "2.93",
"sec_illegal_min": "1.24",
"sellPrice": 108,
"statusFlags": [],
"stock": 0,
"stockBracket": 0,
"stolenmod": "0.7500",
"targetStock": 212209,
"volumescale": "1.0000"
},
 
A mixed industry isn't a good example, but it also shows the necessary differences. For one the capacity (max demand) is extremely different for the actual demand if it is partially filled like here. Unlike the one with weapons before. So it is an important difference and might be related to the shown value of current demand in the station.

The real oddball is the "consumebuy" modifier. It was really small for the little station that demanded weapons (1) where capacity was equal to demand, is mediocre for cloth and aluminum (4) and extremely high for bauxite (7).

It sadly doesn't answer the real "what does the station consume to resume production" question, but that might just be the script running on the background BASED on this data. So without knowing the script we can only test it by empiric evidence.

The huge stockpiles for non weaponry etc. is interesting though. It can easily explain why stations that don't consume their resources because they have maximum storage of their production can keep 0 demand for weeks onwards.


I want to test something. Sentenza can you give me 2 demands of 3 brackets, 2 of 2 brackets and 2 of 1 bracket?
 
Last edited:
Ok, Let's see.

Demand 1:

{
"baseConsumptionQty": 97,
"baseCreationQty": 0,
"buyPrice": 0,
"capacity": 24253,
"categoryname": "Foods",
"consumebuy": "2",
"consumptionQty": 16387,
"cost_max": 1695.1776086957,
"cost_mean": "1292.00",
"cost_min": "1286.00",
"creationQty": 0,
"demand": 606,
"demandBracket": 1,
"homebuy": "80",
"homesell": "78",
"id": "128049182",
"market_id": null,
"meanPrice": 1292,
"name": "Animalmeat",
"parent_id": null,
"rare_max_stock": "0",
"rare_min_stock": "0",
"sec_illegal_max": "1.81",
"sec_illegal_min": "1.10",
"sellPrice": 1286,
"statusFlags": [],
"stock": 0,
"stockBracket": 0,
"stolenmod": "0.7500",
"targetStock": 4096,
"volumescale": "1.4000"
},

{
"baseConsumptionQty": 97,
"baseCreationQty": 0,
"buyPrice": 0,
"capacity": 6915,
"categoryname": "Foods",
"consumebuy": "2",
"consumptionQty": 4672,
"cost_max": 1695.1776086957,
"cost_mean": "1279.00",
"cost_min": "1286.00",
"creationQty": 0,
"demand": 173,
"demandBracket": 1,
"homebuy": "80",
"homesell": "78",
"id": "128049189",
"market_id": null,
"meanPrice": 1279,
"name": "Coffee",
"parent_id": null,
"rare_max_stock": "0",
"rare_min_stock": "0",
"sec_illegal_max": "1.81",
"sec_illegal_min": "1.10",
"sellPrice": 1286,
"statusFlags": [],
"stock": 0,
"stockBracket": 0,
"stolenmod": "0.7500",
"targetStock": 1167,
"volumescale": "1.4000"
},



Demand 2:

{
"baseConsumptionQty": 268.77,
"baseCreationQty": 25.97,
"buyPrice": 0,
"capacity": 304970,
"categoryname": "Chemicals",
"consumebuy": "5",
"consumptionQty": 190975,
"cost_max": 400.96065217391,
"cost_mean": "263.00",
"cost_min": "223.00",
"creationQty": 13840,
"demand": 188752,
"demandBracket": 2,
"homebuy": "51",
"homesell": "46",
"id": "128673851",
"market_id": null,
"meanPrice": 263,
"name": "Liquid Oxygen",
"parent_id": null,
"rare_max_stock": "0",
"rare_min_stock": "0",
"sec_illegal_max": "3.04",
"sec_illegal_min": "1.25",
"sellPrice": 359,
"statusFlags": [],
"stock": 0,
"stockBracket": 0,
"stolenmod": "0.7500",
"targetStock": 61583,
"volumescale": "1.0700"
},

{
"baseConsumptionQty": 475.79,
"baseCreationQty": 0,
"buyPrice": 0,
"capacity": 488856,
"categoryname": "Chemicals",
"consumebuy": "5",
"consumptionQty": 338074,
"cost_max": 364.94086956522,
"cost_mean": "181.00",
"cost_min": 146.05913043478,
"creationQty": 0,
"demand": 211810,
"demandBracket": 2,
"homebuy": "46",
"homesell": "41",
"id": "128049203",
"market_id": null,
"meanPrice": 181,
"name": "Mineral Oil",
"parent_id": null,
"rare_max_stock": "0",
"rare_min_stock": "0",
"sec_illegal_max": "2.69",
"sec_illegal_min": "1.21",
"sellPrice": 239,
"statusFlags": [],
"stock": 0,
"stockBracket": 0,
"stolenmod": "0.7500",
"targetStock": 84518,
"volumescale": "1.0300"
},



Demand 3:

{
"baseConsumptionQty": 559.44,
"baseCreationQty": 0,
"buyPrice": 0,
"capacity": 596265,
"categoryname": "Chemicals",
"consumebuy": "3",
"consumptionQty": 397510,
"cost_max": 860.65586956522,
"cost_mean": "917.00",
"cost_min": "589.00",
"creationQty": 0,
"demand": 417386,
"demandBracket": 3,
"homebuy": "70",
"homesell": "67",
"id": "128673850",
"market_id": null,
"meanPrice": 917,
"name": "Hydrogen Peroxide",
"parent_id": null,
"rare_max_stock": "0",
"rare_min_stock": "0",
"sec_illegal_max": "2.19",
"sec_illegal_min": "1.14",
"sellPrice": 836,
"statusFlags": [],
"stock": 0,
"stockBracket": 0,
"stolenmod": "0.7500",
"targetStock": 99377,
"volumescale": "1.2700"
},

{
"baseConsumptionQty": 126.99,
"baseCreationQty": 0,
"buyPrice": 0,
"capacity": 135351,
"categoryname": "Industrial Materials",
"consumebuy": "1",
"consumptionQty": 90234,
"cost_max": 3605.947826087,
"cost_mean": "3132.00",
"cost_min": "2966.00",
"creationQty": 0,
"demand": 94746,
"demandBracket": 3,
"homebuy": "87",
"homesell": "86",
"id": "128673856",
"market_id": null,
"meanPrice": 3132,
"name": "C M M Composite",
"parent_id": null,
"rare_max_stock": "0",
"rare_min_stock": "0",
"sec_illegal_max": "1.37",
"sec_illegal_min": "1.05",
"sellPrice": 3548,
"statusFlags": [],
"stock": 0,
"stockBracket": 0,
"stolenmod": "0.7500",
"targetStock": 22558,
"volumescale": "1.3400"
},
 
Of course. So, I am now in an outpost, economy Industrial/Refinery.

Here is clothing:


{
"consumebuy": "4",

"demandBracket": 0,

},

The real oddball is the "consumebuy" modifier. It was really small for the little station that demanded weapons (1) where capacity was equal to demand, is mediocre for cloth and aluminum (4) and extremely high for bauxite (7).

Is "consumebuy" a modifier in the same way "demandBracket" is .... as this is a database then the fact the 4 is inserted in " " and 0 is not would mean they are acted upon differently.
All the way down the list some are in " " and some not.
 
Is "consumebuy" a modifier in the same way "demandBracket" is .... as this is a database then the fact the 4 is inserted in " " and 0 is not would mean they are acted upon differently.
All the way down the list some are in " " and some not.

I don't think it has a meaning. The same values are sometimes in "" and sometimes not.
 
Let's see:

Bauxite had 1/40th demand left with consumebuy 7. If it is a related modifier it might instead change it to 1/6th.

Now for the new data:

Bracket 1 (1):

Animal meat also has 1/40th demand left with consume buy 2. If it is a related modifier it might instead change to 1/20th.

Bracket 1 (2):

Coffee had 1/40th demand left with consume buy 2. If it is a related modifier it might be 1/20th.

Bracket 2 (1):

Liquid Oxygen is 3/5th. The consume buy is 5. Since any multiplication should exceed max, at this point we can rule out consumebuy has anything to do with demand modifiers.
It might be related to production instead...

Bracket 2 (2):

Mineral Oil is 9/20th or 45%. The consume buy is 5 as well.

Bracket 3 (1):

Hydrogen Peroxide is 7/10th. The consume buy is 3.

Bracket 3 (2):

CMM Composite is 7/10th as well. The consume buy is 1 though.


What did we see? Well for one the brackets work in intervals it seems as most 3 brackets are either upper (100%) or lower border of their area (70%). So we can conclude that they either work in 1/3 intervals or the border between 3 and 2 brackets at least covers 65% of remaining demand. Since the only 1 brackets we saw cover "below 3%" we don't know where it actually starts. I somehow doubt it is 1/3.

0-1/40? demand left = 1 Bracket.
1/40?-2/3 demand left = 2 Bracket.
2/3-3/3 demand left = 3 Bracket.

The intermediate steps might be to reset the prices. So if it falls to a lower threshold (for example 100% to 90% to 80% to 70% bracket) the price will reduce accordingly.

The consumebuy modifier is not static though. The real question is now if it is constant for goods across stations or also a station internal modifier... so we need more data.

This time we need the demand for one good in different stations. So food or clothes/domestics might work.

If there is no step between 70% and 100%, the odd conclusion a station needs more than it shows might stem form it showing the 70% demand while still being around 80-85%. That would explain while you need to oversell a little to satisfy it completely. That would mean the new demand level is shown before the actual level is reached... It would explain the phenomenon quite well. <--- Theory.
 
Last edited:
Does the API info detail what commodities are consumed to manufacture another as we were discussing earlier?

If the above was the full detail, then I guess not or it is something else that is hidden or not listed as this was a station demanding the finished product. So a snapshot of Clothing at a supplying station would be interesting because I would expect to see the textiles used in production listed in some fashion (no pun intended there) or other.

@goemon my test of illegal trade showed no difference between stolen goods and illegal goods.
the influence effect of blackmarket trade is not depending on profit, but on tons sold - differently to legal trade. so there is even no difference via acquisition. influence effect does depend on number of tons sold solely.'

Sorry for some reason computer wouldn't quote your comment.

I'm pretty sure that it still works on the 't' and not profit value, but uses 'profit' or 'loss' as a modifer to affect the influence. I don't know of any change to this since it was proven about the '1t at a time' method was modded by FD. They changed something eg 10t at a time value instead of 1. We just don't know. But I'll bet they ddn't change the whole mechanic overnight.

i don't think that profit or loss has any effect for blackmarket sales (and my test showed it).

i do think that legal trade is effected by profit - more profit, more influence gain. that's a bit backed by the BGS state.

I'm not sure, whether selling for a loss still effects in a negative way - i think, that was patched out (but i didn't test it)
 
I don't think it has a meaning. The same values are sometimes in "" and sometimes not.


In fact I have changed my mind and answered my own question.

Yes the "" has very much an important part to play.
Anything inside "" is just purely a label (eg "Industrial Materials") or is a static non changing value (eg "consumebuy"="1")

Those without are values that change eg buyprice and sellprice.

We have no idea of what the database setup is and in reality will never be able to reverse engineer this. But those "" definitely have something to say ! (do you see what i did there?)
 
...or is a static non changing value (eg "consumebuy"="1")

I concur. The question is what does the static value tell us. And if it is consistent for the same item in different stations and in different economies. That is why I am very interested in the number inside a pure high tech and a pure refinery for Rutile.
 
I concur. The question is what does the static value tell us. And if it is consistent for the same item in different stations and in different economies. That is why I am very interested in the number inside a pure high tech and a pure refinery for Rutile.

And to the same end why I asked about the same commodity (Clothing) in a supply system and a demanding system. Even better would be numerous supply and numerous demand, but that is asking a lot of someone!

I believe those "" are similar REM'ing a line of code. Ignore anything in "" for the calculation purpose. Rtn a 1 instead probably to allow the calculation to complete.
 
Last edited:
And to the same end why I asked about the same commodity (Clothing) in a supply system and a demanding system. Even better would be numerous supply and numerous demand, but that is asking a lot of someone!

I believe those "" are similar REM'ing a line of code. Ignore anything in "" for the calculation purpose. Rtn a 1 instead probably to allow the calculation to complete.

Speaking as a programmer, I think the quotes are most likely due to data type - either the type it is stored as in the database or the type the mobile app needed (which is not necessarily the same).

So for example:
"cost_max": "463.00",
"cost_mean": "285.00",

These values are probably currency data type and are quoted to ensure they retain their decimal places.

Of course values like this are strings, hence the quotes:
"categoryname": "Consumer Items",

I think a value like this probably maps to an enumerated type:
"consumebuy": "2",

Whether this helps or not I don't know but that's my opinion on the quotes.
 
Last edited:
So that I don't have to do all the work :) I'm going now to tell you how to extract the information yourself.

First of all: all this is much simpler if you have a linux box, which already comes with all the necessary tools. These are the steps to use the api under Windows.

First thing, you need the Python interpreter. So go there and download the appropriate package (32 or 64bit exe installer):

https://www.python.org/downloads/release/python-352/

When installing, make sure to check the "Add to path" option.

After installing python, open a command prompt - run it ad administrator, as we are going to install dependencies.

Run the command pip install requests - this will install the module required by the APi client. After the installation it will likely tell you that there is an upgrade, you will not need the utility again but why not.

Now that you have all the prerequisites, get the API client here:

https://github.com/Andargor/edce-client/

Download the zip package and extract it somewhere.

Now, back to the command prompt. Enter the directory where you extracted the client and run the setup command:

python client-setup.py

You will be asked for your ED credentials. These will be stored in a plain text file so be careful if someone else accesses your pc. You will also be asked if you want to automatically send market data to EDDN (do that please, so we have updated market informations :)).

Now, run the client:

python edce-client.py

The first run will trigger the usual, annoying email identification by FD.

We're almost done! If everything worked correctly, you now have a last.json file in the client directory. This is the data record containing your informations, not only about local market but your player, all your ships etc. This file though is rather unreadable, so the last step is to format it to readable form.

The simplest way is to use an online formatter. There are a lot available, this is just one to start with:

http://jsonformat.com

Or just google "json formatter" and test then to find the ones you like.

Done! Now you have the complete output in readable form, just check what you want.
 
This time we need the demand for one good in different stations. So food or clothes/domestics might work.

So that I don't have to do all the work :) I'm going now to tell you how to extract the information yourself.

Thats why I think doing it for one commodity only, in 2 stations. one supplying and one demanding. It is the only way to see confirmed changes to any stock levels, bars, modifiers etc. Random commodities from unknown places adds in too many variables.

I'll give the API thing a go at the weekend, don't have the time this week while working late shifts, but thanks for the manual Sentenza :)
 
Back
Top Bottom