ব্রাঞ্চ:
jrpm| সংস্করণ: jrpm-0.1.0 (tagged, 2026-08-14) বিল্ড আউটপুট:openttd-jrpm(এক্সিকিউটেবল ফাইলের নাম)
সংস্করণ সম্পর্ক
jgrpp-0.73.1 (সাধারণ পূর্বপুরুষ)
/ \
jgrpp ব্রাঞ্চ (63 কমিট) pulsexlb px-patch (152 কমিট)
├ tracerestrict ইত্যাদি সাম্প্রতিক আপডেট ├ jgrpp-decouple (ট্রেন ডিকাপলিং)
├ আমার ৫টি বৈশিষ্ট্য (d4c45740) └ jgrpp-multitile-airport (মডুলার এয়ারপোর্ট)
└ সংস্করণ নামকরণ jrpm-0.1.0 (425e7207)
\ /
jrpm ব্রাঞ্চ (merge 71fe214c + সামঞ্জস্য cb9848b)মার্জ বিষয়বস্তু
১. pulsexlb/OpenTTD-patches (px-patch সম্পূর্ণ ১৫২ কমিট) → ইতিমধ্যে মার্জড
| বৈশিষ্ট্য | ব্যাখ্যা | প্রধান ফাইল |
|---|---|---|
| ট্রেন ডিকাপলিং (ডিকাপল) | ট্রেন ডিকাপল/অ্যাটাচ: ডিকাপল অর্ডার, টোকেন স্থানান্তর, কাপলিং দৈর্ঘ্য/গতি সীমা, ডুয়াল লোকো, 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 (৩৬০০ লাইন পুনর্গঠন), airport_cmd/gui, station_cmd |
কনফ্লিক্ট হ্যান্ডলিং: শুধু ২টি হেডার ফাইল কনফ্লিক্ট (aircraft.h / airport.h)——pulsexlb এভিয়েশন পুনর্গঠন ওয়ার্কস্পেসে রেফারেন্স নেই এমন মৃত টাইপ (VehicleAirFlags বিটসেট, AirportMovingDataFlag) মুছে ফেলেছে, pulsexlb পক্ষের ডিলিট নেওয়া হয়েছে, নিশ্চিত করা হয়েছে অন্য কোনো ফাইলে রেফারেন্স নেই।
২. Openttd-Cluster (ব্যবহারকারী Rust ক্লাস্টার প্রকল্প) → নির্বাচনী অনুকরণ
| প্যাচ | ব্যবস্থাপনা | ব্যাখ্যা |
|---|---|---|
| 0006 vanilla-native-server (মাল্টি-ভার্সন ক্লায়েন্ট সামঞ্জস্য) | ✅ ইতিমধ্যে মার্জড (cb9848b7) | jrpm সার্ভার একই সাথে jrpm / মূল jgrpp (jgrpp-) / pulsexlb (pxp) ক্লায়েন্ট গ্রহণ করে; NewGRF সংস্করণ এখনও কঠোরভাবে যাচাই করে |
| 0001 revision-handshake / 0005 version-metadata | ✅ ধারণা ইতিমধ্যে গ্রহণ করা হয়েছে | jrpm স্বাধীন tagged রিভিশন স্ট্রিং 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++ একক বাইনারি |
৩. jrpm নিজস্ব (পূর্ববর্তী ৫টি বৈশিষ্ট্য, d4c45740) → ইতিমধ্যে jrpm ব্রাঞ্চে
সমান্তরাল ডাউনলোড (মাল্টি-মিরর + ৪টি সমবর্তী সেশন), স্বয়ংক্রিয় গ্রুপিং, নির্মাণ টুলটিপ, সম্পূর্ণ গেম-সচেতন AI (ScriptGlobal + GlobalAI), মিরর/কন্টেন্ট সার্ভার সেটিংস।
মাল্টিপ্লেয়ার নীতি ("নতুন সংস্করণ সহজে মাল্টিপ্লেয়ার")
- jrpm একটি tagged সংস্করণ:
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 -v দেখায় jrpm-0.1.0; ২. একক খেলা শুরু করে ১-২ বছর চালান (মার্জ train/airport বড় পরিবর্তন ও存档 সংস্করণ allow_modify_airports ইত্যাদি নতুন কারণে bump হতে পারে); ৩. সার্ভার খোলার পর: jrpm ক্লায়েন্ট যোগ ✓; মূল jgrpp 0.73.x ক্লায়েন্ট যোগ করার চেষ্টা (প্রত্যাশিত: যোগ দিতে পারবে, NewGRF সামঞ্জস্যপূর্ণ হলে); ৪. ট্রেন ডিকাপলিং: ট্রেনে ডিকাপল/অ্যাটাচ অর্ডার যোগ করুন, ডিকাপলের পর দুই ট্রেন স্বাধীন রুটিং যাচাই করুন; মডুলার এয়ারপোর্ট: station.allow_modify_airports চালু করে এয়ারপোর্ট লেআউট পরিবর্তন করুন; ৫. পূর্ববর্তী ৫টি বৈশিষ্ট্য রিগ্রেশন (সমান্তরাল ডাউনলোড, স্বয়ংক্রিয় গ্রুপিং, নির্মাণ টুলটিপ, GlobalAI)।
জ্ঞাত ঝুঁকি
- কম্পাইল করে যাচাই করা হয়নি: মার্জ+পরিবর্তিত কোড এই মেশিনে কম্পাইল করা হয়নি (কোনো টুলচেইন নেই), প্রকৃত মেশিনে প্রথম কম্পাইলে অনুপস্থিত ইন্টারফেস পরিবর্তন থাকতে পারে (বিশেষ করে aircraft/airport/train তিন সিস্টেমের বড় পরিবর্তন); -存档 সংস্করণ: px-patch SLV bump করতে পারে (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 ৯৪ কমিট (
jgrpp-0.73.3পর্যন্ত) + px-patch ১১৩ কমিট (pxp-2609.10-এর পরে পর্যন্ত)।
নতুন: pulsexlb থেকে — সড়ক যান পরিবহন (RoRo, বৈশিষ্ট্য দেখুন), ১২৮ কার্গো প্রকার (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-এর ২৩টি কমিট (
jgrpp-0.73.3-এর পরে,6318727b02পর্যন্ত) + px-patch-এর ৫৫টি কমিট (pxp-2610.3,4a4d0724b5পর্যন্ত)।
নতুন: pulsexlb থেকে — ট্রেন ফেরি (জাহাজগুলো পুরো ট্রেন বহনের জন্য রূপান্তরিত হয়, নিবেদিত RAIL কার্গো CT_RAILVEHICLES, ওয়াগনভিত্তিক লোডিং), বৃষ্টি ব্যবস্থা (weather.cpp: এলোমেলো বৃষ্টির সময়কাল, ধীরে ধীরে বিশ্ব অন্ধকার হওয়া, জুম অনুযায়ী বদলানো বৃষ্টির ওভারলে; difficulty.rain বিকল্প; স্যান্ডবক্স চিট আবহাওয়া বাধ্য করে; আবহাওয়ার অবস্থা WTHR/XSLFI_WEATHER-এর সঙ্গে সেভ হয়), ডিকাপলের পর একই দিকে বেরিয়ে যাওয়া (অপর অংশের জন্য অপেক্ষা করে), প্রতিটি কার্গো হোল্ড ও প্রতিটি ওয়াগনের ধারণক্ষমতা দেখানো, RoRo বিকল্পে ট্রেন/গাড়ির সাইন বেছে নেওয়া, কাপলিং প্যাথফাইন্ডিংয়ের জাম কমানো (কার্গো যাচাই এখন প্রি-চেক ও ব্যর্থ হলে ব্যাকঅফ), এবং APK প্রকাশসহ অ্যান্ড্রয়েড বিল্ড; jgrpp থেকে — শক্তিশালী ধরনের StringID, সদৃশ কোম্পানির নাম সঠিকভাবে প্রত্যাখ্যান, উইজেটের পছন্দমতো আকার হিসাব, এবং আরও অনেক রিফ্যাক্টরিং ও সংশোধন।
মূল কনফ্লিক্ট হ্যান্ডলিং: বিল্ডে সবচেয়ে বড় বাধা ছিল Label/StringID-এর শক্তিশালী টাইপিং — jrpm-এর নিজস্ব কোডের সব ৪-অক্ষরের লিটারাল লেবেল স্ট্রিং কনস্ট্রাকশনে বদলে গেছে (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 ডেডিকেটেড সার্ভার স্মোক টেস্ট পাস —