Aurora is on version 1.12.0 C#, available at the Aurora Forums.

Contact Erik on the forum for a wiki account.

C-Civilian Economy

From AuroraWiki
Jump to navigation Jump to search

Trade Goods

Trade Good Modifiers

In VB6 Aurora, civilian production of trade goods is affected by the population size, the race wealth creation rate, the production rate of each specific trade good, the political status of the colony and the wealth modifier of the planetary and sector governors.

In C# Aurora, it will also be affected by radiation and unrest. [Date 16.07.2016]

Low Gravity Infrastructure

Civilian infrastructure production on a low gravity world will be LG Infrastructure, produced at one third of the normal rate (same overall cost). Trade in infrastructure will be low gravity to low gravity or acceptable gravity to acceptable gravity . [Date 06.12.2018]

Shipping Lines and Taxes


New game setting:

  • 4) Flag for Active Civilian Shipping Lines. When this is disabled, shipping lines will not produce ships.

Date 29.01.2019

Just noting here that new shipping lines can only be created for each race after the initial shipping line has built its first ship. This is to avoid conventional starts building up multiple shipping lines before any ships are created.

Date 04.02.2019

Shipping Line Construction

A Shipping Line will start building freighters and colony ships when the parent race has two colonies (including the capital) with populations greater than zero.

A Shipping Line will start building passengers liners when the parent race has two colonies (including the capital) with populations greater than zero in two different systems.

A Shipping Line will start building harvesters when the parent race has two colonies with populations greater than zero and there is Sorium present at any gas giant or superjovian in a system with a parent race population of at least ten million (including the capital).

The number of civilian freighters and colony ships will be kept relatively even.

Date 21.02.2018

New game setting:

  • 5) Flag for Civilian Harvesters. When this is disabled, shipping lines will not build fuel harvesters.

Date 29.01.2019

Shipping Line Earnings and Tax

For C# Aurora, the distance a civilian ship has travelled (in terms of systems) will affect how much the shipping line receives in payment and how much tax is generated.

All VB6 payment rates will be halved as a baseline but multiplied by the number of systems travelled. So a civilian ship travelling to a destination two transits away will receive the same payment as in VB6 Aurora. A ship travelling to a destination five transits away will receive 250% of the current payment. This applies to trading and to player contracts.

Government tax rates on civilian shipping will work in the same way, except rates will not be halved as a baseline. This will increase the overall tax revenue from civilian shipping.

A civilian ship travelling within the same system will be paid half of the one-system rate (which is half what is currently paid in VB6). This applies to both the payment to the shipping line and the tax.

This should reduce some of the early game bloating of civilian traffic but make it workable for the later game with longer distances (especially with the new jump point generation in v7.1 of VB6 Aurora).

Date 29.01.2019


Civilian Trade

For C# Aurora, I've updated civilian trade to use a better algorithm.

In VB6, civilian freighters without orders will move to a 'Trade Location', which is defined as a population with a balance in one or more trade goods that is greater than the capacity of the freighter. On arrival, the freighter will check the trade balances and try to find a suitable destination for one of them. If a destination is found, the move will be plotted. If not, the freighter will search for a new trade location. It could be more intelligent but not without a larger performance overhead.

In C# Aurora, a freighter without orders, regardless of current location, will search known space for the closest population that has export trade goods, taking into account any other freighters already en route to collect that trade good (and any path finding restrictions such as danger). If a suitable trade good is located, the freighter will look for the population closest to the pick up point which has an import requirement for that trade good (again taking into account any freighter already en route to drop off the same good at that destination). If no destination is found, the freighter checks the pick up point for any other trade good options with suitable destinations. If that doesn't work, the freighter checks the next population based on distance, etc., until it has checked every possible combination of populations and trade good routes in known space. If a valid route is found, all the orders are plotted including any Lagrange short-cuts. Then the next freighter repeats the process, etc..

Infrastructure is checked first at each population before any other trade good. Freighters understand the difference between low gravity infrastructure and normal infrastructure and will move the correct type of infrastructure to appropriate destinations.

Given that every civilian freighter without orders is checking every system, population and trade good in known space to find a suitable trade route, there might be a concern regarding performance. My current campaign is an ideal test bed, as I have removed every order from every fleet due to the incompatibility of the VB6 and C# database structures. Which means in the first trade phase after program start, the code is checking all 364 civilian freighters in a universe with 495 star systems, 1343 jump points, 380 Lagrange points, 345 populations and 23 different races. That first trade phase, including identifying routes for all freighters and creating 1896 individual movement orders (including load/unload, transits and LG points) required 1.01 seconds.

Date 01.03.2018

Civilian Movement of Installations


As in VB6, Civilians will still transport installations for player races. However, there are changes to the UI, the path finding and the costs for the this service.

In terms of cost, in VB6 the cost was a set fee of 10 wealth for multi-system transportation and 5 wealth for same system, regardless of freighter size.

In C# Aurora, the cost is: 5 x Number of Installations x Systems Travelled x (Installation Type Cargo Points / 25000)

So for a standard freighter (single cargo hold) transporting a construction factory to a destination four systems away, the cost would be 20 wealth. The calculation is 5 x 1 x 4 x (25,000 / 25,000).

Destinations in the same system as the start point count as half a system.

For path finding, civilian ships will use the same logic as transporting trade goods. They will search for player contracts before searching for trade goods. Note this means you can effectively commandeer civilian shipping for your own needs in an emergency, but doing so will disrupt normal civilian operations such as moving infrastructure.

Civilian Economy Tab

There is a Civilian Economy tab on the Economics window, which has three lists. To the left is a list of installations at the colony, the centre has a list of installations demanded and the right has a list of installations supplied. Above the centre list is a dropdown with all types of known installations. Above the right-hand list are the installations that the colony can supply. For both the latter lists, there is an Amount column, which is the amount Demanded or Supplied, and an Assigned Column, which is the number of the installations for which a freighter contract is already assigned (this is a sub-set of the Amount). The lists can be managed with the buttons below. Adding or editing will trigger a popup box so you can type in the amount required.

The screenshots below show: A colony in Zeta Herculis with Supply contracts for various installations. Most are already fully assigned. The Avalon colony with several Demand contracts. Again, most are already assigned. A civilian freighter has been assigned one of the above contracts and is en route to the pickup point. Note that Shipping Lines will show up on the Naval Organization window if desired, although you can't give them orders.

Date 03.03.2018

Unload Colonists

I've completely rewritten the standing order (VB6 default order) for unloading colonists (used by shipping lines, NPRs and your own ships if desired). The process is as follows:

  • 1) Colony fleet looks for a suitable population with less than 25m pop and no other colony fleets inbound, checking its current system first and then using the path finding algorithm to search everywhere else in the empire.
  • 2) Same as 1) but without the check for inbound colony ships.
  • 3) Searches for any suitable population with a status of Colonist Destination (which you can set for any pop of at least 25m).

When determining if a population is a suitable destination, the fleet checks the following:

  • 1) How many colonists it is carrying.
  • 2) If the species is the same as the colonists.
  • 3) The available capacity of the system body on which the population is situated, taking into account other populations.
  • 4) The available capacity of the infrastructure (normal or LG depending on the gravity), taking into account the current population size.
  • 5) The lesser of 2) and 3) is used as the base capacity of the population to accept new colonists.
  • 6) Any available space in orbital habitats is added to that capacity.
  • 7) The total number of colonists on ships already inbound to the colony is deducted from that capacity.
  • 8) if the capacity exceeds the number of colonists in the checking fleet and the species match, the colony is suitable.

This should prevent the current problem of many colony ships delivering to a colony without the capacity to support them all. As soon as a fleet determines a colony is suitable, the orders are issued, which means other fleets checking in the same increment will be aware of the extra inbound colonists.

Because of these changes, Passenger Liners will no longer search their current system for a potential destination (otherwise they could load and unload at the same population).

Date 24.02.2018

Civilian Mining Colonies

C# Civilian Mining Check

Each construction phase, if a race has at least two colonies with population or infrastructure, that race rolls a random number from 1 to 50,000.

If that random number is less than Annual Wealth * (Construction Phase Seconds / Year Seconds), a check is made for a potential new civilian mining complex.

For example, for a race with 20,000 annual wealth checking during a construction cycle that is exactly five days, the number needed to pass would be 274 (20,000 * 432,000 / 31,536,000), which is 0.55%.

This is a lower chance for a check than in VB6 to account for the following changes.

If that check is passed, a list is made of all suitable locations for a civilian mining complex. A suitable location is a system body with at least 10,000 tons of Duranium that has an accessibility of at least 0.7.

That system body must be in a system with at least one population of ten million and must be less than 80 AU from its parent star. If orbiting a non-primary star, that star must be within 80 AU of the primary or have an Lagrange Point within 80 AU that can link to a Lagrange Point within 80 AU of the primary.

Once all suitable locations are determined, each location is given a score based on the total amount of minerals with accessibility of 0.5 or higher. Duranium scores double. The new mining complex is created at the location with the highest score. Population is not a factor beyond the ten million limit required for consideration of the parent system.

For each existing civilian mining colony, a similar check is made in the construction phase to determine if an additional complex is added. For this check, the roll is 1-100,000.

Date 12.10.2018 also the old VB6 rules

Appendix: NPR

Quote from: MarcAFK on Today at 06:36:14

Bankrupting the civilians is a good solution to endgame lag, but what about the NPRs? They still build hundreds of hsits. I don't know if they use similar mechanics in regards to hipping lines, do they even have 'civilians"?

For freighters and colony ships, they only have civilians. There didn't seem to be any point in having two types of AI for NPR colony ships and civilians, so they are all created in shipping lines. This is true for C# too. 10.01.2019

Doesn't that mean NPRs can't carry minerals from a system to another, or is that abstracted for them?

Mineral movement is automatic, although it does mean they won't create colonies or move automated mines. Date 10.12.2019