UnityTrafficSimulation/BUILDING.md
2026-09-13 22:03:44 +01:00

5 KiB

Linux build

The project targets Unity 2018.1.6f1. Keep this version for now: the simulation uses the bundled UNet networking API and the legacy .NET runtime. No engine migration has been made.

Toolchain

The following tools were installed and launched on this Debian 13 x86_64 host:

  • Unity Editor: /opt/unity/2018.1.6f1/Editor/Unity, including Linux player support.
  • Blender 2.79b: /opt/blender-2.79b-linux-glibc219-x86_64/blender, also available as blender on PATH. The project's Blender models use the 2.79 file format.
  • GTK 2, libsoup 2.4, GLU, and GConf 2 compatibility libraries. GConf was installed from Debian's libgconf-2-4_3.2.6-8_amd64.deb and gconf2-common_3.2.6-8_all.deb; Debian 13 no longer ships those packages.
  • Xvfb and xauth for running the old editor without a desktop display.

Downloads: Unity 2018.1.6f1, Blender 2.79b, Debian GConf packages.

Build command

Once Unity is activated and the damaged source assets below are restored:

./build-linux.sh

For an editor installed elsewhere:

UNITY_EDITOR=/path/to/2018.1.6f1/Editor/Unity ./build-linux.sh

The intended output is Builds/linux/Simulation.x86_64, with its accompanying data directory. The editor log is Builds/linux/build.log. The build uses Assets/Scenes/Main.unity; the original settings incorrectly named the absent SampleScene.unity despite already containing Main's GUID.

The existing standalone startup code selects the client menu. This build command preserves that behavior.

Current blockers and verification

No Linux executable has been built. The editor starts, but the attempted batch build exits with status 1 at license activation:

Failed to activate/update license. Missing or bad username and password.

Unity Personal is free for eligible users, but still requires activation. For a desktop session, sign in to Unity Hub, then use Settings > Licenses > Add license > Get a free personal license if it is not activated automatically. See Unity's Hub license instructions.

For SSH access, Unity CLI 1.0.0-beta.9 is installed at /root/.local/bin/unity, along with GNOME Keyring and libsecret-tools. Its login command prints a URL that can be opened in a browser on another device. Run ./unity-ssh.sh as the same Linux user that will run the build. It starts a private D-Bus session and a dedicated Unity keyring under ~/.local/share/unity-ssh/keyrings, leaving the desktop login keyring intact. Choose a password on first use and use the same password when reopening the helper. This password protects saved credentials locally; enter your Unity account password only on Unity's sign-in page. The helper verifies that the keyring can store and retrieve a test credential before opening a shell. In that shell, run:

unity auth login
unity license activate --personal --accept-eula
unity license status

The activation command accepts the Unity Personal license terms. Type exit when finished to close the shell and its keyring session.

The command options and browser-assisted login startup have been checked here. Keyring tests with temporary credentials cover creation, reopening, incorrect password rejection, inherited desktop sessions, and concurrent-session rejection. The CLI's own credential-store check resolves the Secret Service backend inside the helper. Run ./unity-ssh.sh --check to check the keyring without starting a Unity sign-in. Sign-in, activation, and compatibility with the old editor still need to be verified. See Unity CLI instructions and release notes.

There is also existing file corruption, independent of activation. An audit found 33 asset files whose contents are Unity metadata instead of their expected source/model/image/material data. Five of these are C# source files:

  • UnityProject/Assets/Scripts/CarLL.cs
  • UnityProject/Assets/Scripts/misc/trafficLightColor.cs
  • UnityProject/Assets/Standard Assets/CrossPlatformInput/Scripts/VirtualInput.cs
  • UnityProject/Assets/!ext/PostProcessing/Editor/PostProcessingInspector.cs
  • UnityProject/Assets/!ext/PostProcessing/Editor/Monitors/WaveformMonitor.cs

A separate compilation attempt with Unity's bundled Mono compiler and genuine 2018.1 assemblies fails with CS8025: Parsing error in VirtualInput.cs. The full asset list is in the local Builds/linux/source-audit.txt; compiler output is in Builds/linux/script-check/compile.log.

Some metadata is damaged too: there are duplicated GUIDs, source code stored in .cs.meta files, and empty directories with .meta names. The file at UnityProject/Scripts/CarLL.cs is not a usable backup: it contains a TrafficController class. A clean original checkout/archive is needed to restore these files reliably. Existing assets and the old Library cache were left intact.