Panduan Pengembangan
Dokumen ini menjelaskan cara melanjutkan pengembangan di jrpm. Semua pola berasal dari kode yang benar-benar diimplementasikan dalam proyek ini (dapat dibandingkan dengan komit di git log).
Ikhtisar Organisasi Kode
| Direktori | Tanggung Jawab |
|---|---|
src/ | Semua kode sumber C++ (tingkat atas dinamai berdasarkan sistem: rail_cmd.cpp, group_gui.cpp…) |
src/network/ | Jaringan (server/klien/UDP/HTTP/unduhan konten) |
src/script/ | Kerangka script (Squirrel); api/ untuk kelas API AI/GS |
src/table/settings/*.ini | Sumber definisi pengaturan (settingsgen menghasilkan kode) |
src/lang/english.txt | Definisi string (strgen menghasilkan) |
src/sl/saveload_common.h | Enum versi arsip (SLV) |
bin/ai/ | Script AI (GlobalAI sebagai contoh) |
Pola Pengembangan Umum
- Menambah perintah game baru: Enum perintah +
DEF_CMD_TUPLE_NT+ handler + GUI/entri konsol - Menambah API script baru:
script_*.hpp/.cpp(registrasi otomatis binding Squirrel) - Menambah item pengaturan baru:
.ini+ bidangsettings_type.h+ string
Build
bash
cmake -B build ..
cmake --build build -jCatatan Pengembangan
- Encoding: Kode sumber/dokumen yang mengandung bahasa Mandarin setelah perubahan perhatikan UTF-8 (alat Write/Edit mesin ini pernah menghasilkan encoding GBK, dapat diperbaiki dengan
jgrpp-features/_fix_utf8.py); - Pesan komit: Disarankan bahasa Inggris (menghindari masalah encoding terminal);
- Penyisipan di tengah enum perintah akan menggeser ID perintah berikutnya——versi biner lama dan baru tidak akan konsisten saat online, ini normal dalam fork, upgrade harus sinkron;
- Versi arsip: Saat mengubah struktur arsip, tambah entri
SLV_*baru disrc/sl/saveload_common.hdan perbaruiSAVEGAME_VERSION; - File baru:
.cppharus ditambahkan ke daftar sumber CMakeLists.txt yang sesuai (src/CMakeLists.txtatau subdirektori/script/api/CMakeLists.txt);script_*.hppditemukan secara otomatis olehfile(GLOB), tidak perlu registrasi; - String baru: Tambahkan di
src/lang/english.txt(bahasa lain default kembali ke Inggris); - Kompatibilitas NewGRF/arsip: Ubah
_openttd_content_version/ nomor versi NewGRF dengan hati-hati (mempengaruhi kompatibilitas online dan konten).
Saran Regresi (Penting)
Cabang saat ini belum dikompilasi di mesin nyata, setelah build pertama disarankan regresi dalam urutan ini:
- Dasar:
openttd-jrpm -vmenampilkanjrpm-0.1.0; - Arsip: Buka game single player jalankan 1-2 tahun;
- Online: Klien jrpm saling terhubung; klien jgrpp/pxp bergabung;
- Fitur baru: Kopling lokomotif (decouple/couple/mundur), Bandara modular (modifikasi tata letak), unduhan paralel, pengelompokan otomatis, tooltip bangunan, GlobalAI;
- Regresi fitur lama: Sinyal, tracerestrict, scheduled dispatch, penggantian templat.