शाखा:
jrpm| संस्करण: jrpm-0.1.0 (टैग किया गया, 2026-08-14) निर्माण उत्पाद:openttd-jrpm(निष्पादन योग्य फ़ाइल नाम)
संस्करण संबंध
jgrpp-0.73.1 (सामान्य पूर्वज)
/ \
jgrpp शाखा (63 कमिट) pulsexlb px-patch (152 कमिट)
├ tracerestrict आदि हालिया अपडेट ├ jgrpp-decouple (लोकोमोटिव डीकपलिंग)
├ मेरी 5 सुविधाएँ (d4c45740) └ jgrpp-multitile-airport (मॉड्यूलर एयरपोर्ट)
└ संस्करण नाम बदला jrpm-0.1.0 (425e7207)
\ /
jrpm शाखा (merge 71fe214c + संगतता cb9848b)मर्ज सामग्री
1. pulsexlb/OpenTTD-patches (px-patch पूर्ण 152 कमिट) → मर्ज हो चुका
| सुविधा | विवरण | मुख्य फ़ाइलें |
|---|---|---|
| लोकोमोटिव डीकपलिंग (डीकपल) | ट्रेन डीकपल/अटैच: डीकपल ऑर्डर, पथ टैग स्थानांतरण, कपलिंग लंबाई/गति सीमा, दोहरे इंजन, NewGRF कपलिंग, कपलिंग पथ-खोज (YAPF/NPF), डीकपल के बाद दो ट्रेनों का स्वतंत्र शेड्यूलिंग | train_cmd.cpp, order_cmd.cpp, order_gui.cpp, train.h, yapf/npf |
| मॉड्यूलर एयरपोर्ट (मल्टीटाइल-एयरपोर्ट) | मल्टी-टाइल एयरपोर्ट सिस्टम पुनर्निर्माण: वायु प्रकार प्रणाली (air.h/air_type.h/newgrf_airtype.), PBS हवाई यातायात नियंत्रण (pbs_air.), YAPF विमानन पथ-खोज, station.allow_modify_airports (एयरपोर्ट लेआउट संशोधन), gui.default_air_type, मल्टी-टाइल एयरपोर्ट स्प्राइट | air., pbs_air., aircraft_cmd.cpp (3600 पंक्तियाँ पुनर्गठित), airport_cmd/gui, station_cmd |
संघर्ष समाधान: केवल 2 हेडर फ़ाइल संघर्ष (aircraft.h / airport.h) — pulsexlb विमानन पुनर्गठन ने कार्यक्षेत्र में असंदर्भित मृत प्रकार हटा दिए (VehicleAirFlags bitset, AirportMovingDataFlag), pulsexlb पक्ष का विलोपन लिया गया, पुष्टि की गई कि किसी अन्य फ़ाइल में संदर्भ नहीं है।
2. Openttd-Cluster (उपयोगकर्ता Rust क्लस्टर परियोजना) → चयनात्मक उधार
| पैच | उपचार | विवरण |
|---|---|---|
| 0006 vanilla-native-server (मल्टी-वर्जन क्लाइंट संगतता) | ✅ मर्ज हो चुका (cb9848b7) | jrpm सर्वर एक साथ jrpm / मूल jgrpp (jgrpp-) / pulsexlb (pxp) क्लाइंट स्वीकार करता है; NewGRF संस्करण अभी भी सख्ती से जाँचा जाता है |
| 0001 revision-handshake / 0005 version-metadata | ✅ विचार अपनाया गया | jrpm स्वतंत्र टैग किए गए संशोधन स्ट्रिंग jrpm-0.1.0 का उपयोग करता है, मल्टीप्लेयर हैंडशेक jgrpp/pxp से अलग, "पूर्ण नया संस्करण मल्टीप्लेयर के लिए सुविधाजनक" लागू करता है |
| 0007 parallel-download (HTTP थ्रेड पूल + Range खंडित, 30KB) | 📝 संदर्भ, मर्ज नहीं | इस परियोजना के F1 "फ़ाइल-स्तरीय समानांतर + मल्टी-मिरर" के समान विषय और समान फ़ाइलों को बदलता है; 0007 की ट्रांसपोर्ट लेयर थ्रेड पूल/खंडित डाउनलोड F1 के बाद के संवर्द्धन दिशा के रूप में दर्ज |
| 0002-0004 snapshot/command/FFI ब्रिज | 📝 वास्तुकला संदर्भ | पूरे otc-engine Rust रनटाइम (FFI स्थैतिक लिंक-इन) पर निर्भर, "दीर्घकालिक समग्र एकीकरण" है न कि पैच-स्तरीय मर्ज; jrpm वर्तमान में शुद्ध C++ एकल बाइनरी बनाए रखता है |
3. jrpm-विशिष्ट (पूर्व 5 सुविधाएँ, d4c45740) → पहले से jrpm शाखा में
समानांतर डाउनलोड (मल्टी-मिरर + 4 समवर्ती सत्र), स्वचालित समूहीकरण, निर्माण टूलटिप, संपूर्ण-गेम अवेयर AI (ScriptGlobal + GlobalAI), मिरर/सामग्री सर्वर सेटिंग्स।
मल्टीप्लेयर रणनीति ("पूर्ण नया संस्करण मल्टीप्लेयर के लिए सुविधाजनक")
- jrpm टैग किया गया संस्करण है:
IsNetworkCompatibleVersionके लिए संशोधन स्ट्रिंग का पूर्ण मिलान आवश्यक है → jrpm क्लाइंट केवल jrpm सर्वर से मल्टीप्लेयर करता है, jgrpp 0.73.x / pxp से पूरी तरह अलग; - सर्वर छूट: jrpm सर्वर अतिरिक्त रूप से
jgrpp-*औरpxp*क्लाइंट को स्वीकार करता है (IsJgrppNativeNetworkRevision/IsPxpNetworkRevision, NewGRF संस्करण समान होना चाहिए); - इसलिए: jrpm सर्वर होस्ट खोलता है = केवल jrpm खिलाड़ी (डिफ़ॉल्ट); पुराने क्लाइंट के साथ संगतता की आवश्यकता होने पर कॉन्फ़िगरेशन बदले बिना jgrpp/pxp खिलाड़ियों को स्वीकार कर सकता है।
निर्माण और सत्यापन (उपयोगकर्ता की अपनी मशीन पर निष्पादित)
# पहली बार (CMake + निर्भरताएँ आवश्यक, COMPILING.md देखें)
cmake -B build ..
cmake --build build -j
# आउटपुट: build/openttd-jrpm.exeसत्यापन प्राथमिकता:
openttd-jrpm -vjrpm-0.1.0दिखाता है;- एकल खिलाड़ी में 1-2 साल खेलें (मर्ज में train/airport में बड़े बदलाव शामिल हैं + सेव संस्करण allow_modify_airports आदि नए जुड़ने के कारण बढ़ सकता है);
- सर्वर खोलने के बाद: jrpm क्लाइंट जुड़ता है ✓; मूल jgrpp 0.73.x क्लाइंट जुड़ने का प्रयास करता है (अपेक्षित: प्रवेश कर सकता है, NewGRF समान होने पर);
- लोकोमोटिव डीकपलिंग: ट्रेन में डीकपल/अटैच ऑर्डर जोड़ें, डीकपल के बाद दो ट्रेनों के स्वतंत्र शेड्यूलिंग की पुष्टि करें; मॉड्यूलर एयरपोर्ट:
station.allow_modify_airportsचालू करने के बाद एयरपोर्ट लेआउट बदलें; - पूर्व 5 सुविधाओं का प्रतिगमन परीक्षण (समानांतर डाउनलोड, स्वचालित समूहीकरण, निर्माण टूलटिप, GlobalAI)।
ज्ञात जोखिम
- संकलन सत्यापन नहीं: मर्ज+संशोधित कोड इस मशीन पर संकलित नहीं किया गया (कोई उपकरण श्रृंखला नहीं), वास्तविक मशीन पर पहले संकलन में छूटे हुए इंटरफ़ेस परिवर्तन हो सकते हैं (विशेषकर aircraft/airport/train तीन प्रणालियों में बड़े बदलाव);
- सेव संस्करण: px-patch ने SLV बढ़ाया हो सकता है (M9 में savegame version gate का उल्लेख है), jrpm सेव और jgrpp 0.73.x सेव एक-दूसरे को नहीं पढ़ सकते (jgrpp परंपरा के अनुसार, trunk सेव के साथ पिछड़ा संगत);
- मर्ज pulsexlb का पूरा इतिहास लाता है, सुविधा स्वामित्व ट्रेस करने के लिए
git log --oneline pulsexlb/px-patchका उपयोग करें।
मर्ज लॉग: 2026-09-28 (jgrpp-0.73.3 + px-patch 2609.x)
मर्ज कमिट: jgrpp 94 कमिट (
jgrpp-0.73.3तक) + px-patch 113 कमिट (pxp-2609.10के बाद तक)।
नया: pulsexlb से सड़क वाहन परिवहन (RoRo, विस्तृत जानकारी Features देखें), 128 कार्गो प्रकार (Uint128 CargoTypes, XSLFI_CARGO_TYPES_128 गेट), डिकपल/कपल फिक्स बैच, शेड्यूल सुधार; jgrpp से ऑर्डर ड्रैग-एंड-ड्रॉप/डबल-क्लिक, डबल-एंडेड शिप्स (XSLFI_DOUBLE_ENDED_SHIPS), व अनेक सामान्य फिक्स।
मुख्य कॉन्फ्लिक्ट हैंडलिंग: सेवलोड परत pulsexlb के पुराने SLE_ मैक्रो सिस्टम पर आधारित थी, jrpm/jgrpp 0.73.3 आधुनिक VarFileType/VarMemType + VarTypes पर — सभी saveload/ व sl/ कॉन्फ्लिक्ट आधुनिक सिस्टम में फिर से लिखे गए और U128 समर्थन जोड़ा गया (VarFileType::U128=13, VarMemType::U128, SLE_UINT128); jrpm के आरक्षित संस्करण 367/368 बने रहे, अपस्ट्रीम के नए संस्करण 369/370 पर खिसके; अपस्ट्रीम सेवगेम संगतता XSLFI_UPSTREAM_VERSION सब-चंक से चलती है; CT_VEHICLES स्ट्रिंग-निर्माण, grfid Label तुलना, व autogroup+RORO_DEBUG_COMMANDS दोनों कंसोल ब्लॉक सुरक्षित।
स्थिति: MinGW ninja बिल्ड पास, उत्पाद build/openttd-jrpm.exe; नई-गेम स्मोक टेस्ट पास।
मर्ज लॉग: 2026-10-07 (jgrpp 0.73.3+89 + px-patch 2610.3)
मर्ज कमिट: jgrpp के 23 कमिट (
jgrpp-0.73.3के बाद,6318727b02तक) + px-patch के 55 कमिट (pxp-2610.3,4a4d0724b5तक)।
नया: pulsexlb से — ट्रेन फ़ेरी (जहाज़ों को पूरी ट्रेनें ढोने के लिए रूपांतरित किया जाता है, समर्पित RAIL कार्गो CT_RAILVEHICLES, वैगन-वार लोडिंग), वर्षा प्रणाली (weather.cpp: यादृच्छिक वर्षा अवधियाँ, दुनिया का धीरे-धीरे अंधेरा होना, ज़ूम के साथ बदलने वाली बूँदें; difficulty.rain विकल्प; सैंडबॉक्स चीट मौसम ज़बरदस्त करता है; मौसम की स्थिति WTHR/XSLFI_WEATHER के साथ सेव होती है), डिकपल के बाद एक ही दिशा में निकलना (दूसरे हिस्से की प्रतीक्षा करते हुए), हर कार्गो होल्ड और हर वैगन की क्षमता दिखाना, RoRo विकल्पों में ट्रेन/वाहन साइन चुनना, कपलिंग पाथफ़ाइंडिंग की झटपट दूर करना (माल की जाँच अब प्री-चेक + विफलता पर बैकऑफ), और APK सहित Android बिल्ड; jgrpp से — StringID का स्ट्रॉन्ग टाइप, डुप्लिकेट कंपनी नाम की सही अस्वीकृति, विजेट का प्राथमिक आकार, और कई रीफैक्टरिंग व सुधार।
मुख्य कॉन्फ्लिक्ट हैंडलिंग: बिल्ड में सबसे बड़ी बाधा Label/StringID की स्ट्रॉन्ग टाइपिंग थी — jrpm के अपने कोड के सभी 4-वर्ण लेबल स्ट्रिंग निर्माण में बदल दिए गए (CT_RAILVEHICLES{"RAIL"}); afterload.cpp में सड़क/ट्राम प्रकार लेबल तुलनाएँ RoadTypeLabel{"ROAD"} रूप में हो गईं; airport.cpp में खाली AirTypeInfo के स्ट्रिंग फ़ील्ड STR_NULL का उपयोग करते हैं; cheat_gui.cpp में STR_CHEAT_RAIN के switch शाखे .base() का उपयोग करते हैं; नए मौसम चंक WTHR में पुराना CH_TABLE प्रकार ChunkType::Table बन गया; चीट तालिका में jrpm का VarMemType और InflationCheat सेंटिनल बना रहा और नई वर्षा चीट पंक्ति जोड़ी गई; jrpm_watch_gui.cpp में SetStringTip(SPR_GOTO_LOCATION, …) को SetSpriteTip बनाया गया; train_cmd.cpp में enable_decouple गेट और desync डीबगआउट बना रहा, साथ ही अपस्ट्रीम का सुधार लिया गया जिससे रिवर्स तभी होता है जब ट्रेन का सिरा स्विच पार करे (if (v->IsMovingFront())) और उसी दिशा में निकलने के फ़्लैग भी अपनाए गए; order_cmd.cpp में DecouplePart वेरिएबल बनाए रखकर DrivingBackwards का नया TCF_NO_DRIVING_CAB-आधारित अर्थ अपनाया गया; deploy-docs.yml में VitePress बिल्ड और GitHub Pages परिनियोजन बनाए रखा, वैसे ही README/.gitignore/.ottdrev-vc में jrpm की पहचान; SL_UPSTREAM_VERSION अब भी 368 (अपस्ट्रीम DoubleEndedShips) पर पिन है, src/saveload/engine_sl.cpp का static_assert पास होता है, और jrpm के आरक्षित 367/368 अपरिवर्तित हैं।
स्थिति: MinGW ninja बिल्ड पास (-j3), उत्पाद build/openttd-jrpm.exe; -D समर्पित सर्वर स्मोक टेस्ट पास — नया मानचित्र → सेव → लोड → फिर सेव → निकास, बिना किसी assertion या SetupEngines क्रैश के; अपस्ट्रीम चंक संस्करण गेट सही ढंग से काम कर रहे हैं।