Skip to content

Vehicle orders GUI: Learning from other games #9551

2TallTyler started this conversation in Features
Vehicle orders GUI: Learning from other games #9551
Sep 11, 2021 · 7 comments · 1 reply

It's no secret that the current vehicle orders GUI needs some love. It's text-heavy and has a lot of buttons, some of which are rarely used. It even has duplicate Refit buttons in depot orders.

I recognize that any redesign of this GUI would be...contentious. But in preparation for somebody (maybe me, maybe not) tackling it someday, I thought it would be helpful to see how other games handle vehicle orders, particularly how properties of each order like "Wait for Full Load" are selected and shown.

As we've done in other discussion posts, I'll be creating a separate post in this discussion thread for each strategy, to better sort discussions of each.


1 reply

The Railroad Tycoon approach: Open a new window to modify order properties

Railroad Tycoon-inspired games (as opposed to TTD-inspired games) tend to load multiple cargo types onto each train, and when modifying a route, clicking on a station order opens a new window to give players granular control over what is loaded at that station.

I don't think there's much to copy from this approach, since it's so different from OpenTTD gameplay.

Railroad Tycoon 3


Railway Empire


Sid Meier's Railroads


0 replies

Simutrans: Similar to OpenTTD, with slightly more granularity

The top box with the highlighted text is a percentage-based minimum load control similar to "Full Load" in OpenTTD.


0 replies

Cities in Motion: Timetables, not really orders

These public transit simulators don't have any concept of waiting until full, so they are just a list of stops.

Interestingly, CiM2 shows the expected timetable distance from the first stop, but this is more relevant to a discussion of timetables (which is probably a separate conversation, since OpenTTD timetables have more issues than simply the GUI, like no auto-separation).

I don't see much we can take from this.

Cities in Motion 1


Cities in Motion 2


0 replies

Transport Fever 2: Icons in the order list

TpF2 is clearly TTD-inspired, but uses orders for an entire line with multiple vehicles instead of shared orders in OpenTTD. Nevertheless, the order windows work the same.

Here, the text only indicates the station/waypoint name, and the icons to the right indicate the special behavior, including track selection (track number), loading behavior (two boxes), and which cargos are loaded (gear).

I particularly like how they've eliminated the extraneous "Go non-stop to" at the beginning of each OpenTTD order, and the icon to indicate waypoints. Also note that all trains seem to load and unload in the center of station platforms in TpF2, eliminating even more text.


0 replies

Mashinky and Voxel Tycoon: New lines for order properties

Both of these modern TTD-inspired games use new lines below each station order to indicate any special behavior which needs to happen at the above order.

I quite like this approach, but in my opinion Mashinky makes them look too much like station orders while Voxel Tycoon takes up too much space making them distinct. I'd like to see a middle ground in compactness.

Also, the manner of adding stations is different in each game. Mashinky has buttons for each order (and doesn't seem to have a "Quick order creation" mode where the Add Station button remains pressed after clicking on each station), while Voxel Tycoon prompts you for the order behavior when adding each station — see below.



Voxel Tycoon

This menu appears when you click on a station to add it, forcing you to choose a behavior:


You can also modify orders later:


0 replies

TrueBrain Sep 14, 2021

(PS: awesome thread @2TallTyler , tnx for all the investigation above)

I had some talks about this pretty recently, so let me put them here too. Discord DMs might not be the place to store these ideas.
This story is a personal opinion and should be read as such.

I think we should move away from the "order" concept, and go into a "route" / "lines" concept. The reasoning is simple: if you play OpenTTD for a bit of time, you rarely have a single train on a route. Shared orders are the bread and butter to make a successful empire, so why not center a bit more around that.

Currently, shared orders are very hidden unless you know what you are looking for. This is often confusing to me, so I assume for many people.

What I would do is make somewhere, not sure where yet, where you can define routes. You select the stations, waypoints and buoys to make a route. You also select which depots can be used for the route, for service, new trains, etc. From this window you can also make new trains, which assigns them on the route.
It should be easy to drag a train in a new route, etc.
Maybe timetable also makes a lot more sense from this window.
If you want to scale up your route, you can just click "buy new train based on ..." or what-ever, to quickly "clone" trains.

On a train you can see which route it is following. Here basically it is like the current orders.

From a technical point, not much changes really. As shared orders are really routes. Just .. pivoted from the order, instead of from the route. And make a GUI dedicated for routes, instead of for trains.

Additionally, I think we should change how we plan those routes. In the most basic form, we want to tell where a train has to go: go to station A, next to station B, etc. This is the primary information, and everything else should be second.
Next to that, we have a ton of properties we can assign to the destination: full load, at the end, etc. I think we should stop adding that on a single line, as that becomes completely unreadable. Instead, make it multiline, like this:

Go to station A
-- Full load
-- Stop at end of station
-- Refit for Coal 

And that should be collapsible. Maybe with some icons we can show a short summary of what it set, like in the above case F E <icon of coal>. I think this also allows for better integration for more advanced stuff, like for example better ways to do time tables.

This is basically a bit of an hybrid of a few of the above ideas. But it stays close to what we currently have, so not much technical changes are needed. It mostly is changing how the GUI represents it.

Anyway, still a very rough idea. I should prototype it a bit to give more of an impression. But see this is (another) conversation starter :)

1 reply

I think we should move away from the "order" concept, and go into a "route" / "lines" concept

I think it would really make sense and could even be a significant simplification not only for new players. But I also think that creating something too revolutionary would not necessarily be good. Yes, from what I see very often in the game, many players don't notice at all that vehicles can form groups of common orders. This is very hided and not obvious idea, but this knowlege is quite important if you want to develop your company and have fun from the game so I think that some improvements would be very useful.

What I would do is make somewhere, not sure where yet, where you can define routes.

I hope it won't be offtop, but I would have some concept here. :)
Some time ago there was a topic on the TT-forums about the problem of assigning vehicles to other orders and transferring them to groups with other orders. Then I thought about such a solution...

Group by Vehicles or Orders v1 1

Recently I came to the conclusion that dividing vehicles into groups according to two criteria and creating two tabs is not very useful at all and it would be possible to keep one list.

Vehicles and orders list v 1 2
Perhaps over "unsupported lines" could be highlighted and centered title "Lines" to organize this list better.

A few assumptions:

  1. Each vehicle or group of vehicles sharing the orders would form a separate group on the list - a line (Line 1, Line 2, Line 3, ...) - it would be written in black
  2. Orders could be created in two ways:
    A*. classic, like today (all current players stay at home)
    B*. adding a new line through a dedicated button in the vehicle list window
    *1A. By assigning orders in the classic way, the game would automatically create a new group / line in the vehicle list, and the vehicle with these orders would immediately be placed in that order group.
    *1B. After pressing the create new line button, the same orders creation window would open. After creating a new line, the player could add any existing vehicle to it, both from the "No orders" group currently known as "Ungrouped" and any other, thereby changing the vehicle's orders (you cannot add a new vehicle to the group if it does not exist - usually there are many depots, often on separate lines, so the player would have to decide where to buy this new vehicle). When moving a vehicle between groups / lines with Ctrl pressed, all vehicles in that group are moved.
  3. Copying vehicles to avoid creating a list of tens or hundreds of groups / lines would require some changes - I see two possibilities:
    A. When copying a vehicle without holding down Ctrl, it builds without any orders assigned - currently, if the player copies trains for the same line this way, it creates a big problem for himself, so it is worth learning how to use Ctrl in this case. Many players know about it and they don't use it anyway. A separate argument for such a solution is also the fact that currently when copying a vehicle, regardless of whether it is with or without Ctrl, it is always assigned to the same group to which the copied vehicle belonged.
    B. After pressing the icon or the "Clone" button, a small window would open under the cursor with the selection "Clone vehicle with orders" and "Clone vehicle".
  4. Removed from the window would be the grouping option which would become redundant and the icon for creating new groups (this one would change form and location).
  5. The player would still be able to create groups - the button would be on a separate line because changing the name, color and deleting the group would also apply to the lines.
  6. Moving a vehicle or line to another line would change the orders for that or those vehicles.
  7. After selecting the line, the player could change its route by pressing the icon - with the same look as in the vehicle window.
  8. Transferring the moving vehicle to the group "without orders" would remove its orders and give the order to stop in the nearest depot.
  9. Groups, to improve readability, could be marked in a different color, eg yellow or orange. The numbers would mean: number of vehicles / number of lines
  10. Instead of the "Ungrouped vehicles" tab, there would be "Ungrouped lines", which would contain all lines that the player won't assign anywhere. Additionally, the necessary tabs would be "Vehicles without orders" and "Unsupported lines" - if any of these tabs were empty, it might not be shown or they could be shaded.
  11. Perhaps instead of the "New Group" and "New Line" buttons it could be icons? In any case, especially "New Line" I think it should be easily noticeable so that new players, especially in the first contact with the game, could easily notice it.

Orders / Timetables / Lines window

I think we should change how we plan those routes. In the most basic form, we want to tell where a train has to go: go to station A, next to station B, etc. This is the primary information, and everything else should be second.
Next to that, we have a ton of properties we can assign to the destination: full load, at the end, etc. I think we should stop adding that on a single line, as that becomes completely unreadable. Instead, make it multiline

It could certainly be much clearer than it is today. However, the problem with such a system appears when the instruction list is long, which is not uncommon in OTTD, but maybe there is some way in it.

Regarding the presented by 2TallTyler solutions from different games, well... a bit of a shame to admit, but I haven't played any of them except Simutrans, so I can't really comment on which of these solutions was good. However, when it comes to Simutrans, I gave up on this game quite quickly, precisely because of the way of creating timetables. Maybe I was too used to how it is dealt with in OTTD, but for me it was not very intuitive. There was too much of everything, and I didn't feel like delving into it. Maybe the conclusion I can draw from this is that the game, getting to know its basic functions necessary to start the game and start enjoying it should be as simple as possible. Any complexity may arise over time, but should not overwhelm the player at the start.

In any case, I see this topic as a search for solutions that are worthy and unworthy of attention. So I would also like to add a few of the solutions I have been thinking about. I admit that of all the sketches to improve the various interface elements, the orders creation window was probably the first, because it was something I thought and still think it needs to be changed the most. I am not completely satisfied with any of the sketches, most of them are also incomplete, but I think they can be useful in some way as well.

The assumptions that guided me were primarily:

  1. Improved readability - now both the order list and the timetable form an almost uniform wall of text. I have good eyesight, but often finding a specific item is not easy. When I create and modify dozens of such order lists during the game, it becomes tedious.
  2. Reducing the time-consuming of creating orders - the main problem here is the lack of autoseparation of vehicles, so sometimes the only solution is to create orders with ridig timetables. Determining such a timetables, especially on a large loop, can be very time consuming. But, even when a timetable is not used, it is unnecessarily busy to set up all these orders, each time selecting from the lists of appropriate orders, especially when the order includes a specific stopping time - which requires switching between windows and searching for positions again in a maze of text.
  3. Keeping the window look in a classic style, not different from the rest of the game - I'm not sure if I did it;)

Solutions that make sense to me:

  1. Combining the orders window with the timetable window into one
  2. Replacing the text orders with icons - after a short acquainted, they are much more readable than the walls of the text, just a short look at the list is enough to find the right position, thanks to this solution the name of the station, as the only text, are much easier to see.
  3. Adding lines to separate individual orders - they are commonly used in many windows and are the easiest way to improve readability.
  4. An alternative to icons may be to color some text elements.
  5. Removal (or simplification) of the current, cumbersome method of creating rigid timetables in favor of autoseparation - one button: on / off.
  6. Removal of the timetable - I really don't know what use could be made of it, it is hard for me to imagine that someone would want to, for example, play in synchronizing timetables, but maybe I am wrong - in many sketches I kept the timetable button, which expands the part showing times of arrivals and departures.

Version 1 - first attempt

Orders window v1 2b

Two windows were joined into one. Icons instead of text. First version, so many features are missing. The part of adding new commands looks quite interesting, but I'm not sure if it fits the rest of the interface.

Version 1.X - Several other earlier and later variants of the first version

Orders window v1 X

Version 2.9 - currently the latest

Orders window v2 9 3

I have posted this graphic probably twice already. Sorry for the repetition, but I think it fits the topic. The method of choosing the orders is described, although I am curious if it would be difficult for you to guess what the icons mean without it. :) What is not described, I will mention in points:

  1. Times and speeds can be set by pressing RMB - a small window opens where you can enter or delete a value. The set times and speeds are highlighted in a different color. The window also shows the speeds achieved on the sections - just like the times. The total time of the route is also always shown.
  2. You can change the position of the train in the station by pressing LMB (closer) and RMB (further) - maximum two clicks. This icon is not very legible, but I had no better idea.
  3. To add a refit on the station, select the station in the list (this will also happen when changing basic orders). Then there will be an icon on the bottom bar that allows you to add such a task.
  4. The graphic on the bottom bar shows functions for adding a new order (selection of a station on the map / drive to the nearest depot / conditional order)
  5. The red icon in the upper left corner changes the type of orders. There would be two types: unidirectional and bidirectional. The latter would be primarily intended for passenger lines - it is enough to set one direction and the other is filled automatically. Such a solution would be very useful especially on long routes with many stops.
  6. Autoseparation: On / Off and nothing else - just chill out, relax and enjoy the game :) ...Everything else is unnecessary*.
  7. Shared orders - clicking on the icon or text would open the list of vehicles sharing orders, there you can also exclude the vehicle from the group
  8. Rigid timetable - it could be activated with one button, e.g. with a padlock icon next to the total time of the entire route
  9. In the upper left corner, next to the X, there is an icon that switches the order window to the traditional text view.
  10. Simple icons have been used instead of "go to", "go via", "go non-stop" texts. Separate for journey (possibility of additional stop - dashed line) and station / waypoint (square means stop, arrow - passage)
  11. "Timetable" button preserved - after pressing it, the right side of the window widens and the times of arrivals and departures are displayed: yellow letters on a black background.

Version 2.X - Several earlier drafts

Orders window v2 X

Version 3 - minimum variant with colored text

Orders window v3 1

Likewise, two windows were merged into one. Here, instead of icons, buttons with text have been preserved. There is no auto-separation and speed setting option. The settings for the stop are shown, keeping the sequence of events (unload > refit > load). LMB selects the next available order, RMB opens the list of available orders. By pressing part of the journey it would be possible to set the time, speed and the possibility of an additional stop ("Go to"). For a better effect, it would be nice to be able to choose other font colors.

0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
3 participants