Jump to content

Wire Bridge Overload workaround & Heavi-Watt through walls


Recommended Posts

I'm not active here, so apologies if this is known or repeated.  I just wanted to post a couple helpful tips/workarounds I observed for the current game build.

Wire Bridges overloading:
I was having the problem of Wire Bridges overloading when they crossed Heavi-Watt Wires.  I searched to see if this was a bug and found a number of other mentions (ex1, ex2, ex3).  A solution I saw mentioned which currently works (build AU-221865) is to put the Wire Bridge on the Heavi-Watt circuit, rather than the regular Electrical Wire circuit when they cross.  It seems like the Wire Bridges take their max power rating from their attached wires, so this works and the bridges don't overload.

Heavi-Watt Wires through walls/tiles:
Since Wire Bridges can currently be placed over tiles, I realized this might be a way to pass Heavi-Watt lines through floors & walls, and it works!  Of course you can only run through a 1-tile thick floor/wall, but this makes power layouts much cleaner.

A couple other notes on Wire Bridges & wiring I encountered:  You can place a Wire Bridge so one (or both) of its power connections falls on top of another object's power connection, but you still must place/build a wire on that single square to make the connection.  And a small annoyance which I assume is a bug - if you're placing Heavi-Watt over existing regular wire to upgrade it, the build priority you set doesn't apply, and it defaults to priority 5.  After placing the build commands, you'll have to go back with the Priority tool if you want to change it.

 

And a request/suggestion to devs:  I hope you either leave this ability to have Heavi-Watt lines cross tiles using Wire Bridges, or alternatively/additionally create a new tile type that allows Heavi-Watt to be built through it (perhaps make it resource expensive and/or low decor).  It's very inconvenient and also seems unrealistic to not have any kind of tile/barrier that Heavi-Watt wire can run through.

Link to comment
Share on other sites

The only way I was able to replicate the wire bridge overloading problem was when there was a piece of standard wire connected to the heavy wire somewhere (even very far from the bridge) and there was some local load on the wire (even not exceeding 1 kW). Removing that piece of standard wire or replacing it with heavy wire gets rid of the problem.

9CFlXnH.jpg

 

Link to comment
Share on other sites

24 minutes ago, Kasuha said:

The only way I was able to replicate the wire bridge overloading problem was when there was a piece of standard wire connected to the heavy wire somewhere (even very far from the bridge) and there was some local load on the wire (even not exceeding 1 kW).

So this bug only happens when your wire network is built poorly?

Link to comment
Share on other sites

1 minute ago, GreatGameDota said:

So this bug only happens when your wire network is built poorly?

It happens when the network is built poorly. It may not necessarily be the only case but I have not found a counterexample.

Link to comment
Share on other sites

The actual bug (as observed in that first example bug report) seems to be that Wire Bridges assumes its circuit and power load from the center of its 3 squares, that is, the circuit it crosses rather than the one connected to it.  From Kashua's comments, it sounds like the bridge takes its max power rating from the lowest wire connected to it anywhere (not just the directly attached wires like I assumed).  So a bridge overload occurs if you have a bridge with a regular wire on its circuit (or no wires at all, per that same example) crossing a Heavi-Watt circuit, and that Heavi-Watt circuit draws more than the standard wire rating of 1kW.

I thought the obvious (non-poorly built) scenario that I and I'd guess others have run into, is simply when you want a normal circuit to cross a heavy circuit - if you put the bridge on the normal circuit, the bridge will overload, due to the bug.  Put the bridge on the heavy circuit, the bug still exists but not noticed since the overload is avoided.

Link to comment
Share on other sites

2 minutes ago, HugePinball said:

The actual bug (as observed in that first example bug report) seems to be that Wire Bridges assumes its circuit and power load from the center of its 3 squares, that is, the circuit it crosses rather than the one connected to it.  

There's also something that causes bridges to break before any wires start breaking, regardless whether the bridge is part of a circuit or not.

4 minutes ago, HugePinball said:

I thought the obvious (non-poorly built) scenario that I and I'd guess others have run into, is simply when you want a normal circuit to cross a heavy circuit - if you put the bridge on the normal circuit, the bridge will overload, due to the bug.

I have tested a lot of scenarios and as long as you don't have an overloaded circuit bridges are fine even over heavy wire carrying 10 kW. Presence of an overloaded circuit is a necessary condition for the problem to occur.

Link to comment
Share on other sites

4 hours ago, Kasuha said:

There's also something that causes bridges to break before any wires start breaking, regardless whether the bridge is part of a circuit or not.

Yeah bridges are targeted first before any wires. Makes little sense.

This bugged code is also only used for circuit overloads so bridges can only assume
they're on the wrong circuit when they are trying to blow up.
 

Link to comment
Share on other sites

On 7/6/2017 at 11:21 AM, Kasuha said:

I have tested a lot of scenarios and as long as you don't have an overloaded circuit bridges are fine even over heavy wire carrying 10 kW. Presence of an overloaded circuit is a necessary condition for the problem to occur.

I suppose it's quite possible that in the cases where my bridges were overloading, I had 1 or more spots where I had missed upgrading the connection square from standard wire to heavy, or the upgrade build was still pending (due to that other priority bug I mentioned).  And yes, since the bridges do always appear to overload first, I missed those (they can be hard to spot).

In any case, using bridges to let heavy circuits cross tiles is still useful - does anyone know if that's intended behavior?  I'd hate to see it go away.

Link to comment
Share on other sites

1 hour ago, HugePinball said:

In any case, using bridges to let heavy circuits cross tiles is still useful - does anyone know if that's intended behavior?  I'd hate to see it go away.

I see no harm in it so I hope it's going to stay. The point of heavy wire not going through walls is to prevent you getting rid of its decor impact. The bridge doesn't get rid of decor impact since you have to have a piece of heavy wire on each end of the bridge. Even reducing the wire's decor impact with bridges is limited, you only remove 1/3 of the wire. 

Link to comment
Share on other sites

On 7/6/2017 at 11:21 AM, Kasuha said:

There's also something that causes bridges to break before any wires start breaking, regardless whether the bridge is part of a circuit or not.

This looks to be intended.

On 7/6/2017 at 11:14 AM, HugePinball said:

The actual bug (as observed in that first example bug report) seems to be that Wire Bridges assumes its circuit and power load from the center of its 3 squares, that is, the circuit it crosses rather than the one connected to it.

Looking at the code, that seems to be the case. In CircuitManager.Rebuild, this is what I see for the part about bridges:

		HashSet<UtilityNetworkLink>.Enumerator enumerator3 = this.bridges.GetEnumerator();
		while (enumerator3.MoveNext())
		{
			UtilityNetworkLink current3 = enumerator3.Current;
			int cell = Grid.PosToCell(current3.transform.position);
			ushort circuitID3 = this.GetCircuitID(cell);
			if (circuitID3 != 65535)
			{
				this.circuitInfo[(int)circuitID3].bridges.Add(current3);
			}
		}

So it's deciding which circuit it's a part of based on the cell it's in. But which cell is it actually in? WireBridgeConfig lists the connection points at offsets from the main position:

		utilityNetworkLink.link1 = new CellOffset(-1, 0);
		utilityNetworkLink.link2 = new CellOffset(1, 0);

So we know that the actual position (offset 0,0) is the center of the bridge. (this isn't the case for all world objects)

I also looked into how GetCircuitID works, and it was a long path but seems to all work as expected.

Link to comment
Share on other sites

On 7/9/2017 at 10:17 AM, Kasuha said:

I see no harm in it so I hope it's going to stay. The point of heavy wire not going through walls is to prevent you getting rid of its decor impact. The bridge doesn't get rid of decor impact since you have to have a piece of heavy wire on each end of the bridge. Even reducing the wire's decor impact with bridges is limited, you only remove 1/3 of the wire. 

Makes sense, and I hope so, but I still think it would be cool to see a new "industrial" tile type at some point that Heavi-Watt could run through.  Make  it resource-expensive and still low decor, but at least a bit less than the huge decor hit the wire gives.  Perhaps the same the same negative decor as the wire, but radius of only 1-3 instead of 6.  Could be extra useful if they ever decide to not let insulated ducts/pipes run through normal tile (can't recall if that was ever the case before).

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...