maj00r 532875fc7b Black box: the queries of the user's train worked out once a read, lights as the driver checks them
- The stations, the signals passed, the horn points, the couplings, the
  consists and the timetable progress of the user's train are kept until
  a read adds something; the views asked for them every frame, which on
  a long session with many trains took the window down. A read that adds
  nothing no longer counts as a change.
- The lights are checked against the lamps the vehicles at the ends have
  (written by the simulator from now on), as its driver checks them: Pc 1
  without the upper headlight, with the auxiliary lamps, Pc 5 with the
  rear-end signals. Only while the user drives: the autopilot's lights
  are its own.
- A train off the platform counts at both ends: its head past the stop
  point as well as its tail before the platform's end.
- A recording without the couplings keeps the timetable for any vehicle
  of the user.
- A signal passed at danger is ringed on the map only once it was.
- In the tapes window a black box opens on a click or Enter, not when
  the arrow keys go over it.
- The viewer's screenshot of a window not laid out saves nothing and
  still closes.
2026-11-11 00:57:57 +01:00
2026-10-04 13:50:41 +02:00
2025-12-23 08:47:36 +01:00
2025-12-23 08:47:36 +01:00
2026-08-30 22:29:45 +02:00

StarterNG

Launcher for the MaSzyna train simulator, written in C# with Avalonia.

Building a native (NativeAOT) build

The project publishes as a self-contained NativeAOT binary — no .NET runtime is needed on the target machine. The commands below are the same ones CI runs, see .github/workflows/dotnet.yml.

Requirements:

  • .NET SDK 9
  • Linux: a native toolchain and zlib headers — sudo apt install clang zlib1g-dev (Debian/Ubuntu) or sudo dnf install clang zlib-devel (Fedora)
  • Windows: the Visual Studio C++ build tools (Desktop development with C++)

Restore for the target runtime first, then publish:

dotnet restore StarterNG/StarterNG.csproj -r linux-x64

dotnet publish StarterNG/StarterNG.csproj \
    -c Release -r linux-x64 --self-contained true --no-restore \
    -p:PublishAot=true -p:PublishTrimmed=true \
    -o publish/linux-x64

For a Windows build swap both linux-x64 occurrences for win-x64 (and the line continuations for PowerShell backticks). NativeAOT does not cross-compile, so the Windows package has to be built on Windows and the Linux one on Linux — that is why CI uses a windows-2022 and an ubuntu-22.04 runner.

The output directory is the whole distributable: the Starter executable, the Skia/HarfBuzz native libraries and startercfg/ with the translations and the default key bindings. The .dbg (or .pdb) file next to it is debug symbols and can be dropped from a release. Trim/AOT analysis warnings during the publish are expected and do not fail the build.

CI builds both runtimes on every push and pull request to main and staging, and on manual dispatch. Pushes additionally replace a rolling pre-release with the packaged artifacts — tagged latest for main and staging for staging.

Development build

dotnet build StarterNG/StarterNG.csproj
Description
No description provided
Readme MPL-2.0 2.9 MiB
Languages
C# 100%