Hardware Controller


The new dx9 version of Rail3D (release Christmas 2009) has support for a joystick. Why? What can you do with this?


Using a joystick for Rail3D

If you have a DirectX compatable joystick, you can use it with Rail3D.

I use a Speedlink Black Widow joystick.



We use these at work for flight sims and recently we had to replace one that got broken by an over-enthusiastic pilot. This gave me the opportunity to take one apart and have a poke round inside. So I decided to see what I could do with using one as the core of a Rail3D controller.

Another nice point about theBlackWidow is it has a nice throttle control on the left (And four nice big buttons), so these are immediately usable for a train (at least for modern ones with combined brake/throttle controls). So now, I can drive Rail3D with the throttle control:


This works really nicely, it feels much more natural than messing around with the mouse (of course), and with the (working) gauges on the bottom of the screen I found myself watching the gauges to see what the train was doing as I moved the control. Great fun!

So, that’s good for a train with a single combined power/brake controller, but what about other control styles?

The joystick control itself is not a lot of use for trains, but it has four buttons on the stick, as well as the top hat point-of-view control. Originally I was thinking I would remove the joystick, but I think on reflection I'’ll leave it in place in case I ever need a joystick for something else. The top hat pov switch could be used to control the Rail3D pov.

My plan is to adapt the joystick electronics to take additional “control modules”.


So, what I plan is:

  • Fit sockets to the back of the joystick case to break out the connections to the stick sliders, and the buttons on the stick.
  • Buy some potentiometers (of appropriate resistance) and big buttons (probably a Maplin job)
  • Mount new pots and buttons in suitable case (Maplin again) with connectors to plug into the joystick.

Advantages of this approach:

  • I don’t need to mess with the electronics/usb/driver code – I’m just using the existing code and electronics
  • By putting a socket on the back of the joystick case, I can make several boxes with controls – eg one configured for diesels, one for steam etc
  • I’m going to add something to the (dx9) code so that they way the program reads the controls can be easily reconfigured for different control sets.


MRG 28/06/2013 15:10:06