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.
- Open System Settings → Displays
- Select your monitor
- Change Refresh Rate to 60 Hz (if not already)
- Now open Trainz+
- 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):
- Install SwitchResX
- Create a Custom Resolution → 30 Hz
- Reboot
- Select the 30 Hz mode
- 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:
- Open System Settings → Accessibility → Display
- Turn Reduce Motion = ON
- Turn Increase Contrast = OFF
- 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:
- Launch Trainz+
- Press Option + Enter
- 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:
- Scenery Density
- Shadows
- Post‑Processing
- 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)
| Goal | Best Method | Notes |
|---|
| Simulate Half VSync | 30 FPS cap OR 30 Hz display mode | Works reliably |
| Reduce Stutter | True fullscreen, reduce scenery density, 60 Hz | Big improvement |
| Disable Metal Frame Pacing | defaults write hack or virtual display | Unstable, unsupported |