Основы строительства единой сети от iTKerry

OpenTTD - современная игра, клон Transport Tycoon Deluxe с открытым исходным кодом, написанный на C и С++. Содержит ряд ключевых улучшений и возможность игры по сети. На данный момент это главное направление развития игры.

Модераторы: eraserkry, Mihamster, Smoky555, Группа модераторов

Основы строительства единой сети от iTKerry

Сообщение itkerry » Пт май 09, 2014 17:36

Предисловие
Для правильной игры и понимания того что будет написано в этой статье объязательно в файле openttd.cfg найти строчку yapf.rail_firstred_twoway_eol = false и изменить на yapf.rail_firstred_twoway_eol = true. Для чего это делается я расскажу чуть пожже. Так же хочу заметить что автор данной статьи не играет с набором xUSSR train set. Я напрочь отказываюсь от него и предпочитаю NUTS Unrealistic Train Set или же UK Renewal Train Set. Ах да, самое главное, отключите поломки. С ними вы ничему не научитесь и уточнять почему я не буду. Вся информация, скриншоты и прочее стыряно из openttdcoop.org, но V453000 разрешил её использовать где угодно. Теперь можно переходить к основной части.

Основная идея строительства
Изображение
На этой картинке показана базовая идея того как должна выглядить сеть и как должны называться её участки. Начнём с основы всего - ML.

ML - MainLine (основная линия)
ML - основа всего. Наша цель - идеальный порядок на ML. На скриншоте показанo LL_RR, L - left (левый), R - Right (правый). Так удобно говорить об ML, к примеру: "мне надо проапгрейдить до LLL_RRR". Что значит идеальный порядок на ML? Это значит что на ML ничто не может помешать поезду, т.е. это наша приоритетная линия. Так же на ней обязателен идеальный CL (Curve Length - длина угла).
-подпункт об CL
Углы могут быть абсолютно разные:
Стандартные CL
На скриншоте есть обозначения нескольких стандартных CL и у каждого есть название. Играя с NUTS самые стандартные CL для Cargo (тип игры только с ресурсами, не пассажирами) это CL1.5 и CL3. CL не будет замедлять поезд в случае если сам поезд не длиннее CL (TL - Train length. к примеру поезд длиною в 3 клетки = TL3), т.е. для CL3 актуален TL3. Так же поезд может быть длиннее CL, но поскольку его скорость ниже порога скорости угла, то он не будет замедляться (с NUTS это сделать легко, насчёт других наборов не в курсе). Пару других видов CL. На скриншоте те что вверху слева - не замедляют, внизу справа - могут замедлять.
Возвращаемся к ML. Помимо идеальных углов есть вещь под названием светофоры (для упрощения буду называть сигн\сигны). В настройках надо сделать чтобы сигны ставились через каждую вторую клетку. Т.е. чтобы получалось так. Так же важно не допускать разрывов. Между сигналами может быть одна пустая клетка, если есть 2 или больше то это разрыв. Так выглядят разрывы с другими сигнами. Навернека будет ситуация когда просто понадобиться поставить мост или тоннель (не обязательно на ML), то всегда надо использовать двойные тоннели\мосты. Но многие допускают ошибку под названием "рассинхронизация" (для упрощения просто синк.). Когда такое случается то получается что одному поезду прийдётся проехать на 1 клетку больше чем следующему, но это ML и сзади есть куча других поездов, в итоге они будут останавливать друг друга. Стройте синхронизированные двойные мосты\тонелли без лишних единиц рельс и поезда будут рады. Есть ещё такая вещь как терраформирование (изминение ландшафта). Есть 3 типа терраформирования: 1. слабый; 2. средний; 3. очень сильный. Для прокладки ML позволяется использовать не больше среднего. Очень сильный терраформ можно использовать только для строительства станций, но и это слабо одобряется. Давайте следить за эстетикой карты.
SL - SideLine (второстепенная линия)
Это самая лёгкая часть строительства. SL - линия у которой низкий приоритет, на ней идёт погрузка ресурсов для вывоза на заводы\фабрики итд. На SL так же следует следить за CL. Терраформ на SL обычо бывает слабым или средним. Станции только погрузочные с использованием overflow (здесь и вступает та консольная опция что я писал в начале). Но об overflow и станциях я буду говорить в следующей статье. Итак, у нас есть ML и SL. Для того чтобы присоединить SL к ML используются развязки которые называются SLH.
SLH - SideLineHub (в общем развязка типа SL > ML)
Здесь настал момент рассказать немного о приоритете (прио. для упрощения). Это фишка с пресигналами которая даёт приоритет одной линие над другой. Если поезд из ML оказывается в точке приоритета, то переход из SL на ML закрывается для ожидания свободного пути. Всё что от вас требуется - понимание всех типов сигналов (об этом я говорить не стану, в интернете есть куча ссылок и вики о всех сигнах). Вот банально так присоединяется SL к ML (на скрине TL5). Как видно на скриншоте есть сигналы где абсолютно отсутствуют разрывы, это связанно с тем что это место где поезд будет ожидать пути (Waiting Base - WB в будущем). Для того чтобы построить SLH просто надо вспомнить всё о чём я говорил ранее: CL, учитывать TL% в WB, двойные мосты\тоннели, прио. Самый стандартныйSLH для L_R, SLH для LL_RR (прошу прощение, на втором скрине на двойных мостах отсутствуют сигналы, прокол :roll: ). Ничего сложного, всё просто.

Продолжение будет посвящено в основном BBH. В основном все примеры расчитаны на TL3.

BBH - BackBone Hub (развязка в которой берёт участие только ML)
Изображение
Грубо говоря почти все виды BBH берут начало из скриншота выше. Всё остальное является апгрейдом и модификациями. Но в основном все игроки OpenTTD уделяют очень многозначимой части любой развязки, в том числе и BBH. Эту часть развязки называют Merger (слияние линий).
- подпункт Merger
Итак, предположим что у нас есть 4 входные линии и 2 выходные, т.е. 4>2 или 2+2=2.
Изображение
Среднестатестический игрок сделает merger без выбора (no choise).
Изображение
Как не странно это плохой выбор. Я покажу тебе несколько вариаций Merger'ов, в дальнейшем ты сам сможешь находить новые вариации. Итак, какие же есть Merger'ы?
Начнём с того что уже прошли, т.е. с SLH. Стиль merger'а на SLH соответствует тому что ML приоритетная линия в отличае от SL.
Изображение
На скриншоте линие D, которая является SL предлагается выбор на одну из линий ML (A,B,C) и везде расставлены приоритеты. Хочу обратить твоё внимание на то, что WB (waiting base) отмечен затемнёнными рельсами. В любом merger'e очен важно следить за WB, 80% игроков упускают сам факт существования WB или просто игнорирую его, считая малозначимым.
Изображение
Так же для WB очень хорошо подходят мосты или тонелли, главное не бояться немного подвинуть ML. Да, ML является приоритетной линией, но если мы её просто подвинем ради Merger'а то ничего страшного не случится.
Изображение
Стиль SLH ясен и прост, всё что требуется - хорошо укомплектовать в зависимости от CL и TL. Это был самый банальный пример, дальше - лучше =) Возвращаемся к стандартным Merger'ам.
Inner to Outer (внутренние к внешним)
Изображение
Здесь показан пример пример 3>2 где внутренней линие даётся выбор, такой merger как на примере обычно является временным, после чего линия полностью апгрейдится до LLL_RRR, но не смотря на это, другие вариации Inner to Outer часто используются как постоянные.
Другие вариации Inner to Outer
Изображение
Хочу дать комментарий насчёт WB, В данном случае надо крайне осторожно расставлять сигналы в WB. Дело в том что в запасе есть одна лишняя клетка после WB перед выходом из Merger. Продолжаем
Изображение
Изображение
Выше Inner to Outer с созданием ещё одной линии.
Изображение
Немного PBS :D Но я не рекомендую злоупортеблять PBS.
Надеюсь с Merger'ами всё более-менее ясно. Теперь можно возвращаться к основной теме - BBH. Я затронул немного тему merger'ов, так-как они играют большую роль в BBH. Дело в том что на BBH важна хорошая балансировка линий, а задание merger'ов - максимально сбалансировать их. Можно приступить к созданию BBH. Пример будет показан на LL_RR для наглядности, так как L_R слишком банально. Итак, у нас есть LL_RR. Сначала делаем пересечение над основной частью ML. Пересечение называется crossover'ом, к примеру на скрине видно как пересекаются линии A и B. После чего подключаем merger'ами выходы. В конце финальным штрихом расставляем приоритеты. Это самый банальный и простой BBH. Разнообразие огромное.
Можно переходить к MSH.

MSH - MainStation Hub (развязка для линии которая ведёт к фабрике\заводу разгрузки ресурсов\погрузке товаров)
MSH отличается от BBH тем, что они в основном используют merger'ы типа All to All. Приведу несколько примеров таких Merger'ов.
Изображение
Изображение
Изображение
У таких Merger'ов у всех линий одинаковый приоритет. Во всём остальном MSH напоминает BBH.

Станции

Теперь ты знаешь что такое SLH, BBH, MSH, CL, SL, ML, WB, merger, prio и с чем это всё едят. Так же немного о синхронизации и сигналлизации тоже взяли :) Осталось только закрепить всё это станциями.
Изображение
Но перед тем как начать тему о станциях, хотелось бы вернуться к той cfg'шной команде значение которой ты ставил на true (или 1 вместо 0). Вот она: "yapf.rail_firstred_twoway_eol = true". Эта комманда влияет на алгоритм поиска пути благодаря двусторонним сигналам. Не важно какого типа сигнал, это может как обычный блок, так и пре-сигнал.
Изображение
А теперь о том как работает этот алгоритм. Если двойной сигнал горит красным, то он направит поезд по свободному пути, даже если он ведёт его в тупик :!: Это наглядно видно на скриншоте ниже
[img]http://cs616825.vk.me/v616825800/95c[img]http://wiki.openttdcoop.org/images/0/06/Pftrap.png[/img]9/LFcAEZBCMQA.jpg[/img]
Поезд едет в тупик без колебаний, это то что нам и нужно. Обязательным условием работы данного сигнала является возможность выбора, т.е. минимум выбор между двумя сторонами (к примеру на скриншоте 3). Ещё одна особенность: если как на скриншоте есть два двухсторонних и один обычный блок. Представим ситуацию что двусторонние и обычный горят красным, то алгоритм пути будет направлять поезда к обычному блоку (profit :) ). Такую фишку можно проводить и на ML.
Изображение
Это так сказать "ловушка" на которую попадает поезд. Он никогда не сможет поехать по этой линие, она для него просто как патч нахождения пути :) Как это использовать? Сейчас покажем :D
Изображение
Видно как благодаря двусторонним сигналам удалось найти место для разворота в экстренной нехватке места для CL2
(Скрин из FF Game #3, данный участок можно найти на MSH 02)
iTKerry FF game #3.sav
(688.45 Кб) Скачиваний: 394

Так же эта функция идеальна для SRNW (Self Regulating Network) но об этом я врятли буду расказывать.
Изображение
Изображение
Итак, как работает алгоритм двусторонних сигналов теперь ясно. Можно переходить к станциям.

Начинать пожалуй стану с основ. У станций есть вход и выход. Так же есть станции вход-выход. В придачу к этому есть станции погрузочные, разгрузочные, а есть и комбо (К примеру пассажиры (PAX)). Начинать я буду с разгрузочных. Для такого типа станций важен хороший вход, с выходом дела легче. Самый обыкновенный Ro-Ro это отец всех станций :D
Изображение
Так же для станций тоже важна синхронизация и WB
Изображение
С повышением кол-ва линий, к примеру из L_R в LL_RR и далее LL+n_RR_+n появляется такая вещь как "Х".
Изображение
Х - хорошая вещь когда дело касается станций, в любых других местах, а тем более на ML его ставить нельзя. На скриншоте показаны Х'ы для LL_RR и LLL_RRR. В добавок на станцие есть запасная влетка перед сигналами, это делается для того чтобы при заезде на станцию, поезд не оставлял блок (отмеченный жёлтым кругом) закрытым. Я не советую всегда на станциях ставить PBS, дело в том что не всегда надо чтобы поезда максимально быстро заежжали и покидали станцию, это может вызвать проблемы на других участках сети. К примеру станция свободна, но на MSH заторы и казалось бы их быть не должно, порой поезда могут постоять пару секунд (1-5) на WB и это совсем не страшно, главное не переусердствовать ибо тогда прийдётся апгрейдить и пристраивать лишние платформы. Перед X у нас есть "вход" на станцию. Как правило он должен быть сбалансированным, этого мы можем добиться с помощью merger'а после которого пойдёт небольшой Choise Entry (выборочный вход). Как строить Merger ты уже знаешь, а вот Вход (entry) другое дело.
Здесь важно чтобы с каждой линии поезд мог попасть на любой блок станции, а также надо внимательно следить за CL и WB.
Изображение
Входы они такие... Разнообразие очень большое. Самый стандартный вход я показал, на другие сину ссылку в конце статьи (те кто не понимает английский, вы уж меня простите).
Как я и говорил, с выходом всё просто. Тут работает обычный принцип Merger'a All-to-All.
Изображение
С увеличением кол-ва путей, увеличивается и сам merger соответственно. Самая лёгкая чать - разгрузочные станции. Теперь поговорим о загрузочных.

На загрузочных станциях в любом случае должен стоять overflow (двусторонние сигналы которые ведут поезд в тупик). Начну со станций для SLH.
Изображение
После попадания в тупик, поезд заежжает в депо. Как каждый уже знает (я надеюсь знает) поезд обладает свойствами того светофора, который стоит в его блоке (но PBS приоритетный и игнорирует другие, так-что не используйте PBS где ненадо). Таким образом если станция полная, то поезд будет ожидать в депо.
Изображение
Аналогичный вариант, но теперь с использованием приоритета.
Изображение
Это улучшенный вариант. Через тупик (С1) работает prio (С5, С4) который передаёт красный сигнал поезду в WB после выхода из депо (С3). При выезде из депо стоит выездной пре-сигн (С2). Так же присутствует экстренный выходной патч (С6) его делают тогда, когда игра ещё на стадие строительства и поезда во время апгрейдов линий погут поехать не туда куда надо.
Изображение
Здесь тоже самое, только в придачу ещё два WB. Хорошая станция =)
Изображение
Аналогичная станция, но только с входом.
С погрузочными станциями я пожалуй закончу. Если нужны станции побольше и на большее кол-тво линий, принцип тот же. Разнообразий с overflow очень много, многие ещё не открыты, постоянные инновации.
Что касается комбо-станций (погрузка+разгрузка(пассажирские)) то они работают как разгрузочные, но требуют в 2 раза больше платформ, так-как использовать overflow там нельзя из-за факта того что не исключается разгрузка (разгрузочные станции никогда не использовали overflow и в ближайшем будущем тоже не собираются :!: )
Как бонус кину ещё парочку скриншотов с overflow станциями, может кого-то надохнут на креатив :D
Скрины: клик, клик, клик, spagetti.
Ссылка на станции.
GL
Изображение
Список недругов: ziond, Ivan-r, Smoky555 (формально).
Аватара пользователя
itkerry
Машинист
Машинист
 
Сообщения: 50
Зарегистрирован: Чт дек 13, 2012 09:08

Re: Основы строительства единой сети от iTKerry

Сообщение Ivan-r » Пт май 09, 2014 19:01

Неплохо :)
Всё начинается с 200`000 $
Изображение
Изображение
Изображение
Изображение
Аватара пользователя
Ivan-r
Директор
Директор
 
Сообщения: 432
Зарегистрирован: Пн май 30, 2011 15:58
Откуда: МО

BBH

Сообщение itkerry » Пт май 09, 2014 20:34

В добавок хочу опубликовать видео.
Строительство BBH LL_RR с TL2 и CL 2.
BBH в конце игры.
Изображение
Список недругов: ziond, Ivan-r, Smoky555 (формально).
Аватара пользователя
itkerry
Машинист
Машинист
 
Сообщения: 50
Зарегистрирован: Чт дек 13, 2012 09:08

Re: Основы строительства единой сети от iTKerry

Сообщение Smoky555 » Пн май 12, 2014 08:35

Не надо плодить сущности.
Тема закрыта.
Входи тихо, проси мало, говори четко, уходи быстро.
Изображение
Изображение
У вас проблемы с русским в игре?
Изображение
Аватара пользователя
Smoky555
Почетный тайкунер
Почетный тайкунер
 
Сообщения: 1413
Зарегистрирован: Пт фев 25, 2005 08:33
Откуда: Волгоград


Вернуться в Общие вопросы по OpenTTD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

cron