Skip to content

Dev/integrate track rendering - #286

Draft
marcinn wants to merge 315 commits into
mainfrom
dev/integrate-track-rendering
Draft

marcinn wants to merge 315 commits into
mainfrom
dev/integrate-track-rendering

Conversation

@marcinn

@marcinn marcinn commented Sep 25, 2026

Copy link
Copy Markdown
Member

No description provided.

@marcinn
marcinn force-pushed the dev/integrate-track-rendering branch 30 times, most recently from c162ab2 to 2411e54 Compare September 29, 2026 09:40
marcinn added 30 commits October 6, 2026 17:43
* _submodel_islands() keeps each piece's nearest piece and gap; a merge
  looks again only at the grown piece, O(P^2) instead of O(P^3)
* The 36WEa driver's cab built in 30 s (dashboard light: 727 pieces,
  22.3 s) on every cab change; now 1.1 s, the same lights
* Finding: a cab build is measured on the largest real cab
* A long timeout hides the early error: a probe runs in the background
  and is killed after 15 s without a new line
* A probe never saves a user setting; set_setting() keeps it in memory
* Driver hints tile (F3) anchored to the top-right corner, at least 360 px
  wide (2.5x its own width), widened leftwards by a longer hint
* Shift+F3 frame time stats start at 360 px instead of 96 px, so the two
  do not overlap
* The timetable (F2) moved to the bottom-right corner, above the vehicle
  chips and the streaming spinner
* The HUD's trainset list shows by default only the vehicles of the
  trainsets the player can drive (occupied and offered by the scenario)
* "Show all trainsets of the scenario" switch, as in the scenario selector
* MaszynaSceneryInfo.Trainset.is_drivable() shared by both lists
* "Frame time statistics" entry in Diagnostics, Shift+F3 its shortcut,
  cycles DebugMenu through hidden, compact and detailed
* DebugMenu.cycle_style() is the one road; its own key handling removed
* Translations of the entry in every language
* New last stage: the game appears once the streaming has built the
  chunks around the camera (radius 1, at least 1 km each way) and the
  vehicles within the draw distance - before, only the camera's own chunk
* streaming_camera_changed lets RailVehicleRenderingServer queue every
  vehicle in range at once; a vehicle built takes its detail at once, so
  a near one is built as nodes before its build counts as done
* area_get_pending_count() and builds_get_pending_count() drive the
  stage's progress; Galicja: the stage takes 10.7 s
* LegacyCabinLampIslands.submodel_islands() replaces the GDScript: samples
  decode only their DXT block, a grid finds each piece's nearest
* A lamp mesh of more than 1024 pieces is a backlight and gets one light
  (36WEa dashboard: 7237 pieces, 2.0 s -> 42 ms in a debug build)
* The 36WEa cab builds in 0.43 s instead of 1.1 s, the same lights
* UserSettings.is_config_changed(): the configuration compared with what
  the file holds since its last load or save
* The close button and Escape close the settings at once when nothing
  was changed, ask save or discard otherwise
* In a game F11 (and the Simulator menu's entry) closes an open panel
…built

* The stage reported its start (90%) and its end only; it now reports
  each vehicle built, from VEHICLES_PROGRESS to the end of the load
* The scenario started after the load (its scenery sounds, 5.5 s on
  Galicja) showed nothing: the ring stood at 90% under Vehicles
* SceneryWorld.scenario_progress, from MaszynaLegacyScenario.start(): the
  Surroundings stage begins at once, the sounds take it from 90% to 95%,
  the cab and the streaming around the camera the rest
* View > Logs: tabs "Console" (GameLog), "Gameplay" (the gameplay log,
  live) and "App" (the engine's log), each its last 5000 lines; the
  developer console (~) no longer prints GameLog
* Diagnostics > Developer console, on the new console_toggle action (~)
  the console now matches exactly; "Power source", "Scenario and Events"
  translated
* Top bar: the View menu closes on a chosen entry and the bar slides out
  once its last menu closes with the mouse below it
* "Vehicle card" entry in View: opens the card of the player's vehicle,
  closes an open one; ticked while a card is open
* The trainset list stands right of the vehicle card, both aligned at the
  bottom and growing upwards
* MaszynaSceneryInfo.title is read_display_name() - the "//$l", "//$n"
  and file name parts - instead of the raw "//$n" line, so Shift+F2
  names the scenario as the selector and the loading screen do
* Profiles render at 16 px/m in one band above the rail, centred on the
  vehicle, without the margin; cache version 9
* The starter's trainset row and the editor's trainsets dock lay vehicles
  out at their FIZ length over buffers, side views overhang onto neighbours
* No separation between the vehicles of a trainset
… any

* _prepare_engine() reads the line breaker and the converter overload
  relay of every vehicle under control, as the update's reset does
* A car without an engine (36WE B, PWR=2) has no line breaker to count;
  a vehicle with one collector is hinted only pantograph A - both quirks
  in MASZYNA_ORIGINAL_QUIRKS.md
* test_zzz_driver_ready_36wea_014a: the 36WEa started by the keys is
  ready for its driver and hinted no pantograph B
* RailVehicleServer.trainset_determine_type()/trainset_get_type(): NONE,
  PASSENGER, CARGO, MIXED from the cars' brake delays, kept per vehicle
* the driver's AutoRewident port determines it; stops, proximity, braking,
  speed, series motor and heating read it - braking.cargo is gone
* a passenger train behind a locomotive left at G no longer leaves its
  stops before the departure (Os33733 at Zagórz)
* a seventh speed button, x30 (one wall second is thirty in the game)
* "Switch on compressor" is done once any vehicle under control has its
  compressor allowed to run (IsAnyCompressorEnabled), not by the
  controlling car's compressor running - an EN57's is in its ra cars
* test_zzz_driver_hints_en57_2000_v1: an EN57 started by the keys is not
  hinted to switch its compressor on
* RailVehicleBrake.cntrl_max_brake_pressure_mass from Cntrl. MaxBPMass, given
  to the Mover in kg: an empty trailer brakes at TareMaxBP, no locked wheels
* RailVehicleBrake.handle_movement/handle_step: brake_level_increase/_decrease
  move the Mover's handle handle_step positions; FV4a continuous, any other
  handle a position per key press (the cab honours it)
* EN57-636ra fixture and test; cut-vehicle-fixture follows subdirectory
  includes; the other unread Cntrl. keys listed in TODO.md
* Shift+F2 has two tabs, "Scenario description" and "Scenario progress": the
  task told in sentences from the driver's timetable and current order
  (ScenarioTask), or "No scenario set for <vehicle>"
* MaszynaLegacyAIDriver.order_text(), the original's OrderCurrent(), in the
  driver state as order_text; the vehicle card shows it too
* the timetable panel opens itself when the player's train gets a timetable
* vend_sans_bold.tres, VendSans at weight 700 beside the medium one
* TimetableHeading label variation in timetable_theme.tres, used for the
  "Scenario progress for <vehicle>" heading instead of TimetableTitle
* PlayerServer moves the player's driver into every cab, of the same
  vehicle too: no "deactivate the cab" in the C car's rear cab
* driving aid asks a vehicle for the pantographs its PhysicalLayout has
  (the C car's B), not by CollectorsNo
* 36WEa-024a fixture and regression tests; the start-up test's security
  reflex acknowledges the player's vehicle
* BugReportRecorder of a run without a display writes
  logs/headless/gameplay.log, not the game's gameplay.log
* AGENTS.md and the testing skill: every headless run passes --log-file,
  so it does not rotate (and after five runs delete) the game's app.log
* the driver cues closing the doors before revoking the permits, as the
  original's Doors() (Driver.cpp:4380-4395): closing them revokes the
  permits (Mover.cpp:8745-8749)
* the revoking hints show no key: a push permit button only grants
  (Train.cpp:7213-7220), so Shift+, did nothing on a 36WEa
* test_driver_door_hints on an EN57 driving trailer
* the vehicle card stands right under the trainset list in the View menu
* F7 opens the vehicle card, Shift+F7 the trainset list (vehicle_card_toggle,
  trainsets_toggle) - the original's F7 is debug-mode only, Shift+F7 unused
* the walk leaves the unit's direction at 0, as the original's cab
  activations send it (the machine room's 0 too), and the master controller
  refuses until the reverser is set
… builds

* ci.yml and godot-engine.yml removed (kept on backup/rebased-with-our-ci)
* build.yaml builds the host library once (build-host, HOST_ONLY in
  entrypoint.sh) for the unit tests - moved in from tests.yml, with the
  start-up report of the set-aside ci.yml - and for each platform's
  template_release build and export (HOST_PREBUILT), then publishes the
  games as the branch prerelease maszyna-reloaded-<branch>
* Makefile: f219612's CMAKE_GODOTCPP_PRECISION and _API_FILE defined
  again, the versioned double extension_api.json CMakeLists.txt forces
* commit style: a follow-up of the same subject is amended or squashed into
  its commit, never left as a trail of commits; HEAD checked before amending
* Driving aid: a hint keeps its place (rules out the others of its group,
  not itself), idle before the line breaker with its key, a rear cab shown
  the reverser's own side; test follows SN61-02's hints by their keys
* VehicleController.Direction for get_direction()/get_direction_absolute(),
  every reader on it; start-up tests: forward from any cab, SN61 idle
* Scenery selector: list read again on every open and by a refresh icon
  in the search field, keeping the search and the selected scenery
* gnd-skydome: the sun shafts effect samples its own copy of the colour;
  sampling and writing one texture removed the D3D12 device
* Windows renders on Vulkan again (driver.windows was d3d12)
* FINDINGS.md rule and the archive entry; the double install of the
  effect noted in TODO.md

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants