Sit back, relax, and watch your trains drive around!
This mod creates a dynamic screensaver which follows trains as they drive around from station to station. The screensaver can be started or stopped at any time with cmd/ctrl + t or the /trainsaver chat command. The screensaver can also start automatically when a player is AFK. Most game-control keys will exit the screensaver and return control to the player, except the right/left arrow keys which navigate a history of previously viewed targets.
Please report any issues or suggestions on the Discussion page.
Features
- Easy Access: start or stop trainsaver at any time with a configurable hotkey (default: cmd/ctrl + t) or use the /trainsaver command in chat console
- AFK AutoStart: trainsaver can start automatically when player is afk
- Quick Escape: easily exit trainsaver by pressing any game-control key (movement, inventory, logistic network, train overview, etc.)
- Fully Configurable: each player has their own individual settings to control how trainsaver behaves (zoom, transitions, AFK AutoStart time, etc.)
- Time Travel: take control of the focus target and navigate through your history of previously viewed targets (default: right/left arrow keys)
- Custom Achievements: 8 unique trainsaver achievements to unlock, plus 3 secret hidden ones!
- Scope Creep: enable the scope creep mod setting to expand trainsaver's focus beyond just trains /|(β¦.β¦)/|\
trainsaver demo video
(4 minutes, v0.0.3, December 2020)

trainsaver extended preview video
(30 minutes, v0.0.3, December 2020)
![]()
Commands
trainsaver provides the following chat commands:
/trainsaver--> toggles trainsaver on or off/ts-start--> starts trainsaver/ts-end--> ends trainsaver/ts-verbose--> toggles verbose mode debug messages on or off/ts-reset_history--> clears the target history for the player/ts-next_target--> tells trainsaver to go forward in history. finds a new target if current target is the newest in history/ts-previous_target--> tells trainsaver to go backward in history. won't do anything if the current target is the oldest in history/ts-ignore_stations <train-stop>--> adds the specified train stations to the ignored stations list/ts-unignore_stations <train-stop>--> removes the specified train stations from the ignored stations list/ts-list_ignored_stations--> lists all currently ignored train stations
Interface
trainsaver provides an interface for other mods to interact with. The interface is named trainsaver and includes the following functions:
trainsaver_status(player_index)--> returns the status of trainsaver for a given player, either "active" or "inactive"trainsaver_target(player_index)--> returns the current target (LuaEntity | LuaUnitGroup) trainsaver is following for a given player, or nil if there is nonestart_trainsaver(player_index)--> starts trainsaver for a given playerend_trainsaver(player_index)--> ends trainsaver for a given playertoggle_trainsaver(player_index)--> toggles trainsaver for a given playerfocus_next_target(player_index)--> tells trainsaver to go forward in history. finds a new target if current target is the newest in historyfocus_previous_target(player_index)--> tells trainsaver to go backward in history. won't do anything if the current target is the oldest in historyreset_player_history(player_index)--> clears the target history for a given player
Example interface usage:
- https://lua-api.factorio.com/latest/classes/LuaRemote.html#call
remote.call("trainsaver", "toggle_trainsaver", player_index)
Translation
Help translate trainsaver to more languages: https://crowdin.com/project/factorio-mods-localization
Currently available locale:
πΊπΈ English (en), π·πΊ Russian (ru), πΊπ¦ Ukrainian (uk)
Compatibility
There are currently no known mod compatibility issues. To report a compatibility issue, please make a post on the discussion page.
If you have suggestions or bug fixes that you would like to contribute directly, feel free to open a pull request on GitHub.