Rails & Trains – Part 2

Last month, Railroad TracksI talked about how to draw railroad tracks for your maps. In that article, we looked at how to draw the basic tracks and sleepers, and adding appropriate effects to make them look nice. But we can’t stop with just straight track segments, can we? Of course not, we’ll be needing to make ourselves some nice curves. Fortunately, CC3+ has the tools needed to be able to take our railroads to the next step.

There are two things to consider when making railroad curves. First of all, we are dealing with 2 lines that need to have a consistent distance between them. The first thought many have if they haven’t worked with this problem before is to simply make a single line and copy it. Unfortunately, that doesn’t work. On any curved object, like a road, railroad or a banana, the physical length along the inner radius is shorter than along the outer radius, even if the angle is the same. Fortunately, CC3+ comes with several offset commands that help us create parallel lines with curves easily.

The second issue is the placement of the sleepers. When drawing in a straight line like we did in last week’s article, we have several tools that makes this easy, such as snapping to the grid, ortho or rectangular array copy. Neither of these works properly on a curve though. But again, CC3+ has the tools, this time in form of the Symbols Along command.

In today’s article, I will be exploring these tools. For the visual design, like effects, you should refer to last month’s installment.


Let us start with making the parallel lines. Last month, we use the regular line tool, but for curved lines, the Smooth Path tool is the best option. This allows us to draw nice curves. So, the starting point is to just draw a path using this tool. Now, we could draw one of the rails and then make an offset copy of it to get the second rail, but instead, I am going to draw the centerline instead. There are are couple of reasons for this, but one of them is that I am going to use this centerline to place my sleepers. Since this will be a temporary line, the style doesn’t matter, but I recommend just drawing it in the exact style (and on the same sheet) as the “real” rails (see last month’s installment for this setup), as this makes it easier later. Keep in mind that since this is a centerline, the actual rails will be 2.5′ to each side of it (half the gauge), this may be important if you wish to put it close to other entities in the map, like a station platform.

Another thing to keep in mind when drawing curves is that trains don’t handle sharp turns very well. The allowed radius is dependent on the speed of the train, but should normally not be any less than 400′. In practice, this means that you’ll never see a 90 degree turn in a typical battlemat sized map, but of course, this technique can also be used for larger scale maps. Very slow-moving trains with smaller cars (for example a mine track) may obviously have much smaller turns.

Once you are happy with the path of your centerline, you can use the offset command to automatically create the lines for the rails. CC3+ has several different offsets, but the best one for this particular use is a newer command which doesn’t exist in the menus yet, so it will need to be typed in on the command line. There are two commands, TOFFSET and TOFFSETX. They are more or less identical, the difference is only that the latter automatically deletes the guideline, while the former doesn’t. In this case, we still need the guideline (center line) to place the sleepers, so we will use the former command, and instead manually delete the centerline when we are done with it.

Type TOFFSET on the command line and press enter. The command line will prompt you for the distance. This is the distance between your centerline and the rails, so it should be half the gauge, 2.5 is a fine value that approximates a standard gauge railway, but also fits on a 5′ grid. So, type in 2.5 and hit enter. The command line will now ask you to select the entity. Simply use the pick cursor to pick the centerline we drew earlier. Immediately, you should see lines appear on both sides of it.

And that’s it for the rails themselves. As we demonstrated, all we had to do was draw one line that made up the path where we wanted the tracks to go, and then simply created the rails automatically to follow that line with the TOFFSET command. Now on to the sleepers.


In the last installment, we simply drew a rectangle with a woodgrain fill for use as a sleeper. This works nicely, but by default, fills doesn’t rotate with the object in CC3+, so it will look weird if we try to rotate it. Fortunately, it is possible to set it up with an aligned fill. Furthermore, to use it with the Symbols Along command, it need to be a symbol, not simply a rectangle, so we need to define it as a symbol.

I’ll assume you have a sleeper ready from part 1, if not, follow the instructions there to draw a new one. To set it up with aligned fills, start by right clicking the Polygon button and pick the Shaded Polygon (Angle by Edge) command. Now click on one of the long edges of the sleeper, you should see it change color. Then right click to end the command. The fill of the sleeper is now aligned, but this command also makes it shaded like a roof, we don’t need that for a flat object, so use the Numeric Edit command on the sleeper, and enable the Shade Only Copy option. This should revert the color back to what it was before, and we now have a polygon that can be rotated along with it’s fill.


Now, to make a symbol of it. Pick Define Symbol from the Symbols menu, select the sleeper, and hit D (Do It). Give the symbol a name (Wooden Sleeper), make sure the bounding entity is set to None, and the Origin is set to Middle Center (Imporant!). Note that when defining an entity as a symbol, that entity will be removed from the map, but you can obviously now just use the symbol you made to place it again.

At this point, if you want a bit of variety in the sleepers, you can make several and just define them all with the same name, and a number at the end (Wooden Sleeper 1, Wooden Sleeper 2, etc) as CC3+ can randomly pick from such a list if we want to.

Then, let us make a symbol catalog with out sleepers. Start Symbol Manager from the Symbols menu, and find the sleepers in the list. Assuming you didn’t place any symbols in the map after defining the sleepers, they should be at the very bottom. Select all of them, then hit the options button, enable the “Force Sheet” option and set it to Rail Sleepers. Also, if you did make more than one sleeper, set the “Symbol is one of a Collection” option, along with “Numbers at the end” and “Randomly Select from Collection” options. Hit OK in the options dialog, and back in the symbol manager, with the sleeper symbols still selected, click the Save as Catalog button, and save it as a new catalog. I recommend saving custom catalogs inside the User folder in the Symbols directory, preferably inside a subfolder, so something like @Symbols\User\Trains\Sleepers.fsc. No matter where you save it though, remember the location for the next steps.

Now, we can place the sleepers. First of all, change the active sheet to the RAIL SLEEPERS sheet. Then Pick Symbols Along from the Draw menu. Start by hitting the browse button in the dialog and browse for the catalog we saved above, and then select one of the sleeper symbols in the list. If you made more than one and defined a collection above, you can now enable the “Allow random symbol selection from group” option, and it will pick sleepers randomly from the group your picked symbol belong to.

There are a lot of settings in this dialog, so let us just go through what you need:

  • All the scales at the bottom of the dialog should be 100%, otherwise the size of the sleepers will vary along the track, which you don’t want
  • Max symbols to place should be high enough to not “run out of symbols”. This value is basically a safety valve to prevent you from accidentally doing something wrong and placing million of symbols. A value of 1000 is probably fine, but if you ever notice this commands place symbols fine for a while, but then at some point stops completely, this value is the reason.
  • Chance to place should be 100%, or close to it. If you want some random sleepers missing, 95% may work for you.
  • Symbol angle should be the bottom option, and the angle offset and angle random should be 0, we don’t want random rotations for sleepers
  • Symbol scaling should be default, with a 0% random scale (You can use a very small scale random value if you wish the sizes to vary slightly, but keep it less than 5%)
  • The distance between symbols depends on your preferred appearance. Sleepers are usually placed quite close to each other to provide full support. Try with a value of 2.5, or 1.5 if you want it really tightly packed. For lighter constructions, like tracks for handcarts, you may try a higher value. You can also use a very small value for random distance if you want some variation. Obviously, a modern railroad wouldn’t have any variation, but an older installation may not be so precise. I’ve opted to use a value of 0.25 for the random variation
  • Leave Use Sym Width off and percent overlap at 0.

With all the settings in place, hit ok and select the centerline between the rails. That should place sleepers neatly along the line. Finally, you can just erase the centerline, and you are done.

Now, since we defined the sleepers as a symbol catalog, you can reuse these later in other maps without remaking them. If you wish to place them manually instead of with the Symbols Along command, you can just load them up like any other symbol catalog.


We now have everything in place for the tracks. Next installment will be taking a look at the railroad cars.

If you like realistic values, DaltonSpence posted some useful measurements in this forum post.


If you have questions regarding the content of this article, please use the ProFantasy forums. It can take a long time before comments on the blog gets noticed, especially for older articles. The forums on the other hand, I frequent daily.





Comments are closed.