Guide de developpement
Ce document explique comment continuer le developpement sur jrpm. Tous les modeles proviennent du code reellement implemente dans ce projet (consultable dans git log).
Apercu rapide de l'organisation du code
| Repertoire | Responsabilite |
|---|---|
src/ | Tout le code source C++ (niveau superieur nomme par systeme : rail_cmd.cpp, group_gui.cpp...) |
src/network/ | Reseau (serveur/client/UDP/HTTP/telechargement de contenu) |
src/script/ | Framework de script (Squirrel) ; api/ pour les classes d'API AI/GS |
src/table/settings/*.ini | Sources de definition des parametres (settingsgen genere le code) |
src/lang/english.txt | Definition des chaines (strgen genere) |
src/sl/saveload_common.h | Enumeration des versions d'archive (SLV) |
bin/ai/ | Scripts AI (GlobalAI est un exemple) |
Modeles de developpement courants
- Ajouter une commande de jeu : Enumeration de commande +
DEF_CMD_TUPLE_NT+ processeur + entree GUI/console - Ajouter une API de script :
script_*.hpp/.cpp(liaison Squirrel automatique) - Ajouter un parametre :
.ini+ champsettings_type.h+ chaine
Construction
bash
cmake -B build ..
cmake --build build -jNotes de developpement
- Encodage : Les sources/documents contenant du chinois doivent etre en UTF-8 apres modification (l'outil Write/Edit de cette machine a deja produit du GBK, utilisable avec
jgrpp-features/_fix_utf8.pypour corriger) ; - Messages de commit : Recommande en anglais (evite les problemes d'encodage du terminal) ;
- Insertion au milieu de l'enumeration de commandes : Decale les IDs des commandes suivantes -- les binaires ancienne version et nouvelle version ne seront pas cohérents en multijoueur, c'est normal dans un fork, la mise a jour doit etre synchronisee ;
- Version d'archive : En cas de modification de la structure d'archive, ajouter une entree
SLV_*danssrc/sl/saveload_common.het mettre a jourSAVEGAME_VERSION; - Nouveaux fichiers : Les
.cppdoivent etre ajoutes a la liste source duCMakeLists.txtcorrespondant (src/CMakeLists.txtou sous-repertoire/script/api/CMakeLists.txt) ; lesscript_*.hppsont decouverts automatiquement parfile(GLOB), pas besoin d'enregistrement ; - Nouvelles chaines : Ajouter dans
src/lang/english.txt(les autres langues utilisent l'anglais par defaut) ; - Compatibilite NewGRF/archive : Modifier
_openttd_content_version/ le numero de version NewGRF avec prudence (affecte le multijoueur et la compatibilite du contenu).
Suggestions de regression (importantes)
La branche actuelle n'a pas ete compilee reellement, apres la premiere construction, il est recommande de tester dans cet ordre :
- Base :
openttd-jrpm -vaffichejrpm-0.1.0; - Archive : Ouvrir une partie solo et jouer 1-2 ans ;
- Multijoueur : Interconnexion de clients jrpm ; connexion de clients jgrpp/pxp ;
- Nouvelles fonctionnalites : Decouplage (attelage/decouplage/marche arriere), Aeroports modulaires (modification de disposition), Telechargement parallele, Groupement automatique, Infobulle de construction, GlobalAI ;
- Regression des anciennes fonctionnalites : Signaux, tracerestrict, scheduled dispatch, remplacement de modeles.