Skip to content

Production configurations

production_table() and production_table.csv contain one row per enumerated building configuration: one method from each of the building's method groups. The building and complete production_method string identify the row. The table does not filter combinations by a particular scenario or all gameplay conditions. Values describe one fully staffed building level, before throughput bonuses, and use goods base prices. See shared conventions.

Identity, metadata, and requirements

Column Type / unit Meaning / calculation Presence / edge cases
building String / identifier Source building key. Always included.
building_localization Nullable string / display text Building label propagated from the buildings input. Only if its input localization column exists; unknown labels are pd.NA.
production_method String / identifiers Selected method keys joined by +, in building method-group order. Always included; identifies a complete combination.
production_method_localization Nullable string / display text Selected method labels joined by +. Only if method localization input exists; any missing label makes the whole result pd.NA.
building_group String / identifier Building's immediate group. Always included from buildings input.
building_group_localization Nullable string / display text Propagated label for that group. Only with the buildings input's group localization column.
parent_group Nullable string / identifier Parent group metadata joined onto the source building. Defaults to pd.NA when the source column is absent; not the entire ancestor chain.
land_usage Nullable string / category Source building's resolved land-use category. Defaults to pd.NA if absent; see parser inheritance rules.
is_subsistence Boolean / flag Source subsistence-building flag. Missing values/column become false.
discoverable_resource Boolean / flag Source discoverable-resource flag. Missing values/column become false; not a numerical resource cap.
depletable_resource Boolean / flag Source depletable-resource flag. Missing values/column become false; no depletion is simulated.
economy_of_scale Boolean / eligibility flag Source economy_of_scale is true and source is_subsistence is false. Missing flags become false; eligibility does not apply a throughput bonus to this table.
urbanization Number / urbanization points per level Source building's urbanization contribution. Missing value becomes zero.
infrastructure_usage_per_level Number / infrastructure points per level Source infrastructure usage minus the sum of chosen methods' state_infrastructure_add. Missing usage becomes zero; absent modifier column warns and is zero-filled. Negative means provision.
era Integer / era number Maximum era of the building's and chosen methods' unlocking technologies. Only with df_tech; zero if no required technologies; unknown required technologies raise an error.
unlocking_tech String / identifiers Building requirements followed by chosen method requirements, deduplicated in first-seen order and joined by +. Always included; empty string for no requirements.
unlocking_tech_localization Nullable string / display text Required technology labels joined by +. Only with a localized technology input; empty requirements or any missing label yield pd.NA.
construction_cost Integer / construction points per level Building's resolved required_construction_points. Missing cost becomes zero; construction cost is not subtracted from weekly profit.

Employment and goods flows

Column or family Type / unit Meaning / calculation Presence / edge cases
employment Number / workers per level Sum of chosen methods' total employment. Always included; includes automation adjustments.
employment_<profession> Number / workers per level Sum of chosen methods' profession-specific employment; e.g. employment_engineers. One column per profession present in the methods input.
wage_normalized_employment Number / private-wage-equivalent workers per level Sum of profession employment times wage_weight, counting only professions whose paid_private_wage flag is true. Only with df_pop_types; missing private-wage flags default to true, including when the column is absent in older game data. Invalid or missing required profession weights raise an error.
goods_<good> Number / goods units per week per level Sum of the chosen methods' signed flow for the good: positive output, negative input. One per goods-table key, in goods-table row order; missing methods input columns warn and are zero-filled. Unpriced goods columns are ignored with a warning.
input_ratio_goods_<good> Float / fraction max(-goods_<good>, 0) / sum(max(-goods_<all goods>, 0)). Immediately follows its goods column. Zero for outputs, zero flows, and configurations without net inputs.

The input ratios use physical net-input quantities, not base-value shares. They sum to one when net inputs exist, otherwise zero. They cannot recover inputs offset by outputs of the same good. Prestige variants share the base good's column. Victoria 3's prestige-goods throughput bonus uses gross input base value; multiplying these ratios by the game's 20% maximum gives only a quantity-based analytical proxy.

For example, net inputs of 10 tools and 30 coal have quantity shares 0.25 and 0.75 regardless of their different prices. A net output contributes zero.

Nominal economic metrics

Let q_g be the row's signed goods flow, p_g the goods base price, I = sum(max(-q_g, 0) * p_g), and O = sum(max(q_g, 0) * p_g). Let L be employment, W wage-normalized employment, and C construction cost. These input/output valuations split net flows; payroll is not subtracted. All monetary flows are weekly.

Column Type / unit Meaning / calculation Presence / edge cases
value_goods_inputs_nominal Float / £ per week per level I: base-price value of negative net goods flows. Zero when no net inputs.
value_goods_outputs_nominal Float / £ per week per level O: base-price value of positive net goods flows. Zero when no net outputs.
profit_nominal Float / £ per week per level O - I, modeled goods-value surplus. Can be negative; excludes wages and construction expenditure.
profit_margin_nominal Float / fraction (O - I) / O. Ordinary division; negative infinity if output value is zero and profit is negative, NaN for zero/zero.
profit_per_capita_nominal Float / £ per worker per week (O - I) / L. Per employed worker; zero denominator can yield signed infinity or NaN.
profit_per_wage_normalized_employment_nominal Float / £ per wage-equivalent worker per week (O - I) / W. Only with df_pop_types; ordinary division, with no payroll subtraction.
profit_per_construction_cost_nominal Float / £ per week per construction point (O - I) / C. Ordinary division; zero construction cost can yield signed infinity or NaN.

Weekly profit and the per-worker/per-construction profit rates can be multiplied by 52 for annual equivalents. Do not annualize profit_margin_nominal or input shares. Missing localized text and undefined numeric ratios can both appear as blank CSV cells, but have different meanings.

See the economy and production API and parsing guide.