1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-OpenTTD

Клонировать/Скачать
CONTRIBUTING.md 24 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 13:34 5f84a64

Вклад в OpenTTD

Хотите внести свой вклад в OpenTTD? Вот как вы можете помочь.

Пожалуйста, уделите время изучению этого документа, чтобы сделать процесс внесения вклада простым и эффективным для всех участников.

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

Использование системы отслеживания проблем

Система отслеживания проблем является предпочтительным каналом для [отчётов об ошибках](#отчёты об ошибках), но, пожалуйста, соблюдайте следующие ограничения:

  • Пожалуйста, не используйте систему отслеживания проблем для помощи в игре или использовании OpenTTD. Попробуйте irc, Discord или форумы.

  • Пожалуйста, не отвлекайте обсуждение или тролльте проблемы. Поддерживайте обсуждение по теме и уважайте мнения других.

  • Пожалуйста, не публикуйте комментарии, состоящие исключительно из «+1» или «:thumbsup:». Используйте функцию «реакции» GitHub вместо этого. Мы оставляем за собой право удалять комментарии, нарушающие это правило.

  • Пожалуйста, не открывайте проблемы или запросы на вытягивание (pull requests) относительно контента дополнений в NewGRF, GameScripts, AIs и т. д. Они создаются третьими сторонами. Обсудите их на irc, Discord или на форумах.

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

Отчёты об ошибках

Ошибка — это очевидная проблема, вызванная кодом в репозитории. Хорошие отчёты об ошибках очень полезны, так что спасибо!

Рекомендации для отчётов об ошибках:

  1. Пожалуйста, не сообщайте о проблемах с играми, в которых вы изменили NewGRFs во время игры. (Это можно проверить с помощью консольной команды gamelog в игре.)

  2. Пожалуйста, не сообщайте о проблемах с модифицированными версиями OpenTTD (патчпаки, неофициальные порты и тому подобное).

  3. Используйте поиск по проблемам GitHub — проверьте, не была ли проблема уже зарегистрирована.

  4. Проверьте, была ли проблема исправлена — попробуйте воспроизвести её, используя последнюю nightly сборку OpenTTD, доступную по адресу https://www.openttd.org.

  5. Изолируйте проблему — в идеале создайте воспроизводимые шаги с прикреплённым сейвом (сохранённой игрой) и скриншотами. Постарайтесь использовать как можно меньше или вообще не использовать NewGRFs, AI и т. п., если это возможно.

Хороший отчёт об ошибке не должен оставлять других людей нуждающимися в дополнительной информации от вас. Пожалуйста, постарайтесь быть как можно более подробными в своём отчёте.

  • Какова ваша среда?
  • Какие шаги воспроизведут проблему?
  • На каких операционных системах возникает проблема?
  • Какого результата вы ожидаете?

Все эти детали помогут людям исправить любые потенциальные ошибки. Пример:

Короткий и описательный пример названия отчёта об ошибке

Краткое изложение проблемы и среды ОС, в которой она возникает. Если подходит, включите шаги, необходимые для воспроизведения ошибки.

  1. Это первый шаг
  2. Это второй шаг
  3. Дальнейшие шаги и т.д.

Приложенный сейв Прикреплённые скриншоты, показывающие проблему Crashlogs, если ошибка вызывает сбой

Любая другая информация, которую вы хотите предоставить, которая имеет отношение к сообщаемой проблеме. Сюда могут входить строки кода, которые вы определили как вызывающие ошибку, и возможные решения (и ваше мнение об их достоинствах).

Запросы на добавление функций

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

Именно вы должны убедительно доказать разработчикам проекта преимущества этой функции.

Пожалуйста, предоставьте как можно больше деталей и контекста. Это означает, что не просите решение, а опишите проблему, которую вы видите, и как/почему вы думаете, что её нужно исправить. Вот перевод текста на русский язык:

С идеями вроде «отличная идея» или «на самом деле это не баг, но, возможно, стоит исправить» получается обратный эффект: на них больше никто не смотрит.

Хотя мы очень ценим обратную связь и идеи, мы закрываем запросы на добавление функций, которые не ожидаем реализовать в следующем году.

Многие из этих идей и т. д. имеют место на форумах (https://www.tt-forums.net), и если они понравятся достаточному количеству людей, кто-то встанет и сделает это.

Обычно лучше обсудить всё в Discord (https://discord.gg/openttd), прежде чем открывать запрос на добавление функции или работать над большой функцией в форке. Обсуждение может занять время, но оно может быть продуктивным и позволит избежать разочарования. :)

Запросы на включение изменений

Хорошие запросы на включение изменений — патчи, улучшения, новые функции — фантастическая помощь.

Запросы на включение изменений должны соответствовать целям проекта (см. CONTRIBUTING.md#project-goals).

Пожалуйста, сначала спросите, прежде чем приступать к любому значительному запросу на включение изменений (например, реализация функций, рефакторинг кода, перенос на другой язык), иначе вы рискуете потратить много времени на работу над тем, что разработчики проекта могут не захотеть включить в проект.

Каждый запрос на включение изменений должен иметь чёткую область действия, без несвязанных коммитов.

Код должен соответствовать стилю (см. CODINGSTYLE.md), чтобы запросы на включение были приняты; это также включает формат сообщений коммита (см. CODINGSTYLE.md#commit-message).

Следование следующему процессу — лучший способ включить вашу работу в проект:

  1. Форкните проект, клонируйте свой форк и настройте пульты:
git clone https://github.com/<your-username>/OpenTTD.git openttd
git clone https://github.com/OpenTTD/OpenTTD-git-hooks.git openttd_hooks
cd openttd
git remote add upstream https://github.com/OpenTTD/OpenTTD.git
cd .git/hooks
ln -s ../../../openttd_hooks/hooks/* .
  1. Если вы клонировали некоторое время назад, получите последние изменения от upstream:
git fetch upstream
  1. Создайте новую тематическую ветку (от основной ветки разработки проекта), чтобы содержать вашу функцию, изменение или исправление:
git checkout upstream/master -b <topic-branch-name>
  1. Внесите свои изменения логическими частями. Пожалуйста, придерживайтесь этих рекомендаций по сообщениям коммитов Git (см. CODINGSTYLE.md#commit-message), иначе ваш код вряд ли будет включён в основной проект. Используйте интерактивную функцию перебазирования Git, чтобы привести в порядок свои коммиты перед тем, как сделать их общедоступными.
  2. Локально перебазируйте ветку разработки upstream в свою тематическую ветку:
git fetch upstream
git rebase upstream/master
  1. Отправьте свою тематическую ветку в свой форк в первый раз:
git push --set-upstream origin <topic-branch-name>

И в любое время после этого:

git push
  1. Откройте запрос на включение (https://help.github.com/articles/using-pull-requests/) с чётким заголовком и описанием против ветки master.

ВАЖНО: отправляя запрос на включение или патч, вы соглашаетесь с Лицензией (см. #license) и Уведомлением о конфиденциальности (CONTRIBUTING.md#privacy-notice).

Проверка запросов на включение

Инструменты непрерывной интеграции (CI) отслеживают запросы на включение и помогают нам выявлять проблемы со сборкой и качеством кода.

Результаты тестов CI будут отображаться в вашем запросе на включение.

Нажав на «Подробности», вы можете увеличить масштаб; в случае сбоя он покажет вам, почему это произошло. В случае успеха он сообщит, насколько вы были круты. Совет: формат сообщения коммита (см. CODINGSTYLE.md#commit-message) является распространённой причиной сбоя проверки запросов на включение.

Есть ли какие-нибудь документы для разработчиков?

Нет единого источника документации по разработке OpenTTD. Это сложный проект с долгой историей и множеством API.

Хорошей отправной точкой является раздел «Разработка» на вики OpenTTD (https://wiki.openttd.org/en/Development/), который содержит ссылки на документацию вики и другие источники.

Репозиторий GitHub также включает некоторую неполную документацию в /docs (./docs). Они включают:

  • Когда менять другие языки, а когда нет. Цели проекта

Каковы цели официальной ветки?

Основные цели официальной ветви:

  • оставаться верным оригинальному игровому процессу из Transport Tycoon Deluxe;
  • улучшить пользовательский интерфейс;
  • позволить расширять игровой процесс с помощью дополнений / модов через поддерживаемые API контента;
  • предоставить относительно стабильную основу как для игроков официальной ветви, так и для авторов дополнений и сопровождающих патчепаки.

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

Причина этих целей в том, что у людей разные мнения о том, чем является OpenTTD и чем он должен быть. Когда дело доходит до игрового процесса, есть как минимум следующие группы людей:

  1. Модель железной дороги (в основном одиночная игра): создание «реалистичных» ландшафтов, ролевая игра в мире или даже воссоздание исторических сценариев.
  2. Экономический вызов (в основном одиночный): ведение бизнеса с экономическими проблемами.
  3. Транспортная задача (одиночная или совместная многопользовательская): построение эффективных схем путей с высокой пропускной способностью грузов и множеством транспортных средств.
  4. Конкурентный скоростной забег (конкурентная многопользовательская игра): максимизация какой-либо цели за ограниченное количество времени.

Что касается функций игрового процесса, то есть как минимум такие группы интересов:

  • Контрол-фрик: микроменеджмент, такой как условные приказы, переоборудование и загрузка и т. д.
  • Казуал: автоматизация, такая как cargodist, сигнализация на основе пути и т. д.

Чтобы угодить всем, официальная ветвь старается придерживаться оригинального игрового процесса; в конце концов, именно это всех сюда привело. Предпочтительный метод изменения и расширения игрового процесса — через дополнения, такие как NewGRF и GameScripts.

Долгое время официальная ветка также была открыта для функций, которые можно было включить/отключить, но угловые случаи, связанные с некоторыми конфигурациями, сделали некоторые части кода очень сложными. Сегодня новые функции должны работать со всеми уже существующими функциями, что не только сложно в угловых случаях, но и требует гораздо больше работы, чем просто «заставить это работать в режиме игры, в который я играю».

Предпочтительным методом внедрения новых функций игрового процесса является расширение API контента, поддержка всё большего количества дополнительного контента / модов.

Это переносит решение конфликтов от кодовой базы к авторам контента / игрокам. Более приемлемо, когда дополнения не работают вместе, чем базовая игра не работает с определёнными комбинациями настроек.

Как правило, игра должна позволять всё, что не нарушает основных правил, но она должна предупреждать игроков, если они предпринимают потенциально опасные или «глупые» действия.

Например, игрокам не запрещается запускать транспортные средства без приказов, но они получат предупреждение о транспортных средствах, имеющих слишком мало приказов. Отсутствие ограничений привело к тому, что игроки бросают себе вызов создавать сети, где все транспортные средства не имеют приказов, увеличивая возможности игрового процесса.

Я не согласен с целями официальной ветки, что я могу сделать вместо этого?

Форк! Существует богатая история экспериментальных патчей для OpenTTD.

Многие из них никогда не будут приняты за ядро, но представляют собой творческие и интересные способы модификации OpenTTD.

Иногда патчи объединяются в долгосрочные патчепаки, модифицированные версии OpenTTD, которые может скачать любой желающий, или модифицированные клиенты OpenTTD для специализированных многопользовательских серверов.

Одна из причин поддерживать ядро относительно... Стабильность призвана по возможности облегчить жизнь авторам патчей и сопровождающим набор патчей.

Обсуждения наборов патчей и связанные с ними темы можно найти на сайтах сообщества, таких как раздел разработки TT-Forums.

Юридические вопросы

Лицензия

Предоставляя свой код, вы соглашаетесь лицензировать свой вклад в соответствии с GPL v2.

Уведомление о конфиденциальности

Мы хотели бы сообщить вам, что при внесении вклада в OpenTTD через git навсегда сохраняются имя и адрес электронной почты, которые вы предоставляете, а также фактические изменения, время и дата, когда вы их внесли, в истории версий git.

Это неизбежно, поскольку является основной функцией git. Если вы беспокоитесь о своей конфиденциальности, мы настоятельно рекомендуем использовать «Anonymous <anonymous@openttd.org>» в качестве автора коммита git. Мы можем отклонить анонимные вклады, если есть подозрение в злонамеренных намерениях.

Обратите внимание, что личность участника, однажды предоставленная, используется для проверки авторских прав и предоставления доказательств в случае внесения вредоносного коммита. Таким образом, право ЕС GDPR «забыть о себе» не применяется, так как это является законным интересом, имеющим преимущественную силу.

Также обратите внимание, что ваш коммит является публичным и, таким образом, потенциально будет обрабатываться многими третьими сторонами. Распределённая природа Git делает невозможным отслеживание того, где именно будет храниться и обрабатываться ваш коммит и, следовательно, ваши личные данные. Если вы не хотите принимать этот риск, пожалуйста, либо совершайте коммиты анонимно, либо воздержитесь от участия в проекте OpenTTD.

Атрибуция этого руководства по участию

Это руководство по участию адаптировано из Bootstrap в соответствии с условиями лицензии Creative Commons Attribution 3.0 Unported License для документации Bootstrap. Уведомление GDPR адаптировано из rsyslog под лицензией GNU General Public License.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-OpenTTD.git
git@api.gitlife.ru:oschina-mirror/mirrors-OpenTTD.git
oschina-mirror
mirrors-OpenTTD
mirrors-OpenTTD
master