Starship Corporation http://www.starshipcorporation.com/forum/ |
|
'Quick route' button for grid http://www.starshipcorporation.com/forum/viewtopic.php?f=27&t=4378 |
Page 1 of 1 |
Author: | AartBluestoke [ Sun 8. Jan 2017, 08:43 ] |
Post subject: | 'Quick route' button for grid |
One thing which has to be done repeatedly is to layout the power grid after putting in all hatches, connecting fuel/o2/water lines, routing coolant. For most of the grid areas there is only a single trivial solution; i propose a 'quick route' button that does something like the following (assuming the front of the ship is in the +x direction): Interconnects are both nodes and sources: 0) build a list of all nodes on the deck: connect all nodes using trivial connections: 1) first pass front to back power conduits 1a sort the nodes by x, then y 1b if any node is at the same x co-ordinate the next one in the list, try to run a conduit between them 2) cross connect; 2a sort the nodes by y and x 2b if any node is at the same y coordinate as the next one in the list, try to run a conduit between them, unless it crosses an existing conduit. 3) connect unconnected sources for each source node scan +x, -x, +y,-y for an un (or under-)supplied conduit to connect to, and if one is found connect to the first conduit (and add a node) 4) find minimal cross-connects between supplied and unsupplied while(a new link is found) { for each link on the list if its 'amount supplied' is different to the next one on the list, then they are on currently separated networks: run a conduit, even if it crosses an existing conduit. add a node at the junction. Terminate conduit run if the node is powered, to avoid creating too many extra nodes. } 5) first pass nodes at unique x or y coordinates while(a new link is found) { for each un or under-supplied node scan +x, -x, +y,-y for a fully supplied conduit to connect to, and if one is found connect conduit (doesn't matter if this causes the connected to node to be under-supplied, as this will just trigger those ones to seek new connections) } 6) deal with residual L shaped missing nodes: eg that one o2 link between the compressed air tank and life support 6a for each unsupplied or under-supplied node for each source node with space capacity check to see if you can add a node at x_node,y_source to link to create a L shape, if so run conduits and goto 6a check to see if you can add a node at y_node,x_source to link to create a L shape the other way, if so connect and goto An algorithm like this will do a 90% job of connecting things with minimal extra nodes compared to the optimal solution, and won't take long to implement. But it still allows substantial room for improvement:eg it would favor connecting cargo hatches with power along the hull, and powering them that way, and there will be a few corner cases where nodes are unable to be powered (specifically where there are multiple red excluded areas internal to the hull or places where you need a diagonal connection with 2 nodes ;eg corners of the arac ) It is sort of like the 'auto complete' for the ship rating; it'll save quite a bit of tedious time for a reasonable solution, and optimising the reasonable solution is more 'fun' than manually laying out the obvious stuff over and over. |
Page 1 of 1 | All times are UTC [ DST ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |