Часто задаваемые вопросы разработчика
OpenTTD's Wiki
Development
Часто задаваемые вопросы разработчика
View Page
View History
Login
Source
[[Translation:en/Development/FAQ development]] Данная статья охватывает вопросы касательно разработки OpenTTD, например, использование SVN, загрузка исходных текстов, компиляция и т.д. ===Вклад в проект=== ====Что я могу сделать, чтобы помочь проекту?==== :* Это зависит от ваших возможностей. Если вы хорошо программируете, вы можете помочь в создании новых штук или отлове ошибок. Кроме этого, помощь всегда приветствуется, например, [[ru/Archive/Community/Интернационализация|перевод]] на другие языки, рисование графики, написание этого руководства или создание звуков и музыки. ====На каком языке написан OpenTTD?==== :* OpenTTD написан на С++, для определенности используется стандарт ANSI-C, который поддерживается в MS Visual Studio. Для правильного структурирования кода, прочитайте [[en/Development/Coding style|руководство по стилю программирования]]. ====Я исправил баг или написал свое дополнение. Как я могу внести это в общий код?==== :*Сделайте diff-файл (также известный как патч, patch-файл) с вашими изменениями и добавьте его в [http://bugs.openttd.org Flyspray]. Пожалуйста, внимательно отслеживайте трекер патчей: у разработчиков могут быть вопросы и предложения. Если с вашим патчем все в порядке, он будет добавлен в дерево SVN. ====Я хочу стать официальным разработчиком OpenTTD. Как?==== :*Единственный способ стать таким разработчиком — это постоянно делать патчи, особенно багфиксы. Сверяйтесь со [http://bugs.openttd.org/index.php?string=&project=1&type=1 списком известных багов] и придерживайтесь указанного [[en/Development/Coding style|стиля программирования]]. Когда количество времени, которое вы проводите за кодингом OpenTTD, достигнет нашего уровня, велики шансы, что вы получите SVN-аккаунт и будете добавлены в список разработчиков. ===Исходный код=== ====Что такое исходный код?==== :* [http://www.google.ru/search?q=си%2B%2B+учебник Не заморачивайтесь по этому поводу. А дальше можете вообще не читать]. [http://www.google.com/search?q=C%2B%2B+tutorial (англ.)] ====Как мне получить исходный код?==== :* Новейший релиз: [http://www.openttd.org/download-stable загрузить с сайта] :* [[en/Archive/Community/Nightly build|Ночные сборки]]: [http://nightly.openttd.org/ загрузить со страницы ночных сборок] :* Наиболее современный исходный код в SVN: svn://svn.openttd.org/trunk ====Что такое SVN?==== :* SVN, или [https://www.wikipedia.org/wiki/ru:Subversion Subversion], это система контроля версий, как [https://www.wikipedia.org/wiki/ru:CVS 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, вам может понравиться [http://tortoisesvn.tigris.org/ TortoiseSVN], она интегрируется с Проводником (Explorer), и вам не придется запускать все это из командной строки.<br><br>Затем нужно настроить программу-клиент на использование url репозитория OpenTTD: «''svn://svn.openttd.org/trunk''». Способ настройки зависит непосредственно от клиента, но он непременно описан в документации к программе.<br><br>Обладатели Linux (Unix) могут использовать команду «''svn co svn://svn.openttd.org/trunk/''». ====Subversion не портирована на мою ОС / Я не хочу устанавливать еще больше софта — есть ли какой-то еще способ получить исходный код?==== :* Можно посмотреть репозиторий по адресу http://svn.openttd.org/, можно также сверить копии, для того, чтобы получить полный исходный код. Кроме того, можно загружать новейшую «ночную» версию кода с http://nightly.openttd.org/. ====Теперь у меня есть исходный код, как я могу скомпилировать его?==== :* Компиляция OpenTTD в Windows, используя [[:Category:en/Development/Microsoft Visual C++|Microsoft Visual C++]] :* Компиляция OpenTTD в Windows, используя [[ru/Archive/Compilation and Ports/Компиляция на MinGW|MinGW]] :* Компиляция OpenTTD в [[ru/Archive/Compilation and Ports/Linux|Linux]] :* Компиляция OpenTTD в [[en/Archive/Compilation and Ports/Compiling on Mac OS X|MacOS X]] :* Компиляция OpenTTD в [[en/Archive/Compilation and Ports/Compiling on Solaris|Solaris]] ====Проблемы с компиляцией! Что делать?!==== :* Здесь не задают вопросов про компиляцию, об этом вам лучше расскажет поставщик вашего компилятора. ====Почему разработчики решили использовать Subversion?==== :* Subversion (SVN) была выбрана, потому что она более продвинута и проще в использовании, чем CVS. Многие разработчики сейчас не любят CVS — у них есть SVN. :* SVN была «выбрана» вместо распределенных систем контроля версий (DVCS), таких как ''Bazaar'', ''Darcs'', ''git'', ''Mercurial'' и ''SVK'', потому что в то время, когда надо было выбирать, этих систем не существовало. ''GNU arch'' была одной из существовавших распределенных систем, но была слишком сложна в изучении и понимании. Версиями позднее, API для NewGRF-ов, был сделан на основе ревизии SVN, поэтому миграция на распределенную систему нарушила бы эту особенность, ломая многие готовые модули NewGRF. ====Зачем использовать систему контроля версий? Почему бы просто не загрузить исходный код на FTP?==== :* Система контроля версий следит за всеми изменениями, когда они были сделаны и кем. Если разработчики в один прекрасный момент обнаружат, что они сделали ошибку и сломали что-то важное, возможно, им придется переписывать все заново. А с системой контроля версий они могут просто восстановить рабочую копию из одной из прошлых (работающих) ревизий из репозитория (операция ''checkout''). Кроме того, система позволяет разработчикам добавлять комментарии, чтобы дать знать остальным, какие изменения были произведены. ====Как сделать diff-файл, чтобы поделиться изменениями с другими?==== {{ru/Необходимо сделать|Откорректировать содержание подраздела и конкретизировать термины и указания}} :* Чтобы создать diff-файл в Linux, используйте команду «svn diff > mypatch.diff» из директории с кодом. :* В Windows можно сделать то же самое из командной строки, или, если у вас есть Tortoise SVN: кликнуть правой кнопкой мыши на директории с кодом и нажать «Create Patch». Программа спросит о местонахождении и имени файла. ====Как применить патч?==== Обычно лучше применять патчи к ревизии, начатой создателем патча. Разные системы контроля версий используют разные способы внесения изменений. На данный момент есть патчи типа SVN и типа HG/GIT. Чтобы узнать, какой патч у вас, откройте файл патча текстовым редактором и посмотрите на первые строки. Патчи типа SVN начинаются так: <pre> Index: src/gfx.cpp =================================================================== --- src/gfx.cpp (revision 20024) +++ src/gfx.cpp (working copy) @@ -641,14 +641,13 @@ ... </pre> а патчи HG/GIT так: <pre> diff --git a/src/gfx.cpp b/src/gfx.cpp --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -641,14 +641,13 @@ ... </pre> Критическая разница — в добавках <code>a/</code> и <code>b/</code> в строках, начинающихся с <code>---</code> и <code>+++</code>. *'''Linux:''' Наберите следующую строку в консоли (замените patch_name именем файла патча): :<code>patch -p0 < patch_name</code> (для патчей SVN-типа). Однако, в некоторых случаях, вам может понадобиться <code>patch -p1 < patch_name</code> (для HG/GIT-типа патчей). *'''Windows:''' Убедитесь, что у вас установлена [http://tortoisesvn.tigris.org TortoiseSVN]. {{ru/Внимание| TortoiseSVN поддерживает только патчи типа SVN, и '''не поддерживает''' HG/GIT-тип!}} :Правый клик на папке с исходным кодом OpenTTD, в подменю TortoiseSVN выбрать 'Apply Patch...' Найдите и выберите файл патча. Затем, правый клик на окне 'File Patches' и выберите 'Patch All'. После завершения, закройте окно TortoiseMerge.
Templates
Ambox (en)
Внимание
Необходимо сделать
Used on pages
Development
OpenTTD's Wiki
Загрузка
Разработка
Часто задаваемые вопросы