Skip to content

ডেভেলপমেন্ট গাইড ​

এই ডকুমেন্ট jrpm-এ কীভাবে ডেভেলপমেন্ট চালিয়ে যেতে হয় তা ব্যাখ্যা করে। সব প্যাটার্ন এই প্রকল্পের প্রকৃত বাস্তবায়িত কোড থেকে আসে (git log-এ কমিটের সাথে মিলিয়ে দেখা যায়)।

কোড অর্গানাইজেশন দ্রুত পরিচিতি ​

ডিরেক্টরিদায়িত্ব
src/সব C++ সোর্স কোড (শীর্ষ স্তর সিস্টেম অনুযায়ী নামকরণ: rail_cmd.cpp, group_gui.cpp…)
src/network/নেটওয়ার্কিং (সার্ভার/ক্লায়েন্ট/UDP/HTTP/কন্টেন্ট ডাউনলোড)
src/script/স্ক্রিপ্ট ফ্রেমওয়ার্ক (Squirrel); api/ AI/GS API ক্লাস
src/table/settings/*.iniসেটিংস ডেফিনিশন উৎস (settingsgen কোড জেনারেট)
src/lang/english.txtস্ট্রিং ডেফিনিশন (strgen জেনারেট)
src/sl/saveload_common.h存档 সংস্করণ (SLV) এনাম
bin/ai/AI স্ক্রিপ্ট (GlobalAI উদাহরণ)

সাধারণ ডেভেলপমেন্ট প্যাটার্ন ​

বিল্ড ​

bash
cmake -B build ..
cmake --build build -j

ডেভেলপমেন্ট লক্ষ্যনীয় বিষয় ​

১. এনকোডিং: চীনা ভাষা সম্বলিত সোর্স কোড/ডকুমেন্ট পরিবর্তনের পর UTF-8 লক্ষ্য রাখুন (এই মেশিনের Write/Edit টুল কখনও GBK এনকোডিং তৈরি করেছিল, jgrpp-features/_fix_utf8.py দিয়ে মেরামত করা যায়); ২. কমিট বার্তা: ইংরেজি পরামর্শ দেওয়া হয় (টার্মিনাল এনকোডিং সমস্যা এড়াতে); ৩. কমান্ড এনামের মাঝে সন্নিবেশ পরবর্তী কমান্ড ID স্থানান্তরিত করবে——পুরনো সংস্করণ বাইনারি与新 সংস্করণের মধ্যে মাল্টিপ্লেয়ার অসামঞ্জস্যপূর্ণ হবে, এটি ফর্কের মধ্যে স্বাভাবিক ঘটনা, আপগ্রেডে সিঙ্ক করতে হবে; ৪. 存档 সংস্করণ:存档 কাঠামো পরিবর্তন করলে src/sl/saveload_common.h-এ নতুন SLV_* এন্ট্রি যোগ করুন ও SAVEGAME_VERSION আপডেট করুন; ৫. নতুন ফাইল: .cpp অবশ্যই সংশ্লিষ্ট CMakeLists.txt সোর্স তালিকায় যোগ করতে হবে (src/CMakeLists.txt বা সাবডিরেক্টরি/script/api/CMakeLists.txt); script_*.hpp file(GLOB) দ্বারা স্বয়ংক্রিয়ভাবে আবিষ্কৃত হয়, নিবন্ধনের প্রয়োজন নেই; ৬. নতুন স্ট্রিং: src/lang/english.txt-এ যোগ করুন (অন্যান্য ভাষা ডিফল্টভাবে ইংরেজিতে ফিরে যায়); ৭. NewGRF/存档 সামঞ্জস্য: _openttd_content_version / NewGRF সংস্করণ নম্বর পরিবর্তনে সতর্ক থাকুন (মাল্টিপ্লেয়ার ও কন্টেন্ট সামঞ্জস্য প্রভাবিত করে)।

রিগ্রেশন পরামর্শ (গুরুত্বপূর্ণ) ​

বর্তমান ব্রাঞ্চ প্রকৃত মেশিনে কম্পাইল করা হয়নি, প্রথম বিল্ডের পর এই ক্রমে রিগ্রেশন করার পরামর্শ দেওয়া হয়: ১. বেস: openttd-jrpm -v দেখায় jrpm-0.1.0; ২.存档: একক খেলা শুরু করে ১-২ বছর চালান; ৩. মাল্টিপ্লেয়ার: jrpm ক্লায়েন্ট পারস্পরিক সংযোগ; jgrpp/pxp ক্লায়েন্ট যোগদান; ৪. নতুন বৈশিষ্ট্য: ট্রেন ডিকাপলিং (ডিকাপল/অ্যাটাচ/বিপরীত), মডুলার এয়ারপোর্ট (লেআউট পরিবর্তন), সমান্তরাল ডাউনলোড, স্বয়ংক্রিয় গ্রুপিং, নির্মাণ টুলটিপ, GlobalAI; ৫. পুরনো বৈশিষ্ট্য রিগ্রেশন: সিগন্যাল, tracerestrict, scheduled dispatch, টেমপ্লেট প্রতিস্থাপন।