FAQ de développement

Cet article couvre les questions concernant le développement de OpenTTD, c.à.d. l'utilisation de SVN, le téléchargement des sources, le paramétrage des compilateurs, etc.

Contents

Contribuer au projet

Que puis-je faire pour contribuer au projet?

  • Cela dépend de vos talents. Si vous êtes bon codeur, vous pourriez vouloir aider à implémenter de nouvelles fonctionnalités ou à corriger des erreurs. D'autres sortes d'aides sont aussi toujours les bienvenues, comme la traduction en d'autres langues, le dessin de graphismes, la rédaction de ce manuel, ou la fabrication de sons et de musiques.

En quel langage OpenTTD est-il écrit?

  • OpenTTD est programmé en C++, la version ANSI-C utilisée par MS Visual Studio, pour être plus spécifique. Lisez les directives de codage pour avoir une référence sur la manière de structurer votre code.

J'ai corrigé un bogue/ajouté une fonctionnalité. Comment puis-je le soumettre dans la base de code?

  • Faites un fichier diff (ou fichier patch) de vos changements et soumettez-le à Flyspray. Merci de consulter le traqueur d'ajouts soigneusement pour voir si les développeurs ont des suggestions. Si tout est OK avec votre ajout, il sera fusionné dans l'arbre SVN.

Je veux devenir un développeur officiel de OpenTTD! Comment faire?

  • La seule manière d'y entrer est de faire constamment des ajouts, surtout les corrections de bogues. Vérifiez la liste des bogues connus et faites attention à notre style de codage favori. Quand la somme de temps que vous aurez passé à coder OpenTTD atteindra un certain niveau, les chances augmenteront pour que vous receviez un compte SVN et soyez ajouté à la liste.

Code source

Qu'est-ce que le code source?

Comment puis-je obtenir le code source?

Qu'est-ce que la version SVN?

  • SVN, alias Subversion Subversion, est un système de contrôle de version, comme CVS. Sommairement, il trace les changements au code source du jeu. La version SVN est le dernier (encore saignant) code source du jeu.

Sur quels systèmes d'exploitation tourne Subversion?

  • Toutes les déclinaisons modernes de Unix, Win32, BeOS, OS/2, Mac OS X. Subversion est écrit en C ANSI et utilise APR, la bibliothèque portable d'Apache, comme couche de portabilité. Le client Subversion tournera partout où tourne APR, c'est-à-dire à la plupart des endroits.

Comment puis-je alors obtenir la version SVN?

  • Tout d'abord, vous devez télécharger le logiciel client pour votre système d'exploitation, qui se connectera au serveur SVN et téléchargera le code source. Vous pouvez le récupérer de la page d'accueil du projet SVN à http://subversion.tigris.org/. Si vous utilisez Windows, vous pourrez prendre TortoiseSVN car il s'intègre bien avec Explorer, et vous n'aurez pas à lancer de choses en ligne de commande.

    Ensuite, vous devez paramétrer le client pour utiliser l'URL du dépôt, qui est "svn://svn.openttd.org/trunk". Cela dépendra du logiciel que vous aurez choisi, mais vous pourrez trouver comment faire dans la documentation incluse avec.

    Sur Linux (Unix), vous pouvez utiliser la commande "svn co svn://svn.openttd.org/trunk/".

Subversion n'a pas été porté sur ma plateforme / Je ne veut pas installer plus de logiciels - y a-t-il un autre moyen pour obtenir le code source?

  • Vous pouvez consulter le dépôt en ligne sur http://svn.openttd.org/; vous pouvez aussi vérifier des copies afin d'obtenir un ensemble complet de code source. Vous pouvez enfin obtenir le dernier code source nocturne depuis http://nightly.openttd.org/.

Maintenant que j'ai le code source, comment puis-je le compiler?

J'ai un problème de compilation. Que dois-je faire?

  • Ce n'est pas une FAQ de compilation. Essayez de demander de l'aide à votre fournisseur de compilateur.

Pourquoi les développeurs ont-ils décidé d'utiliser Subversion?

  • Subversion (SVN) a été choisi par rapport à CVS car il est plus avancé et plus facile à utiliser. De plus, beaucoup de développeurs n'aiment plus autant CVS, depuis qu'ils connaissent SVN.
  • SVN a été "choisi" sur un système de contrôle de version distribué (DVCS) comme Bazaar, Darcs, git, Mercurial et SVK parce que lorsque le choix a été fait, aucun de ceux-ci n'existait. GNU arch était un des quelques DVCS existants, mais il était difficile à apprendre et à comprendre. Plus tard, une API de versionnage pour les NewGRFs a été faite depuis la révision SVN; migrer vers un DVCS supprimerait cette possibilité en cassant beaucoup de NewGRFs existants.

Quelle est l'utilité d'un système de contrôle de version? Pourquoi ne pas simplement charger le code dans un répertoire FTP?

  • Les systèmes de contrôle de version gardent la trace de tous les changements, quand ils ont été faits et par qui. Si les développeurs se rendent compte plus tard que quelque chose qu'ils ont fait était une erreur et cassait quelque chose d'important, ils doivent alors le réécrire depuis rien. Avec ce système, ils peuvent simplement 'récupérer' une révision depuis là où elle fonctionnait. Cela permet aux développeurs d'ajouter des commentaires pour savoir quelles modifications ont été faites.

Comment faire un ficheir diff pour partager mes modifications avec les autres codeurs?

  • Sous Linux, utilisez la commande "svn diff > mypatch.diff" depuis le répertoire source pour créer un ficheir diff.
  • Sous Windows, vous pouvez faire la même chose depuis l'invite de commande ou, si vous avez Tortoise SVN, cliquer avec le bouton droit sur le répertoire source et choisir Créer un patch. Cela vous demandera un emplacement et un nom de fichier.

Comment appliquer un ajout?

Il vaut en général mieux appliquer les ajouts à la révision de laquelle est parti le créateur de l'ajout.

Différents systèmes de contrôle de version utilisent différents moyens pour exprimer les changements. Actuellement, il u a les ajouts de type SVN et ceux de type HG/GIT. Pour savoir ce que vous avez, ouvrez le fichier d'ajout avec un éditeur de texte et regardez les premières lignes.

Un ajout de type SVN commence ainsi:

Index: src/gfx.cpp
===================================================================
--- src/gfx.cpp (revision 20024)
+++ src/gfx.cpp (working copy)
@@ -641,14 +641,13 @@
...

et un de type HG/GIT ainsi:

diff --git a/src/gfx.cpp b/src/gfx.cpp
--- a/src/gfx.cpp
+++ b/src/gfx.cpp
@@ -641,14 +641,13 @@
...

La différence primordiale est les ajouts a/ et b/ des lignes commençant par --- et +++.

patch -p0 < nom_patch (pour les ajouts de type SVN). Cependant, parfois, vous aurez besoin de patch -p1 < nom_patch (pour les ajouts de type HG/GIT).

/File/en/Content.png
Attention
TortoiseSVN ne peut gérer que les ajouts de type SVN; il NE PEUT PAS traiter les ajouts de type HG/GIT!!

Faites un clic droit sur le répertoire contenant le code source de OpenTTD, ouvrez le sous-menu TortoiseSVN et choisissez 'Appliquer l'ajout...'. Naviguez jusqu'au fichier d'ajout et choisissez-le. Puis faites un clic droit sur la fenêtre 'Fichiers d'ajout' et cliquez sur 'Ajouter tout'. Une fois ceci fait, fermez la fenêtre de TortoiseMerge.