For those who are new to CityTrafficSimulator or traffic simulations at all, here is a short overview over the main features and how to use them.


CityTrafficSimulator requires no installation. Simply extract the zip archive to a location of your choice and run the program from there. However, you need to have the .NET-Framework version 2 or higher installed.

Main User Interface

The standard GUI of CityTrafficSimulator is divided into three main areas

The large top-left area with white background is the network canvas in which the actual traffic simulation takes place. To the right you find the settings column with different tabs, each offering different properties to setup the traffic network, the simulation or the visual appearance. At the bottom, you find two tabs: The Signal Light editor to setup signal times and the Traffic Volume Editor to setup the traffic volume for your network.

Network Canvas

The network canvas contains the traffic network. The key tool for network editing is the mouse.

  • Since version 0.6-6 the scrolling behavior has changed and the former scroll bars have gone: To change/move the currently visible view of your network use drag and drop with the right mouse button.
  • Existing nodes and connections can be selected with the left mouse button and moved by drag and drop. Once you have selected a node two anchor points appear, that allow you to modify curvature of the Bezier curve and the direction of travel (nodes and lines can be traversed in only one direction!). By default, when you move one of the anchor points the opposite anchor point will be mirrored. This ensures that your network does not contain any edges. You can prevent this behavior by holding down the ALT key.
  • To create new nodes use the left mouse button while holding down the CTRL key. If you keep the mouse button pressed, you can directly define the position of the anchor points (thus, the curvature of the connection) via drag and drop. If a node has been selected before, it will be automatically connected to the newly created node. This way long roads can be created without hassle.
  • To connect two existing nodes, first select the start node. Then hold down the ALT key and click on the destination node.
  • To delete connections and/or nodes select them first and then press the delete key. The selected connections/nodes will be deleted, as well as all connections connected to a node which has been deleted.
  • In order to subdivide existing connections, select it first and then hit the S key. The selected connection will be divided in the middle into two parts.


Connection Setup Tab

The Connection Setup tab offers you to alter the existing traffic network:

If you have selected a connection, you can specify its priority and the target velocity for vehicles on this connection. At crossing connections vehicles on the connection with the higher priority have the right of way. You can further define whether incoming/outgoing line changes are allowed on this connection and which vehicle classes (cars, busses, trams) may use that connection. The currently selected options are also assigned to newly created connections.

The Recalculate Line Changes button reexamines the whole network for line change possibilities. For performance reasons (this is a rather time-consuming task) this is not done when adding new nodes/connections. However, this step is automatically performed after loading a network from a XML file.

Signal Assignment Tab

Once you've selected one ore more nodes you can assign signals to them by clicking on the signal name in the signal list. Signal groups, signal lights and their signal times are to be defined in the Signal Light Editor. If you want to undo a signal assignment, select the signal and click the Free Node button or alternatively select any signal group.

Network Info Tab

In the Network Information box you can enter a title for your network any text that should be saved along with the layout. Furthermore, you find here the buttons to save/load your network to/from XML files.

Simulation Setup Tab

Here you find some controls to setup the simulation speed and granularity. The simulation speed scale lets you choose the time warp factor where 1 means real-time. Below you can determine the simulation granularity, meaning how many simulation steps (= calculations) shall be made per simulation second. In cases where one ore more vehicles got stuck you can hit the Remove all Vehicles button.

Thumbnail Tab

This tab offers a thumbnail overview of the traffic network and its currently visible part.

Render Setup Tab

The View Tab lets you setup various display and render options. This includes the zoom level and render quality (quality vs. speed) as well as the possibility to show debug information and/or statistics on demand.

Canvas Setup Tab

Here you can load a background image which is for instance useful when modeling real-world networks. Please regard the built-in scale of CityTrafficSimulator which is set to 10 Pixels/meter. The background image zoom allows you to adjust your image to this scale.

Thumbnail Tab

The Thumbnail tab shows you an overview over your network and allows you to see and change the current part you're looking at.


Signal Light Editor

The Signal Light Editor lets you define an arbitrary number of traffic signals. They can be named individually and arranged in groups. Each signal has its signal cycle (red/green phases) shown in the timeline on the right. By default, the traffic lights are always red.

To add green phases, click with the left mouse button onto the corresponding bar while holding the CTRL key. Existing green phases can be moved or adjusted in their length by simple drag and drop. To delete an existing green phase simply click on it with the right mouse button while holding down the CTRL key.

Traffic Volume Editor

The best road network is not worth much when there is no traffic volume. With the Traffic Volume Editor you can setup automatic traffic volume generation.

The first thing to do is to specify start and destination nodes for the vehicles. Therefore, select a group of nodes in your network an click on the Add button below the start Nodes List or the Destination Nodes list (depending whether your nodes shall act as start or as destination nodes for traffic volume). Each group of nodes can be given a title. Existing groups of nodes can be renamed (Set button), be deleted (Remove button) or change their nodes (select new nodes in network and click Update button).

Once you've selected start nodes and destination nodes from the two lists, you can specify the traffic volume for this route. Therefore, just set the SpinEdits on the right-hand side to the wanted value. You can specify the traffic volume for each vehicle group individually in vehicles/hour. Note, that the routing from the start to the destination is shown in the Thumbnail view.

In addition, the Traffic Volume Editor lets you setup some global settings like the target velocity for each vehicle group or the Global Traffic Volume Multiplier, that allows you to change the traffic volume of all routes at once, e.g. to simulate rush-hours.


Since this manual is only intended as a rough guide, some thing might remain unclear. If you have questions or comments, please write me a short e-mail to Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!. I'll be happy to hear from you.

Please note: This program is still in development, which in particular means that there might be things that work only partially or not at all. It might even crash without warning. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see

I'm always looking forward to receive e-mails from you containing comments or constructive criticism. So if you have any inquiries feel free to write me an e-mail. But please also understand that this is only a hobby product and I put more work on interesting algorithms and the expansion of functionality rather than on error-free products.