Tutorial: 3DC to Railworks - Making a Wayside Signal

This signal tutorial will explain, in moderate detail, the steps that are needed to put a SafeTran V20 wayside signal into the simulator. The signal we will construct will be rudimentary; advanced construction techniques such as UV Wrapping, Environment and Bump Mapping, Extruding, etc., will not be covered in this tutorial.

Before beginning, it is assumed that you have a basic knowledge of image editing programs, the 3DCanvas/Crafter modeling program, .ACE image file converters, the Railworks Asset Editor, and the World Editor in Railworks. The texture file that will be used has been pre-made.

Click each photo to enlarge for further details about the image.

A discussion thread has been opened at Railworks America so that the community and those interested in signal building can bring forth ideas and solve issues concerning this tutorial.


Part 3: Export and the Asset Editor

INFO: Before starting this tutorial, you need to aquire the default Kuju/RSC signal script - source files from Railsimulator.com. These are available on the Railworks Wiki, under the Signals section.

1. We have made the signal head and the post in the same 3DC scene for convenience in placment. However, signals are actully made of several pieces that are stitched together in the Blueprint Editor. The post is the actual object called for in the game. The target head (and signal placard if needed) are child objects. For that reason, we will export the head and the posts as separate objects.

Hide all of the pieces of the signal post that are in the vicinity of the signal head by right-clicking on the object and selecting "Hide" from the pop-up menu.

2. Select all of the parts of the signal head by clicking in the "air" around the signal post, holding the mouse button down, and dragging a blue box around the entire signal head. Make sure that you have all of the parts in the Properties and Information panel. Each part should be highlighted if selected.

3. Once you've selected the signal head, from the "File" menu, select "Export", "Trainworks", "Rail Simulator Intermediary Geometry Format (IGS)" and click on it.

4. You will get a pop-up for a Save box. Save your file with a distinct file name. I prefer to put an "h1", "h2", "h3", and so on to denote the number of heads. You will be able to re-use these signal heads in later signals, so it's best to name them unique names to avoid confusion.

5. In the "Create distance-based levels of detail" pop-up, select no. We have already done this in the signal head's group names.

Your signal head will now export to the previously selected folder.

6. Now for the post. Select all the parts of the signal head again, right-click, and select "Hide" from the pop-up menu. After you have done this, you will need to "Unhide" the parts of the signal post that you hid earlier. You can select those parts in the Properties and Information panel.

7. As we've done before, drag a blue select box around the entire post and export it from the menus previously mentioned. This time though, when you go to name the post, you should put a "p1" (for one-head signal post) in the name instead of "h1".

8. We now need to set up our space in the Railworks/Source folder for this signal. As you can see from the example, i've already set up several signals previously, we will simply add to them.

You should set up your source folders as follows:
Railworks/Source/YourProviderName (In this case it will be SMMDigital) /ProductName (RailNetwork)/Signals - and then the following folders:
-CommonScripts
-SignalTypeName (in this case, Safe Tran2)

For right now, we will do nothing to the CommonScripts folder. That will come later. Our business will be with the Safe Tran2 folder.

9. Inside the SignalTypeName (Safe Tran2) folder, we will place the following folders:
- CommonScripts
- Head
- Post

Again, for right now, we are going to ignore the CommonScripts folder and the .LUA script files that are shown in the example.

10. Into the Head folder, you need to copy your "xxxxx_h1.IGS"file, plus the regular and Winter .ACE files required by the head.

11. Into the Post folder, you need to copy your "xxxxx_p1.IGS" file, plus the regular and Winter .ACE files required by the post.

12. Now we get down to the nity-gritty. Open Railworks, go through the cutomary PIA Steam login garbage (please tell me you don't run in offline mode!), then click on the "Tools" tab and select "Asset Editor". Once the AE is open, go to the source files that you just made. They should be in YourProvider/RailNetwork/Signals/YourSignalName folder.

13. Go into the "Head" folder, select the "xxxxx_h1.IGS" file, right-click on it, and choose "New Shape Blueprint".

14. From the pop-up box, choose "Animated Scenery Blueprint" from the list.

15. Your Animated Scenery Blueprint will appear in the Head folder, with the same name as your signal head. You don't have to fill in the fields as i've done here, as this signal head will not be selectable by itself in the game. You do need to pick "Exclude from browser list" in the Category field. After you have done this, click "Preview" at the top of the window.

16. Wah-Lah! Your signal head is now ready for Railworks!.

17. Go back into the Blueprint Editor, click on "Export" at the top of the window, and your signal head is now in the game. It is not selectable in the game though.

18. Follow the same procedure for the post. Remember to put "Exclude from browser list" on the Category field, unless you want it in the game for something like a post lying on the ground in a maintenance area or something.

19. Now here is the part where you need to pay special attention to what you are doing. Right-click on the "Post" folder, and select "New Blueprint" from the pop-up menu.

20. From the pop-up menu, select "Signal Blueprint".

21. Making a signal blueprint from scratch is tricky. We are going to be making SafeTran V-20 versions of the US2Def signals that came with Railworks. There are 20 or so post-type signals in the default package, so we need to use those signals as a reference to make ours (that's where the package that I told you about at the beginning of the page comes in). The first post-type signal we are going to make is a 1-Head, 1-Track link permissive type signal. So, lets name our signal blueprint "SafeTran_USDef_V20_H1T0". This stands for who makes the prototype signal, along with the script maker (RSC), it's a model V20, and it's a 1-Head, 1-Link signal (remember, computers count up from 0, so 0 is actually 1). Now we don't have the scripts that we need loaded up yet, but we can still fill out the rest of the signal fields.

22. Fill out the following fields in the Blueprint:
- Name - Display Name (This is the actual signal name that will be seen in the World Editor Browser)
- Description (It's important to fill this out. When the mouse is placed over the display name, in a few seconds the description of the signal will pop up.)
- Category: Modern Signals

23. Under the "Geometry ID" field, you will need to put in the name of the post.igs. DO NOT put the post.xml (blueprint) file in this space or the signal won't work. Simply open up the Post folder, right-click on the "xxxxx_p1.igs" and select "Copy Filename". Then, paste it in the "Geomety ID" field.

24. Skip down to the bottom of the blueprint, to the section that reads "Child". We are not going to worry about the script file insertion just yet. Click on the "Insert First" button, and then expand the fields. The "Child Name", "Provider", "Product", and "Blueprint ID" fields must be completed here in order for the signal to work properly.

First fill in the Child Name. It is very important that you get the name right, and that name will be "1 Head Signal". I searched for three hours one time trying to find why a signal would not initialize properly in the game. The reason was that I switched the "e" and "a" in "Head". The blueprints must be precise in order for the signal to work. Next, go to the Head folder, right-click on the "xxxxxx.XML" file, select "Copy Filename", and then paste that filename in the "Blueprint ID" line. Finish up by filling the Provider with "YourProviderName", and the Product with "YourProductName".

25. After you have Saved the file, click on the preview button to check your results.

26. And your "physical" signal is complete. But, we are not quite ready to play yet. We still need to attach a script to the signal in order to get it to display different aspects for train traffic control.

27. You need to go to the RailSimulator website and download the Kuju Signal Source files from Section 3: Signalling Guide.

28. Once you have checked the file for viri, you need to unzip the signal source files to a convenient folder on your computer. After you have done this, you will need to transfer files from the Kuju\RailSimulatorUS\RailNetwork\Signals folder to the same folder in your YourProviderName\YourProductName\Signals folder in the Railworks\Source folder. Copy the files that are highlighted in the photos. You can see the paths of the files in the info bar at the top of the window.

29. We now need to make V20 versions of the default Kuju files. Under the Kuju US Modern signals post folder, you will see .xml files that are the blueprints for the in-game default signals. There many different ones available, but the only ones we are interested in are the "USDef2 Post 1 xxxxxxx.xml" files. These are blueprints for the signals on posts. There are tall and short blueprints, but as I said, we are only interested in the Tall (and Special) ones.

We have already made a blueprint that is the equivelent of the default 1 Head 0T. What we need to do now if find out how many links and what kind of signal script we need to plug into our own signal.

30. Right-click on the first signal in the Kuju Post folder and select "Open". This should open the file in Internet Explorer. Ignore the xml code and scroll down to the area of the signal that defines "Number of Track Links"...

31. ...and the Script Component Blueprint. We see here that this signal has 1 link, so we will need to plug that number into the "Number of Links" field in the Blueprint. We also see that the script is "US Def2Post 1 Head.lua". Write that down, remember it, or copy and paste it somewhere, then close the XML file.

32. Go back now to the Asset Editor and open up the Blueprint for your new signal. Put in the required number of track links.

33. Then copy the file name of the appropriate signal script in the left pane and past it in the "Script Name" field. Then, Save and Export your signal. It is now in the game, ready for selection, placement, and play.

34. For practice-sake, we will copy our first signal .xml file, paste it in the same folder, and rename it to coincide with it's Kuju counterpart.

35. Then we will open the file up and change the naming information.

36. We need to change the number of signal links to "2" (remember, computers count from 0, so a 1 target signal would actually have links designated 0 and 1).

37. Now let's re-open the intended signal's counterpart in the Kuju Post folder and check out what signal script it uses.

38. It uses the "US Def2 Post 1 Head 1E.lua" script.

39. We go back to our signal blueprint, copy the filename of the appropriate signal, and past it into the Script Name field. BTW, the "E" designation on the signal designates "End of Line". This is used where there will be no more signals beyond, such as to protect a dead end siding or a yard. It's equivelent in Pike's Products Scripts is "R" (Restricted).

40. Save and Export your signal blueprint.

41. Now, go into the Railworks World Editor and place your signals for testing. I placed the 2-ling 1E signal first...

42. Then the T0 signal "in front" of it.

43. Save your work, then test your signals by running locomotives by them or throwing switches.

Now that the long journey to getting THIS signal in the game is complete, in the next section we will discuss how to model a three-target signal.


Part 2: The Post

Part 4: Multiple Targets.