Session Creation Guidelines
This document outlines the basic guidelines for Session creation for Trainz.
This session document outlines the best practices for creation sessions in Trainz.
Types of Sessions
Multiplayer Sandbox Session
This type of session is a simple sandbox with pre-arranged trains. It must include the multiplayer rule. The Multiplayer Rule lets the player decide if they want to play the game locally or host an online session. The session should contain no objectives, just various trains and drivers related to that route which the player can take over or assign to other players. This session may contain a brief introduction to the route and typical activities, but it is expected the players organise the gameplay for themselves.
Linear driving sessions
This type of session should provide the player with a train, and set them a series of linear tasks. There is only ever one action to be performed at any one time.
The Difficulty rating for a simple session is derived from the level of accuracy expected when following the session instructions.
A session with 'Easy' difficulty may ask the player to stop at stations or interact with industries. It should not include yard work (specifically, no expectation to manually change junctions, or to couple or decouple the consist). It should not feature tough terrain based challenges, e.g. a train that is underpowered to climb a hill. It may score the user on any metric, but should allow a comfortable error margin.
Medium (and higher) difficulties
A session with a 'Medium' difficulty may add one additional challenge to an 'Easy' session. 'Hard' and 'Expert' ratings would require either a particularly stiff challenge, or multiple challenging aspects (e.g. both a tough climb AND difficult timekeeping elements).
Non-linear sessions feature elements that the player can choose which order to complete. For example, the player may arrive in a yard, and be expected to make both a pick up and a set out. Both tasks will be assigned at once, and the player may choose which one to complete first. Relevant waypoints should be used to indicate both tasks are available. Instructions for the session should be clear and concise, but should not be overly hand-holdy. Tell the player where to make the set out, but don't walk them through how to uncouple a consist (that task should be handled by the tutorials). Sessions with non-linear elements are expected to start at 'medium' difficulty, and increase as additional challenges are added.
An orienteering session is a fully non-linear session, where the entire session is one large set of parallel tasks. The session might be to perform a set of switching moves in a large yard. Provided all the vehicles end up in the right place, the moves can be done in any order. At the start of the session, the player is given the work list, but no sequence or schedule is imposed. It is up to the player to determine the most efficient way of achieving the requirements.
This type of session is welcome, but needs careful handling as it is very easy to overload the player with too much information at the start of the session. Trainz: A New Era will introduce an 'Objectives' system, and anyone wanting to create this type of session should plan to use Objectives to detail each parallel task. Each objective should use a sequence of navigation points and short display messages as required.
Quick drive isn't really a session, but map creators still need to plan for it, so it does warrant some attention.
The map should not be left in an incomplete state if it is loaded with no session loaded. Specifically, the map should not require a "base session" of any kind to become functional.
The map should not include rolling stock. Rolling stock should be provided per session in session layers.
But what about industry settings, I hear you say. The map will contain a default set of industry parameters (whatever they were set to when you last saved the map). Each session will override this, but the map will retain a copy. No "base session" required.
If you are making a pack containing a map, some sessions, and some appropriate locomotives and rolling stock, make sure there are consist assets which provide suitable complete trains, made from the locos and rolling stock from the pack.
Instructions and Messages
Session and Route Information
The Session and Route Information is displayed in the game’s Route and Session menus. This information comes from the 'description' tag of the asset. Users can highlight a route from the route list to display the information for it.
The Route Info should contain background information about the route. You might wish to describe the features of the route itself, the operating company, the era it is set, the history of it's construction and operation.
Use this to summarize the session itself. Describe the part of the route used, the train consist used, and the kind of activities the player should expect to be doing.
The Session Information should not be used to give detailed instructions for the session’s objectives. The session should be playable without the user ever reading the Session Information. Detailed instructions should be displayed inside the session itself - and will be covered under the heading Player Instructions.
The session creator should try to avoid the use of abbreviated words or forms of sentences. If this is impractical for some reason, then define the abbreviations.
Each session should start with a brief introduction.
Use the Message Popup Rule (for the avoidance of doubt, that’s "Message Popup", <kuid:-25:964>) to display short messages to give instructions to players. Do not overload players with information - tell them only what they need to know to complete the current task. Correct use of Navigation Points created by the "Navigation Display" rules can eliminate 90% of what was previously written at the start of a session.
Use the Cinematic Camera rule during the session introduction to help set the scene and add a dynamic atmosphere to the introduction. It can also be used to direct the players attention to one or more specific locations.
All text for the session should use the Trainz default font size. Specifically, do not reduce the font size to fit text within a message popup window.
Session instructions should be issued during the course of the session at appropropriate points instead of a chunk of text all at the same time. This allows the player to become engaged in the activity with minimal delay.
Messages displayed inside the session should be short and easy to understand. The messages displayed should be short enough to display completely within the message popup window, without the need for a scroll bar.
The session creator can tie in session instruction message popups with the completion or creation of relevant navigation points.
Sessions for Trainz: A New Era should have an Objectives display using the new Objectives rules. Details of the Objectives system to follow.
Navigation Display rules should be added to assist the user to understand the required course of action at appropriate times during the session. It is recommended that these helpers are deployed sparingly and only at the relevant time in order to keep the number of Navigation Points on screen to a minimum.
Refer to the Navigation Display Example sessions for a guide on how to use navigation points.
Additional Safety Systems
Sessions may use prototypical in-cab safety features. If a session utilizes any safety systems (e.g. ATP or AWS) that are not fitted to the majority of default content, then this should be clearly mentioned in both the Session Information and the Session Introduction. The Session Introduction should have a single line mention (e.g. "This consist is fitted with the Metro-North ATP system."), with the words 'Metro-North ATP system' hyperlinked to a Wiki page on the specific system in use. The Wiki page itself should explain in detail about the system and how to operate it.
Additional background information
As the route and session information only support text, the Session Introduction may feature a link to the TrainzDev Wiki to provide further background information on the route and sessions. The wiki page allows greater control of formatting, images, videos, etc. Note that the wiki page should not provide any necessary session instructions. The session should be playable without the user ever visiting the wiki page.
Any help weblink will always redirect to it’s relevant page on Trainz Wiki and should use the format: “help://” Example: help://KUID_123_456
Languages and Translation
All text in a session should be capable of being translated. This is handled for you by Trainz for any text that you entered into the surveyor UI, but if you made separate HTML assets, these need to read all text from the string-table.
The English string tables need to be written in English. You may optionally provide any other languages in the relevant string table for that language.
Note: Place names need not be translated. If the route has non-english place names, then the Session Summary, Instructions and Objectives should refer to the name as it is used in the map.
The session should check the user’s progress against every objective and confirm the user’s action visually via the Navigation Display rules.
When the current set of navigation points are complete, the user has correctly completed the current objectives. The session can then display the next objective summary window giving the player the next set of instructions.
Sessions should provide feedback to the player on how well they are doing. Criteria used to evaluate performance is at the discretion of the session creator.
Scoring should be done in a realistic manner. It doesn’t have to be “gamey” and unrealistic - we are a simulator after all. However, we do need to provide feedback to the users to indicate how well they are doing, and if their skills are improving.
As a session creator, you may wish to score purely on completion (successfully completing the tasks set) and rules observation (not breaking railroad rules, like speeding or running red lights). You may also wish to include timekeeping (keeping to a schedule), or maybe on something more adventurous like minimising fuel usage, or providing a smooth ride to passengers. Think of it like getting feedback from a supervisor or a railroad inspector.
A session variable should be added with the name ranking_points. This variable will be shown at all times on screen via a new "score" display. The variable ranking_points is increased or decreased during the session in response to the player's progress.
The reason for a change in the session score should be obvious to the player. If the player is penalised, it is important to provide feedback informing the player of the reason for the penalty. This applies both when points are deducted directly, or when a reduced reward is given for a less-than-perfect completion.
For sessions intended to be Trainz built-in content or payware DLC, we recommend using a consistent session variable called 'ranking_points' and a maximum value of 1000 for a perfect score.
Minor infractions (e.g. low level speeding, poor timekeeping) should give the user some acceptable and logical buffer before applying penalty points. You may derive these from real world values if available, or use ball-park figures (e.g. 10% overspeed, 5 minutes delay) if not.
More serious infractions (passing red signals, failing to stop at a platform during a passenger run, moving the train while passengers are boarding) should be immediately and heavily penalized.
Early session termination should be used in circumstances when a train would be cancelled or the driver relieved of duty in real life. This should include serious safety failures (derailments or collisions), as well as major schedule issues (e.g. service terminated due to being so late it’s not worth running any more).
Ideally all other situations should allow the session to continue with an appropriate score penalty.
However, due to the session complexity introduced by the requirement to handle the users train getting out of a planned path should the user pass a red signal, this type of infraction may be punished by session termination. Note that the ‘signal passed at danger rule’ can differentiate between Absolute and Permissive reds - as represented in game by states “EX_STOP” and “EX_STOP_THEN_CONTINUE” aspects, and only Absolute reds (“EX_STOP”) should be punished in this way.
Where an absolute red light must be passed within the course of a session, the driver should be ‘talked past’ the red light using a message.
Dynamic change for sub objective failure
On certain conditions, the session creator can implement dynamic changes based on the user’s actions. For example, if he is late and not meeting his schedule, the session may make him wait at a signal until other traffic has passed, including routing AI traffic ahead of the player which will cause the player to become even further delayed.
If the session creator is using such a dynamic change, then a message window should inform the user about such changes when they occur.
The Session Complete Rule (<kuid:447264:1011>) can be used to mark the session as complete in the achievements system. Add the rule to the session where the message for a successful completion is displayed.
Fully automated sessions (often called a "Ride" or "Passenger" session) are not considered to add gameplay value by themselves.
However, sessions may offer the user a choice to drive themselves or have an AI complete the session. For sessions intended to be submitted as Trainz built-in or DLC content, this is highly recommended.
Note that if an AI option is used to automate the session, the user must be prevented from earning a completed session achievement.