Часто задаваемые вопросы разработчика

Данная статья охватывает вопросы касательно разработки OpenTTD, например, использование SVN, загрузка исходных текстов, компиляция и т.д.

Contents

Вклад в проект

Что я могу сделать, чтобы помочь проекту?

  • Это зависит от ваших возможностей. Если вы хорошо программируете, вы можете помочь в создании новых штук или отлове ошибок. Кроме этого, помощь всегда приветствуется, например, перевод на другие языки, рисование графики, написание этого руководства или создание звуков и музыки.

На каком языке написан OpenTTD?

Я исправил баг или написал свое дополнение. Как я могу внести это в общий код?

  • Сделайте diff-файл (также известный как патч, patch-файл) с вашими изменениями и добавьте его в Flyspray. Пожалуйста, внимательно отслеживайте трекер патчей: у разработчиков могут быть вопросы и предложения. Если с вашим патчем все в порядке, он будет добавлен в дерево SVN.

Я хочу стать официальным разработчиком OpenTTD. Как?

  • Единственный способ стать таким разработчиком — это постоянно делать патчи, особенно багфиксы. Сверяйтесь со списком известных багов и придерживайтесь указанного стиля программирования. Когда количество времени, которое вы проводите за кодингом OpenTTD, достигнет нашего уровня, велики шансы, что вы получите SVN-аккаунт и будете добавлены в список разработчиков.

Исходный код

Что такое исходный код?

Как мне получить исходный код?

Что такое SVN?

  • SVN, или Subversion, это система контроля версий, как CVS. Главным образом, в ней отслеживаются изменения в исходном коде игры. Версия SVN — это наиболее поздняя (самая передовая) версия исходного кода игры.

На каких операционных системах запускается Subversion?

  • Все современные направления Unix, Win32, BeOS, OS/2, MacOS X. Subversion написана на ANSI-C и использует библиотеку APR (Apache Portable Runtime). Клиент SVN запустится везде, где запустится APR, а это большинство систем.

Как мне получить SVN-версию?

  • Прежде всего, вам необходимо загрузить программу-клиент (подходящую для своей операционной системы), которая подключится к серверу SVN и загрузит исходный код. Клиент можно скачать с домашней страницы SVN http://subversion.tigris.org/. Если вы используете Windows, вам может понравиться TortoiseSVN, она интегрируется с Проводником (Explorer), и вам не придется запускать все это из командной строки.

    Затем нужно настроить программу-клиент на использование url репозитория OpenTTD: «svn://svn.openttd.org/trunk». Способ настройки зависит непосредственно от клиента, но он непременно описан в документации к программе.

    Обладатели Linux (Unix) могут использовать команду «svn co svn://svn.openttd.org/trunk/».

Subversion не портирована на мою ОС / Я не хочу устанавливать еще больше софта — есть ли какой-то еще способ получить исходный код?

  • Можно посмотреть репозиторий по адресу http://svn.openttd.org/, можно также сверить копии, для того, чтобы получить полный исходный код. Кроме того, можно загружать новейшую «ночную» версию кода с http://nightly.openttd.org/.

Теперь у меня есть исходный код, как я могу скомпилировать его?

  • Компиляция OpenTTD в Windows, используя Microsoft Visual C++
  • Компиляция OpenTTD в Windows, используя MinGW
  • Компиляция OpenTTD в Linux
  • Компиляция OpenTTD в MacOS X
  • Компиляция OpenTTD в Solaris

Проблемы с компиляцией! Что делать?!

  • Здесь не задают вопросов про компиляцию, об этом вам лучше расскажет поставщик вашего компилятора.

Почему разработчики решили использовать Subversion?

  • Subversion (SVN) была выбрана, потому что она более продвинута и проще в использовании, чем CVS. Многие разработчики сейчас не любят CVS — у них есть SVN.
  • SVN была «выбрана» вместо распределенных систем контроля версий (DVCS), таких как Bazaar, Darcs, git, Mercurial и SVK, потому что в то время, когда надо было выбирать, этих систем не существовало. GNU arch была одной из существовавших распределенных систем, но была слишком сложна в изучении и понимании. Версиями позднее, API для NewGRF-ов, был сделан на основе ревизии SVN, поэтому миграция на распределенную систему нарушила бы эту особенность, ломая многие готовые модули NewGRF.

Зачем использовать систему контроля версий? Почему бы просто не загрузить исходный код на FTP?

  • Система контроля версий следит за всеми изменениями, когда они были сделаны и кем. Если разработчики в один прекрасный момент обнаружат, что они сделали ошибку и сломали что-то важное, возможно, им придется переписывать все заново. А с системой контроля версий они могут просто восстановить рабочую копию из одной из прошлых (работающих) ревизий из репозитория (операция checkout). Кроме того, система позволяет разработчикам добавлять комментарии, чтобы дать знать остальным, какие изменения были произведены.

Как сделать diff-файл, чтобы поделиться изменениями с другими?

/File/en/Klipper.png
Необходимо сделать
Откорректировать содержание подраздела и конкретизировать термины и указания
  • Чтобы создать diff-файл в Linux, используйте команду «svn diff > mypatch.diff» из директории с кодом.
  • В Windows можно сделать то же самое из командной строки, или, если у вас есть Tortoise SVN: кликнуть правой кнопкой мыши на директории с кодом и нажать «Create Patch». Программа спросит о местонахождении и имени файла.

Как применить патч?

Обычно лучше применять патчи к ревизии, начатой создателем патча.

Разные системы контроля версий используют разные способы внесения изменений. На данный момент есть патчи типа SVN и типа HG/GIT. Чтобы узнать, какой патч у вас, откройте файл патча текстовым редактором и посмотрите на первые строки.

Патчи типа SVN начинаются так:

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

а патчи HG/GIT так:

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

Критическая разница — в добавках a/ и b/ в строках, начинающихся с --- и +++.

patch -p0 < patch_name (для патчей SVN-типа). Однако, в некоторых случаях, вам может понадобиться patch -p1 < patch_name (для HG/GIT-типа патчей).

/File/en/Content.png
Внимание
TortoiseSVN поддерживает только патчи типа SVN, и не поддерживает HG/GIT-тип!

Правый клик на папке с исходным кодом OpenTTD, в подменю TortoiseSVN выбрать 'Apply Patch...' Найдите и выберите файл патча. Затем, правый клик на окне 'File Patches' и выберите 'Patch All'. После завершения, закройте окно TortoiseMerge.