Skip to content

Conversation

@leezer3
Copy link
Owner

@leezer3 leezer3 commented Aug 9, 2021

This PR contains a parser for the MSTS consist / vehicle format, along with a lot of associated changes to backend systems.
Relevant changes are being cherry-picked into master and this PR rebased relatively regularly.

OpenRails content / physics is not targetted, but is passively supported (recognised as valid but otherwise ignored).

Currently Working:

  • Most consists load in-game correctly.
  • Most cabview components.
  • Basic brake physics
  • Diesel electric physics (basic)
  • Electric physics (basic)
  • Horn sounds
  • Bell sounds (mapped to music horn)

Partially Working:

  • Traction variable controlled sounds are partially working, and will depend on the exact implimentation within the SMS file. Basic sound sets will generally work acceptably, but those dependant on complex interworking of some variables may not.
  • Cab signal displays.

Not Currently Implemented:

Working Animations:

  • PANTOGRAPH1 (pantograph2 is currently rendered permanently down)
  • WHEELS-N
  • ROD-N
  • PISTON-N

Unfortunately, the inbuilt consist / vehicle parser seems to have been very forgiving of errors in the textual block, which means that I'm still very much rehacking the base parser as I go along.....
Proabably want to cherry-pick the parser changes into the mainline branch.

msts01
30-odd van train from the 3DTS Cambrian route.

msts02

Class 47 & TEA tankers from Making Tracks' Network South East route.

@leezer3
Copy link
Owner Author

leezer3 commented Sep 13, 2021

Have picked out the fixes to the format parser, through piped brake type and the renderer tweaks and rebased this back onto the head of master.
Probably going to end up doing this a lot, as there are too many half-features we need to get the whole thing working.....

@leezer3
Copy link
Owner Author

leezer3 commented Sep 18, 2021

msts03

Took a little more bashing, but we can now load a MSTS consist into the main game.
Nothing really works (yet), so no physics, controls etc. but if nothing else we could just load a default set of acceleration curves.

Large detailed consists are rather slower than I'd like though, although this is poly-count related as opposed to anything else. We still need to find some speedups in the GL3 renderer.

Further Thoughts:

  • Everything not in the Train.MsTs plugin probably wants picking into master (again), as otherwise this will end up getting out of sync. Probably needs doing repeatedly every time something is fixed.....
  • No acceleration curves in MSTS as such. All it's got is stuff like max power numbers. Divide these by notches as a first step?
  • Need a percentage based power / brake controller. Been on the list for a while :/
  • Need to deal with the keyframe animations in MSTS stuff. Should be easier with the new renderer.

@leezer3
Copy link
Owner Author

leezer3 commented Nov 16, 2021

A little more work done.

Cabviews now load, but need a lot of components integrating. Camera restriction also appears to be broken.

If wheelspin is disabled, we can actually move our trains. No sound, brakes or power notch simulation at the minute mind, so not exactly useful.
Need to also consider refactoring the acceleration curves a bit.
Also highlights the fact that wheels don't rotate :/ Need to investigate that properly- I believe that an animation frame for wheels pulls out the wheel radii from the engine properties, and presumably twiddles via speed and this. Would wheel radii be useful for animated files?!

@leezer3
Copy link
Owner Author

leezer3 commented Dec 14, 2021

Animation changes really want pulling to master when completed & working- This is a common method of doing things.

Haven't tested performance yet, perhaps this would be better in shader when completed?!

Unsure how complete the rest of this is at the minute....

@leezer3
Copy link
Owner Author

leezer3 commented Jan 18, 2022

API changes pulled out and merged into master, just to try and keep things in better sync.

@leezer3
Copy link
Owner Author

leezer3 commented Jan 18, 2022

This branch will now load the new hierarchy objects.
All complex parts appear to be where they should in a static object, which is encouraging.....

However, it doesn't get them into train exteriors, as the CarSection is tied to the current animated object. Still fiddling, heavy WIP.

@ginga81
Copy link
Contributor

ginga81 commented Feb 22, 2025

If this were to create, and I were able to create my own MSTS object, would it be possible to move the rod of a SL like this?
Japanese SLs have rods as this Steambox bigboy, but sorry, I don't think BVEC_ATS can animate reverser gears or other rods to this extent.

bigboy.mp4

@leezer3
Copy link
Owner Author

leezer3 commented Feb 22, 2025

Abolutely.
The whole point is to allow any hierarchy of parts to animate as a whole, and it's basically the standard animation format for any modern game.

If we add an appropriate controller (for valve gear, this would primarily be the wheel radius), then the animations actually work correctly in the current build.

(It'd be reasonably simple to add the wheel radii to train.xml so that a MSTS shape had working wheel animations, but the issue is that wheels can be attached to parent objects and stuff, which isn't yet really there)


Unfortunately though, we don't yet have many of the actual controllers implemented in-game.
It's somewhat of what we'd call a chicken and egg problem: To actually implement these controllers in any useful way, we need to implement the 'missing' subsystems.

MSTS has a reasonably readable textual format, and I'm basically currently using it to start to implement these missing systems, as a known working prototype.
Nothing very useful is likely to come out of this in the short and probably medium terms, but it's all interelated with moving away from being a simple liner simulator to something 'better....

@leezer3 leezer3 merged commit fbd3b39 into master Dec 29, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants