Version History
jrpm-0.1.0 (2026-08-14) cmclient Port Complete
Based on the initial 0.1.0, completed the port of five batches of cmclient features (modded + cmclient full series):
New Features (cmclient / modded Port)
- modded Batch 1: Vehicle trip history (
b89f93f9) + Adjustable plane taxi speed (b89f93f9); - cmclient Batch 2: Location bookmarks / Cargo details / Spectate (
089480b3); - cmclient Batch 0:
cmgamespeed/cmgamestats/cmexport/cmtreemapconsole commands (1fd94d12); - cmclient Batch 3 ① Highlight: Object-level build preview (stations/tracks/depots/airports), hooked into viewport drawing pipeline and build tools (6 commits,
d97aa38a→1957bf45); - cmclient Batch 3 ③ Blueprint: Area selection copy/rotate/16 slots/reconstruct (
8e08ca6b); - cmclient Batch 4 ④ Town Zoning: Tz zoning + growth_tiles coloring + GRWT save chunk (
9e3f95a2); - cmclient Batch 5 ⑤ Command Replay:
cmdrecord/cmdreplay(f113acce28); - Console parameter convention fix: All jrpm commands now use argv[1] as the starting parameter (argv[0] is the command name).
Architecture Conclusion
- ② Command object layer not ported: Highlight/blueprint/replay bypass cmclient's 2251-line generated code by using
CMD_ERROR, command closures, and jrpm native command serialization respectively.
Save Compatibility
- growth_tiles data stored in a separate
GRWTchunk; old saves (without this chunk) load fully compatible; - Command record files (
.jrcm) are jrpm's private format, cross-version compatibility is not guaranteed.
jrpm-0.1.0 (2026-08-14)
First jrpm version, based on jgrpp 0.73.1 + pulsexlb px-patch merge, with ported modded / cmclient features.
Changes
- Merged pulsexlb px-patch (152 commits):
- Train decoupling (decouple): decouple/couple orders, path signal transfer, coupling length/speed limits, dual-head, NewGRF coupling, coupling pathfinding, independent scheduling after decoupling;
- Modular airports (multitile-airport): air type system, PBS air traffic control, YAPF air pathfinding, airport layout modification (
allow_modify_airports); - Save versions added
SLV_MULTITILE_AIRPORTS/SLV_ORDER_DECOUPLE.
- Version rename:
openttd-jrpm/jrpm-0.1.0(executable name and revision string). - Server multi-version compatibility: jrpm server accepts jrpm / original jgrpp / pulsexlb clients.
- jrpm exclusive features:
- Resource download multi-mirror + file-level parallel (configurable concurrency);
- Vehicle auto-grouping by shared orders (window button +
autogroupcommand); - Whole-game-aware AI (
AIGlobalAPI + GlobalAI example, controlled by setting toggle); - Build cost tooltip (removed per request, commit
96ebfb75).
- modded port (Batch 1):
- Vehicle trip history (last 10 trips profit/occupancy/duration, History button in vehicle details window);
- Adjustable plane taxi speed (
vehicle.plane_taxi_speed, XSLF feature-gated, old save compatible).
- cmclient reference (Batch 2):
- Location bookmarks (
savelocation/gotolocation, 9 slots); - Company cargo details window (
company_cargo); - Spectate helper (
watch <company_id>).
- Location bookmarks (
Save Compatibility
- Inherits jgrpp convention: can load trunk saves (up to the most recently merged version);
- jrpm saves (containing multitile airport/decouple order data) not guaranteed to be readable by old jgrpp saves;
- Save version
SAVEGAME_VERSIONis consistent with pulsexlb (SLV_CUSTOM_SUBSIDY_DURATION); - All new features use XSLF extended feature gating or NOSAVE, do not break old saves.
Upstream Versions
- jgrpp 0.73.1: The base of this project (OpenTTD 16.0 kernel + all JGR features).
- pulsexlb px-patch 2608.3: Source of train decoupling and modular airports.
- embeddedt/OpenTTD-modded (0.59.1 era): Source of trip history and taxi speed.
- citymania-org/cmclient (vanilla 15.3): Source of location bookmarks/cargo details/spectate reference.
Roadmap
- [x] Real machine build verification and first build error fixes
- [x] Trip history + Taxi speed (modded Batch 1)
- [x] Location bookmarks + Cargo details + Spectate (cmclient Batch 2)
- [ ] Highlight system + Blueprint system (cmclient Batch 3, see Roadmap)
- [ ] HTTP transport layer thread pool + Range chunked download (single large file acceleration)
- [ ] Map send compression comparison optimization
- [ ] Per-cargo income statistics (requires save format extension)
- [ ] (Long-term) Rust server runtime integration (reference Openttd-Cluster)