ডেভেলপমেন্ট গাইড
এই ডকুমেন্ট 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 উদাহরণ) |
সাধারণ ডেভেলপমেন্ট প্যাটার্ন
- নতুন গেম কমান্ড: কমান্ড এনাম +
DEF_CMD_TUPLE_NT+ হ্যান্ডলার + GUI/কনসোল এন্ট্রি - নতুন স্ক্রিপ্ট API:
script_*.hpp/.cpp(স্বয়ংক্রিয় Squirrel বাইন্ডিং নিবন্ধন) - নতুন সেটিংস আইটেম:
.ini+settings_type.hফিল্ড + স্ট্রিং
বিল্ড
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, টেমপ্লেট প্রতিস্থাপন।