دليل التطوير
تشرح هذه الوثيقة كيفية مواصلة التطوير على jrpm. جميع الأنماط مأخوذة من الكود المطبق فعلياً في هذا المشروع (يمكن مقارنتها مع الـ commits في git log).
نظرة سريعة على تنظيم الكود
| الدليل | المسؤولية |
|---|---|
src/ | جميع كود C++ (المستوى العلوي مسماة حسب النظام: rail_cmd.cpp، group_gui.cpp...) |
src/network/ | الشبكات (خادم/عميل/UDP/HTTP/تنزيل المحتوى) |
src/script/ | إطار البرامج النصية (Squirrel)؛ api/ هو فئات API لـ AI/GS |
src/table/settings/*.ini | مصدر تعريف الإعدادات (يتم توليد الكود بواسطة settingsgen) |
src/lang/english.txt | تعريف السلاسل النصية (يتم توليدها بواسطة strgen) |
src/sl/saveload_common.h | تعداد إصدار الحفظ (SLV) |
bin/ai/ | برامج AI النصية (GlobalAI هو مثال) |
أنماط التطوير الشائعة
- إضافة أمر لعبة جديد: تعداد الأمر +
DEF_CMD_TUPLE_NT+ معالج + مدخل واجهة مستخدم/كونسول - إضافة واجهة برمجة تطبيقات برنامج نصي جديدة:
script_*.hpp/.cpp(ربط Squirrel تلقائي) - إضافة عنصر إعداد جديد:
.ini+ حقلsettings_type.h+ سلسلة نصية
البناء
bash
cmake -B build ..
cmake --build build -jملاحظات التطوير
- الترميز: بعد تغيير الكود المصدري/الوثائق التي تحتوي على الصينية، انتبه إلى UTF-8 (أدوات Write/Edit المحلية قد أنتجت ترميز GBK سابقاً، يمكن إصلاحه باستخدام
jgrpp-features/_fix_utf8.py)؛ - رسالة الـ commit: يوصى بالإنجليزية (لتجنب مشاكل ترميز الطرفية)؛
- الإدراج في منتصف تعداد الأمر سيزيح معرفات الأوامر اللاحقة——الثنائي القديم سيكون غير متوافق مع الجديد عند الاتصال، هذا أمر طبيعي داخل fork، الترقية تحتاج إلى مزامنة؛
- إصدار الحفظ: عند تغيير هيكل الحفظ، أضف إدخال
SLV_*جديداً فيsrc/sl/saveload_common.hوحدّث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؛ - الحفظ: افتح حفظاً محلياً وشغّل 1-2 سنة؛
- الشبكة: اتصال عملاء jrpm ببعضهم؛ انضمام عملاء jgrpp/pxp؛
- الميزات الجديدة: فك القاطرة (فك/ربط/عكس)، مطار معياري (تعديل التخطيط)، تنزيل متوازي، تجميع تلقائي، تلميح البناء، GlobalAI؛
- اختبار الميزات القديمة: الإشارات، tracerestrict، جدولة مجدولة، استبدال القوالب.