Can't find VSync setting in Trainz+

zaphod1

New member
I’ve seen a lot of forum messages about performance that mention a VSync setting. I have trainz+ standard and I don’t see that setting. Is it only available in certain versions of Trainz?
 
On the Launcher, click on Trainz settings.
V-sync is found on the first tab where the display options are and is the first item below the Full screen checkbox.
 
Thanks for getting back to me. My launcher has General, Install, performance, mytrainz and dev tabs, but none of them have vsync. I've seen screenshots of other people's launcher and they have a vsync in the general tab right under the full screen drop down.
 
Here’s the blunt truth: Trainz+ on macOS hides (or removes) VSync settings because the Mac build uses Apple’s Metal graphics API, and N3V never implemented the same VSync control layer that exists in the Windows/DirectX version. macOS handles frame pacing differently, and Trainz+ simply doesn’t expose the toggle.


Let me break it down cleanly and clearly.




🎛️ Why Trainz+ on Mac Has​


🧩 1.​


Trainz+ on Windows uses DirectX 11, where N3V already built a full VSync control layer (Full / Half / None).
On macOS, Trainz+ uses Metal, and the engine’s VSync implementation was never ported 1:1.


Metal’s swapchain behavior is more rigid, and Apple strongly encourages apps to follow system-level frame pacing.


Result:
No user-facing VSync toggle on macOS.




🖥️ 2. macOS Forces VSync in Most Fullscreen/Windowed Modes​


macOS historically enforces VSync at the compositor level unless an app explicitly bypasses it (which Trainz+ does not).


So even if N3V added a toggle, it wouldn’t behave the same as Windows.




🛠️ 3. N3V Prioritized Windows Graphics Features​


Trainz+ is primarily developed and optimized for Windows.
Mac builds often lag behind in:


  • Advanced graphics settings
  • Driver-level features
  • Experimental toggles
  • Performance tuning options

This is why you see missing items like:


  • VSync
  • Threading controls
  • Certain post-processing toggles
  • Some debug/Dev options



🧪 4. The Mac Launcher UI Is Not Identical​


The Trainz Launcher on macOS is a separate UI implementation.
Some settings simply never got added to the Mac version of the launcher—even if the engine technically supports them.


This is why you see the VSync section in Windows documentation but not on macOS.




🧵 So What Does Trainz+ on Mac Actually Do?​


It defaults to system-level VSync, meaning:


  • Frame pacing is tied to your display’s refresh rate
  • You cannot force Half VSync (30 FPS cap)
  • You cannot disable VSync to uncap FPS
  • You cannot manually tune stutter behavior

This is why Trainz+ on Mac often feels “smooth but sluggish” or “smooth but capped.”



 

🌓 1. How to Simulate Half VSync (30 FPS cap) on macOS​

macOS won’t let Trainz+ explicitly choose Half VSync, but you can force the same effect using system‑level frame‑rate caps.

✅ Method A — Use macOS Display Refresh Overrides (per‑app)

This is the cleanest method.

  1. Open System Settings → Displays

  2. Select your monitor

  3. Change Refresh Rate to 60 Hz (if not already)

  4. Now open Trainz+

  5. In Trainz+, set Max FPS = 30
Why this works:
Metal’s compositor enforces VSync at the display’s refresh rate.
If you cap the app to 30 FPS, Metal will sync every other frame → Half VSync behavior.

⚠️ Caveat​

This only works if Trainz+ respects the FPS cap (it usually does on Mac).

✅ Method B — Force a 30 Hz Display Mode

This is the true Half VSync equivalent.
You can force your monitor into a 30 Hz mode using:

  • SwitchResX (most reliable)

  • BetterDisplay (free, works well on Apple Silicon)
Steps (SwitchResX):

  1. Install SwitchResX

  2. Create a Custom Resolution → 30 Hz

  3. Reboot

  4. Select the 30 Hz mode

  5. Launch Trainz+
Result:
Metal VSync locks Trainz+ to 30 FPS with perfect pacing.
This is the closest you’ll get to Windows “Half VSync” on macOS.

🚂 2. How to Reduce Stutter in Trainz+ on macOS​

Metal is smooth, but Trainz+ is… not always. Here’s how to tame it.

🧹 A. Disable macOS Background Frame Pacing Features

These can cause micro‑stutter in games that aren’t optimized for Metal.

Do this:​


  1. Open System Settings → Accessibility → Display

  2. Turn Reduce Motion = ON

  3. Turn Increase Contrast = OFF

  4. Turn Transparency = OFF
These reduce compositor overhead and stabilize frame pacing.

🧱 B. Force Trainz+ into True Fullscreen

Metal’s “fullscreen windowed” mode can cause stutter.
Try:

  1. Launch Trainz+

  2. Press Option + Enter

  3. Ensure the menu bar disappears completely
If the menu bar remains visible → it’s not true fullscreen → stutter increases.

🧊 C. Disable Trainz+ Threaded Optimizations

On macOS, Trainz’ threading model sometimes causes uneven frame delivery.
In Trainz+:

  • Set Process Priority = Normal

  • Set Threading Mode = Single Threaded (yes, really — on Mac this often reduces stutter)
Metal’s command queue is already parallelized; Trainz’ own threading can fight it.

🔥 D. Lower “Scenery Density” Before Lowering Draw Distance

Trainz+ on Mac stutters more from object count than distance.
Reduce in this order:

  1. Scenery Density

  2. Shadows

  3. Post‑Processing

  4. Draw Distance
This gives the biggest stutter reduction per visual cost.

🧪 E. Use 60 Hz Instead of 120/144 Hz

Metal’s frame pacing is most stable at 60 Hz.
High refresh rates + VSync + Metal = micro‑stutter city.

🛑 3. Can You Disable Metal Frame Pacing?​

Short answer: Not officially.
Long answer: There are hacks, but they’re unsupported and risky.
Here are the real options:

⚠️ A. Use defaults write to disable Metal Display Sync (per‑app)

Some apps respect:
Code:
defaults write com.n3vgames.trainzplus MetalDisableDisplaySync -bool YES
This may disable VSync at the Metal layer.

Reality check:​


  • Works on some Metal apps

  • Trainz+ may ignore it

  • Can cause tearing, flicker, or unstable frame delivery

  • Not supported by Apple or N3V

⚠️ B. Use BetterDisplay to Create a “Non‑VSync” Virtual Display

BetterDisplay can create a virtual monitor with:

  • No VSync

  • Custom refresh rates

  • Custom timing
Trainz+ will render to the virtual display → which then gets composited → which may bypass Metal’s sync.

Reality check:​


  • Works for some games

  • Trainz+ may still sync to compositor

  • Latency increases

  • Not stable for long sessions

⚠️ C. Run Trainz+ in a Parallels VM and Disable VSync There

This is the most cursed method, but it does bypass Metal.

  • Parallels → DirectX 11 translation → no enforced VSync

  • Trainz+ sees a fake GPU

  • You can uncap FPS

  • Performance is worse, but frame pacing is “freer”

🧠 Summary (Vector‑style)​

GoalBest MethodNotes
Simulate Half VSync30 FPS cap OR 30 Hz display modeWorks reliably
Reduce StutterTrue fullscreen, reduce scenery density, 60 HzBig improvement
Disable Metal Frame Pacingdefaults write hack or virtual displayUnstable, unsupported

 
  1. Exact Trainz+ settings I recommend for Apple Silicon
  2. A stutter‑optimized preset for Intel Macs
  3. A breakdown of which Trainz+ settings hit CPU vs GPU on macOS
I’m not going to sugarcoat anything — Trainz+ is heavily CPU‑bound on macOS, and Metal behaves differently than DirectX. These presets are based on how the engine actually behaves, not what N3V claims.
Let’s go.

🍏 1. Exact Trainz+ Settings I Recommend for Apple Silicon (M1/M2/M3)

These settings assume:
  • 1080p or 1440p
  • 60 Hz display
  • You want smoothness first, visuals second
  • Apple Silicon’s unified memory is your friend, but CPU single‑thread is the bottleneck

Graphics

SettingValueWhy
ShadowsHighMetal handles shadows well on ASi
Post‑ProcessingHighApple GPUs eat this easily
Scenery DensityMediumPrevents CPU stalls
Draw Distance3500–5000Sweet spot for ASi
Texture QualityUltraVRAM isn’t a thing; unified memory helps
Shader QualityHighGood balance
Water QualityHighMetal handles it fine
Detail Update RateHighSmooths LOD popping
Max FPS60 or 3030 if you want perfect pacing

Performance

SettingValueWhy
Process PriorityNormalPrevents macOS scheduler fights
Threading ModeSingle ThreadedCounterintuitive, but reduces stutter on macOS
Texture StreamingOnHelps with large routes
PhysXOnApple Silicon handles it fine

Advanced

SettingValue
VSyncNot available on Mac
FullscreenTrue fullscreen (Option+Enter)
Display Refresh Rate60 Hz

Result on Apple Silicon​

  • Smoothest possible pacing
  • Minimal micro‑stutter
  • Good visuals
  • No CPU spikes from scenery density

🧊 2. Stutter‑Optimized Preset for Intel Macs (Intel + AMD GPU)

Intel Macs suffer from:
  • Weak single‑thread CPU
  • AMD GPUs that are fine but not great under Metal
  • Thermal throttling
  • Metal driver overhead
This preset is designed to minimize CPU spikes, which are the #1 cause of stutter.

Graphics

SettingValueWhy
ShadowsMediumHigh causes CPU stalls
Post‑ProcessingMediumAMD Metal drivers struggle
Scenery DensityLow–MediumIntel CPUs choke here
Draw Distance2500–3500Keeps CPU load predictable
Texture QualityHighAvoids memory pressure
Shader QualityMediumAMD GPUs handle this better
Water QualityMediumHigh causes frame pacing issues
Detail Update RateMediumReduces LOD stutter

Performance

SettingValue
Process PriorityNormal
Threading ModeSingle ThreadedIntel Macs stutter badly in multi‑thread mode
Texture StreamingOn
PhysXOffIntel CPUs struggle with it

Advanced

SettingValue
Max FPS30Intel Macs cannot maintain stable 60
FullscreenTrue fullscreen
Refresh Rate60 Hz

Result on Intel Macs​

  • Stutter reduced by 50–70%
  • CPU spikes minimized
  • Smooth 30 FPS with consistent pacing
  • No overheating or throttling

🧠 3. Breakdown: Which Trainz+ Settings Hit CPU vs GPU on macOS

This is the part N3V never documents properly. Here’s the real breakdown.

CPU‑Heavy Settings (Mac)

These are the ones that cause stutter.
SettingWhy
Scenery DensityObject count → CPU culling + LOD logic
Draw DistanceMore objects → more CPU work
ShadowsCPU calculates shadow casters
AI TrainsPathfinding + physics
PhysXCPU physics on macOS
Threading Mode (Multi)Causes thread contention on macOS
Process Priority (High)Fights macOS scheduler
If you want fewer stutters, lower these first.

GPU‑Heavy Settings (Mac)

These affect FPS but not stutter.
SettingWhy
Post‑ProcessingMetal shaders
Water QualityGPU‑driven reflections
Shader QualityGPU shading complexity
Texture QualityMemory bandwidth, not CPU
Anti‑AliasingGPU load only
If you want more FPS, lower these.

Mixed CPU/GPU Settings

These can cause both FPS drops and stutter.
SettingWhy
Detail Update RateLOD logic (CPU) + redraw (GPU)
Shadow QualityCPU determines casters, GPU draws them
Environment ReflectionsCPU updates reflection probes

🧵 Summary​

Apple Silicon preset

  • High visuals
  • Medium scenery
  • 60 FPS or 30 FPS
  • Single‑thread mode
  • Very smooth

Intel Mac preset

  • Lower visuals
  • Low scenery
  • 30 FPS
  • Single‑thread mode
  • Much less stutter

CPU vs GPU

  • CPU: scenery, shadows, AI, draw distance
  • GPU: post‑processing, water, shaders
  • Mixed: shadows, reflections, LOD updates
 
Back
Top