Friday Facts #134 - Signal placement indicator

Posted by kovarex on 2016-04-15

Hello Factorio players!

The fast progress report

Cube is working on the udp download rate with high packet loss. Michal and Vaclav are tweaking the flamethrower mechanics (You will like this one). Robert is working on the circuit network improvements. Tomas is working on the authentication service. Albert is preparing the new train graphics which will solve the horizontal/vertical inconsistency explained in the last Friday facts. Ondra is implementing control interface of the headless server and Martin is mainly cooperating on the integration of the mod portal. Most of these topics will be described in detail in a future Friday facts once they are finished.

Welcome Mishka

Miska is our now project manager on a testing period. We (Tomas and Me) decided to delegate some of our responsibilities to someone else, so we have more time for programming and game design. Her responsibilities will be to keep the track of the ongoing projects in Wube, help us to optimize our working processes, help with administrative and business tasks, possibly help us to optimize the bug fixing process and other similar tasks.

Signal placement indicator

Let me explain the process of a small task I decided to do during Sunday afternoon for 0.13, which grew to a week of work.
The problem with signal building, is that it is not clear where can the signal be built, especially on turns like this:

So the first obvious step was to show the possible positions of the signal placement, to spare the player searching for those by moving the cursor around. The indicator shows only positions around the cursor (20 tiles radius) and it looks like this.

This is a nice improvement already, but once we have it, we can go further. The typical misunderstanding, is that people don't understand why is this signal blinking:

Signals as well as junctions always divide rails into segments. A segment is a rail with one beginning and one end, with no junctions and these segments are grouped into blocks. Two distinct blocks need to have signals on the border with the other blocks, and can't have any collisions with rails of another block. This is to make sure that a train on one block can never collide with a train on another block.

The problem with the junction, is that the curved rail collides with both the left and right segments, so it merges all of the segments into one block. This renders the signal to be useless, as it is not dividing anything.

Placing signals on these positions makes no sense, so I extended the indication and building checks, to not allow the building of useless signals in junctions. This also makes it perfectly clear, what is the closest safe location after a junction to build the signal:

Once I was done with that, I remembered another annoying issue that arises when building signals. The direction problems. One small and often hard to find error can cause a lot of confusion. It is especially important with a one way rail system, which is used by most people in the late game stage. Signals like this make no sense, as there is no exit point from the center segment:

So I decided, that it won't be possible to place a signal in the opposite direction as long as there is no exit from the block in that direction. The signal can be always upgraded to a 2-way signal, by building a signal on the opposite side (the grey marks). As long as it is not done, the indicator will only show the placement on the correct side of the rail and won't allow incorrect placements by accident. This is especially useful when signaling junctions like this:

From the little testing I did, this is going to be one of those changes that will make us wonder, how could we play without it before?

As always, let us know what you think on our forums.