Управление движением (обсуждаем перспективу)

Вопросы разработки OpenTTD, обсуждение новых сборок и патчей, решение проблем новых версий.

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

Сообщение vljak » Чт июн 21, 2007 05:35

По каким критериям будут оцениваться идеи? Бред или не бред. Возможно среди всякого бреда программисты и найдут что-то интересное, и что можно будет вполне реализовать.


Можно предположить следующие:
Официальные программисты "зарезали" PBS, предпочтя ему самодельный YAPF, и вряд ли уступят его кому-либо другому, поэтому про "навеску" на светофоры можно легко забыть.
НО!
Есть простые объекты, которым мы можем привесить дополнительные функции и опубликовать в транке, чтобы офразбы начали прикручивать его к основной ветке: вспомним, что в OpenTTD 5 перешло много идей от MiniIn.
1. У нас есть "Точки пути" - которые имеют соответствующую графику, что можно в каждую такую точку "посадить" смотрителя. Соответственно, тип и поведение точки может зависеть от ближайшего окружения (различные комбинации светофоров на прилегающей рельсе).
2. Есть депо - что мы уже вроде успешно обкатали. И такая вещь ну крайне важна в условиях ограниченного места (город или дамба к морской нефтяной вышке)
3. Можно ввести специальные знаки или сигналы в специалном наборе графики (см. http://www.tt-forums.net/viewtopic.php?t=30118)

Главное чем надо руководствоваться: народ в общей массе все равно будет играть в официальные сборки, поэтому из всех идей надо последовательно пробиваться в официальную ночнушку, публикуя транк.
Как предложение, предлагаю Neko, Smoky как реальным гуру создать на официальном сервере транк (как сделал в свое время MiniIn) и начать там публиковаться. Как человек, довольно близко стоящий к технологии производства ПО, знаю что легче всего вносить отделные процедуры, которыми максимально органично можно дополнять исходные тексты.
Вывоз из страны высококлассного программиста есть угроза ее национальной безопасности
vljak
Машинист
Машинист
 
Сообщения: 56
Зарегистрирован: Пт дек 08, 2006 05:33

Сообщение Neko » Чт июн 21, 2007 19:37

КамАЗ писал(а):...Если ещё будут вопросы - задавайте. Что знаю, расскажу)

Давай наложим действия Диспетчера из реальной жизни на наши игровые реалии.
У нас поездов на порядок больше.
Если мой игрушечный Диспетчер будет пропускать вперёд более скоростные, а значит, и более приоритетные поезда, то может образоваться ситуация, когда придерживаемый Диспетчером тихоходный товарняк с углём, нефтью или лесом никогда в жизни не покинет отстойника.
У меня в игре такие ситуации будут возникать постоянно. Боюсь, что и у других тоже.
Более того, ничего разумного по разруливанию такой ситуации в череп не приходит.
Если мы имеем три скоростных диапазона, то первое, что приходит на разум - это делать шестирельсовую магистраль. Тогда каждая скорость имеет строго свою рельсу и проблем не будет.
Но шесть рельсов - это уже явный перебор.
Я уже давно мучаюсь с вопросом, а сколько минимально рельсов надо и какой алгоритм отправки поездов применить, чтобы все три диапазона скоростей могли нормально обслуживаться.
Может, скажем, через каждые три-четыре скоростняка и обычного принудительно отправлять тихохода.
Это первое, что придумывается, и не кажется мне самым лучшим вариантом.
Возможно, что сначала надо договориться об оптимальном количестве рельсов, а на них придумывать алгоритьм диспетчирования.

Какие есть идеи по рельсам и порядку следования поездов?
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Neko » Чт июн 21, 2007 19:42

2Tanatos
Отвечая на твои первые посты скажу, что всё тобой предложенное нам понадобиться, даже и не хватит.
Но я столкнулся с проблемой, которую, возможно, ты знаешь как решить.
Когда мне требовался тот или иной дополнительный управляющий юнит, я упирался в стену.
Готовых grf у меня нету, а делать их я не умею.
Это стало для меня неразрешимой проблемой - приходилось брать только существующие управляющие юниты и изголяться в программировании до потери сознательности, чтобы суметь заставить их работать для совершенно чуждых им дел.
Если мы сразу не решим проблему с новыми grf, то боюсь, что весь этот разговор может так и остаться разговором.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение КамАЗ » Пт июн 22, 2007 04:57

2Neko

На самом деле в жизни грузовики тоже ездят с очень маленькой скоростью. Когда меня катали по маршруту Краснодар-1 – Краснодар-Сортировочная, то мы ехали 6 часов. Поверь мне, даже если это расстояние пройти пешком по рельсам, то 6 часов никак не получится. Говорят, что грузовик может стабильно простоять даже 12 часов, пропуская другие поезда. Суровая правда жизни – грузовые поезда движутся в среднем со скоростью 2 км\ч. Но в жизни существует расписание. Пассажирские поезда не всё время ездят между станциями, а останавливаются на них на какое-то время. Бывают поезда утренние, дневные и вечерние. За счёт этого появляются окна. Грузовые поезда как раз и ездят в этих окнах в расписании. Ещё в жизни есть “ночь”. Ночью интенсивность движения пассажирских поездов гораздо меньше, если даже не нулевая и ночью полно свободного времени, для проезда грузовиков. Я, конечно, понимаю, что в ОТТД сложно не то, чтобы сделать просто смену времени, но тем более, чтобы от этого времени зависел приток пассажиров на станцию. Одними только рельсами ты не отделаешься, тем более что в жизни я, например, нигде не видел больше, чем две колеи. Обычно хватает одной или двух. В игре я думаю, можно было бы сделать, чтобы пассажирские поезда останавливались на какое время на станции. Для каждой станции устанавливать это время отдельно. В начале игры это может быть даже очень актуально. Бывает, что приходит поезд на станцию, забирает…ну 100 пассажиров (это не предел для поезда) и сразу же уезжает. После его отъезда сразу же появляется ещё пассажиры. Заставлять пассажирский поезд ждать полной загрузки глупо, потому, что в маленьких городах это ожидание может продлиться месяцы. Конечно потом, когда города уже станут большими, то останавливать поезда на станции будет лишним, потому, что на станциях изначально будет пассажиров больше, чем сможет забрать поезд на момент прибытия, и пассажиры зачастую появляются на станции в кол-ве примерно в половину вместительности самого большого пассажирского поезда. Вот тогда я уже не знаю, что делать. Но, на мой взгляд, увеличивать количество путей это не выход. А грузовики в жизни ездят примерно с одинаковой скоростью (какой? я бы тебе дал ссылку на моё сообщение, как раз про это, но, к сожалению, не знаю, как вы делаете ссылки на какой-то один конкретный пост). Поэтому двигаться они будут либо в порядке живой очереди, либо конечно вперёд пропустят поезд с более дорогим товаром.
Вот такие пироги. Нужна ночь и подобие на расписание (ИМХО).
Изображение
Аватара пользователя
КамАЗ
Диспетчер
Диспетчер
 
Сообщения: 189
Зарегистрирован: Вт июл 25, 2006 23:39
Откуда: Краснодар

Сообщение vljak » Пт июн 22, 2007 08:23

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

Предлагаю относительно просто решение.
Делаем 3-х или 4-х пктевую дорогу ( 3 релсы из соображений того что порожняки, едущие за грузом гораздо менее приоритетны)
Между 2 рельсями делаем связки, чтобы более скоростной поезд попросту обгонял по отводку медленный.
Как примерно видно, даже светофоры тут нужны обычные...
Единственное НО... на начальном этапе игры разницы в скоростях не такие большие чтобы реализовать "обгон". И может тогда понадобится доделка YAPF... :(
Вывоз из страны высококлассного программиста есть угроза ее национальной безопасности
vljak
Машинист
Машинист
 
Сообщения: 56
Зарегистрирован: Пт дек 08, 2006 05:33

Сообщение КамАЗ » Пт июн 22, 2007 09:13

Ну и нафига тогда так мало рельсов? Предлогаю вообще для каждого поезда делать свой путь. А чего? Никаких проблем не будет, и сфетофры никакие не нужны, никогда поезд не заблудится, не столкнётся с другим, всегда будет свободна его платформа на станции...кароче масса приимуществ!
Изображение
Аватара пользователя
КамАЗ
Диспетчер
Диспетчер
 
Сообщения: 189
Зарегистрирован: Вт июл 25, 2006 23:39
Откуда: Краснодар

Сообщение Tanatos » Пт июн 22, 2007 14:20

О ситуации с приоритетами:
1) Если мы рассматриваем приоритет как абсолютное значение, то нам нужно иметь несколько путей для выезда со станции и четкую организацию каким поездам на какие платформы прибывать. Прибытие поездов организовываем таким образом, что бы при выезде маршруты поездов с разными приоритетами не пересекались (по возможности, но очень желательно). Далее управление выезда со станции организовывается паралельно. Но это не избавит от проблем на очень компактных станциях, где нет возможности развести составы на разные пути.
2) Использовать приоритеты лишь как ориентир. Как было описанно выше или простым чередованием 3 приоритетных и 1 товарный (это должно быть настраиваемым, причем ИМХО для станции а не для игры) или немного иначе: пропустил один поезд, приоритет +1, а дальше снова на основании приоритетов. Проехал развязку приоритет в норму. (только как бы не получилось затыка на двух развязках подряд)

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

Маленькая станция - все поезда на двух платформах и разводи их как хочешь.
Большая станция - пассажирские на лево, грузовые на право, а там уже разруливать будут на путях до и после станции.

Мало места? Будьте добры строить две отдельные станции!!! Вот тут-то нужен грамотный трансфер, так-как транспортировку грузов между потребителем и станцией, логично осуществлять грузовиками. И это должно быть выгодно. Если не сточки зрения чистой прибыли (так как это всетаки дополнительные расходы), то однозначно с точки зрения вообще возможности заработать на этой перевозке.

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

P.S.
По поводу количества путей. Здесь сказывается особенность масштаба игры. Где в жизни развязка, и перегон между станциями, у нас в игре эта самая развязка растягивается между двумя с танциями т получается что уже не развязка и перегон, а перекресток и два перегона. При таком масштабе невозможно организовать движение без большого кол-ва паралельных перегонов. Это уже надо регулировать экономическими параметрами. Например Одно добывающее предприятие (или пять рядом) и пять потребителей разбросанных по карте. Потребление уменьшаем, выработку увеличиваем. Получаем большую станцию на погрузке сырья (хоть 10 платформ) перегоны, которые можно использовать совместно с другими ветками и немного меньшее кол-во поездов. Но это уже отдельная тема.

Сложно ожидать от карты рандом удобной инфраструктуры :).
Tanatos
Машинист
Машинист
 
Сообщения: 35
Зарегистрирован: Ср окт 04, 2006 09:16

Сообщение Neko » Пт июн 22, 2007 19:55

У меня большая просьба к участникам обсуждения.
Эта тема создана и предназначена для обсуждения УПРАВЛЯЮЩИХ ЮНИТОВ.
Если мы в этой теме всё грамотно обсудим и придём до всех устраивающих решений, то это будет теоретической основой для разработки множества патчей на достаточно длительный период.
А вопрос про скорости вагонов, который я сам непроизвольно и инициировал этой теме - это только частное использование этих теоретических выкладок.
Я не зря сразу же параллельно завёл отдельную тему про скорости вагонов и количество рельсов - это я специально сделал, чтобы отделить обсуждение теории от обсуждения практического применения частного случая этой теории.
Давайте все вопросы, связанные со скоростью вагонов и скока рельсов надо под это обсуждать в той теме, а здесь разговаривать про общие потребности и надобности.
Как только при обсуждении этой теоретической темы у нас возникнет потребность поразговаривать про какое-то новое практическое применение, мы сразу же будем создавать новую тему именно под это применение.
Тогда мы не замесим в одну кучу вкуснейших мух с малосъедобными котлетами. Лады?..
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Tanatos » Пт июн 22, 2007 20:24

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

Светофоры выраждаются до простых. Все что выходит за рамки это "Диспетчер" управляющий светофорами.

Знаки могут носить как рекомендационный характер, так и обязывающий, в любом случае это статические объекты, обрабатываемые алгоритмом поиска пути.
В принципе про знаки можно и вовсе забыть, так как "Диспетчер" способен их заменить на 100%, хотя это и будет использование золотого слитка для забивания гвоздей - но ведь забивает :).
Tanatos
Машинист
Машинист
 
Сообщения: 35
Зарегистрирован: Ср окт 04, 2006 09:16

Сообщение Tanatos » Пт июн 22, 2007 20:41

Диспетчер

Как вариант обозначения: точка пути и ограниченная светофорами схема путей.

Вариант работы: поезд подъезжая к светофору под контролем "Диспетчера" сообщает ему "я тута жду проезда, запишите меня в очередь". Диспетчер соответственно принимает его в очередь по данному вьезду. Будет уместным добавить проверку: если впереди светофор красный и за ним стоит поезд в очереди "Диспетчера", записаться в эту самую очередь. Таким образом "Диспетчер" получет информацию о том сколько поездов на каком вьезде у него находится (это к вопросу о разруливании по приоритету и т.д.). Теперь надо придумать способ управления. В идеале это некое скриптовое описание. В начале можно иметь несколько предопределенных скриптов (даже зашитых в код). Позволив пользователю лишь выбирать один из скриптов и настраивать его параметры. В дальнейшем дописать скриптовый движок с возможностью сохранять скрипты. Какие нужны команды?
"Диспетчер" однозначно должен разбираться в текущей задаче поезда в соответствии с Маршрутным листом. Например разобраться, толи поезд едет транзитом (случай пересечения в поле), толи должен остановиться на одной из платформ / депо / запасном пути, толи надо подогнать еще пару загруженных вагонов (это на перспективу развития).

"Диспетчер" должен управлять каждым поездом назначая по каким клеткам он должен двигаться. Разрешение на движение выдается включением соответствующего светофора. Алгоритм поиска пути здесь отключается полностью - его задача получить от "Диспетчера" координаты следующей клетки, проверить состояние светофора и обеспечить движение по фиксированному маршруту. Надо только научить алгоритм поиска пути правильно оценивать проезд через территорию подконтрольную "Диспетчеру".
Tanatos
Машинист
Машинист
 
Сообщения: 35
Зарегистрирован: Ср окт 04, 2006 09:16

Сообщение Tanatos » Пт июн 22, 2007 21:41

Мне пока на ум пришел только один вариант скрипта. Набор строчек содержащих фильтр и действие.

Фильтр задает однозначный выбор поезда (один поез не может попасть сразу в два фильтра). Выбор осуществляется по критериям: местоположение, направление, тип состава, задача в Маршрутном листе (по умолчанию - транзит), выбор по признаку назначаемому пользователем (см действие), ... Что еще?

Действие подразумевает:
- перемещение состава к заданной точке (заезд в депо, подача на платформу, подача к выезду).
- подача маневрового локомотива (никогда не покидает блока подконтрольного Диспетчеру и напрямую управляется им)
- сцепление / отцепление вагонов по заданому условию (здесь возникает вопрос: будем гонять вагоны туда-сюда дабы добраться до нужного или просто выдернем все что нужно и оттащим за одну ходку?)
Ко всем действиям паралельно можно добавить еще одно: назначить пользовательский признак (например, "до стыковки" или "после стыковки").

Можно будет создать мастер для добавления новых записей и редактирования существующих. Отдельно можно выделить закладку с настройками (в том числе и используемыми в коде при обработке скрипта).

Пока никак не могу вписать этот скрипт выполнение паралельных действий. Если паралельность будет описываться пользователем - то как и в каком виде??? А если автоматически - то каким образом будут отбираться записи для паралельного выполнения???

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

Чуствую, что описанный вариант со скриптом не лучший, но пока ничего другого не придумал...
Tanatos
Машинист
Машинист
 
Сообщения: 35
Зарегистрирован: Ср окт 04, 2006 09:16

Соображения по разруливанию.

Сообщение Andrey_SPb » Пт июн 22, 2007 23:26

Вариант:
1. Обозначить территорию контроля диспетчеров.
2. Обозначить входы-выходы с территории.
3. В маршрутных листах ставить эти территории.
4. В территории обязательно должно быть депо для обслуживания.
5. В территории обязательно должен быть тупик для отстоя поездов.
6. У поездов должны быть приоритеты, пускай 0-1-2-3 (для простоты тот круче, у кого больше приоритет).

Один диспетчер передает другому паровоз и диспетчер СРАЗУ ЖЕ определяет, не надо ли тому в депо. Потом определяет, не надо ли выполнить какую-нибудь операцию в маршрутном листе и куда потом передавать состав.

1. Разруливаются приоритетные маршруты по схеме:
1.2 Если надо в депо, то поезд загоняется в депо.
1.3 Если не надо делать какие-либо действия, то пролетом к другому диспетчеру.
1.4 Если надо грузиться (разгружаться, проезжать станцию без остановки) и платформа свободна, делаем дело.
1.5 Если нет, то в тупик! Ждать!
2. Разруливаются <приоритетные-1> маршруты по схеме:
2.1 Проверяются приоритетные маршруты. Если с ними есть, что делать, то тогда разруливаются они, если нет – то далее по тексту.

P.S.А может назначать приоритеты по номеру состава, а то вон он какой бесхозный!
Andrey_SPb
Машинист
Машинист
 
Сообщения: 41
Зарегистрирован: Пт дек 15, 2006 23:38
Откуда: Санкт-Петербург

Сообщение Neko » Сб июн 23, 2007 06:39

Tanatos писал(а):...В принципе про знаки можно и вовсе забыть, так как "Диспетчер" способен...

А я хотел ЗНАКИ использовать для определения "Михалыча в промежности". Мне кажется, что это самый простой способ, исходя из движка игры, если, конечно, не возникнут других предложений.

Фонари разные тоже нужны.
Я использую один бит отличия семафора от светофора в трёхколейном Михалыче. Но там я использую только двунаправленный семафор.
А однонаправленный семафор я зарезервировл для Водяного, которого никогда уже не доделаю.
Так шта, все штатные фонари я в своих патчах уже задействовал.
А для дальнейших разработок нам наверняка понадобится фонарей многа всяких разных.
Я же не зря писал, что вся проблема в написании новых патчей - это отсутствие графики, а это СТЕНА при отсутствии Мастера По Рисованию.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Neko » Сб июн 23, 2007 07:40

КамАЗ писал(а):...Вот такие пироги...

Знаешь, а ты здорово всё рассказал и прояснил ситуацию про реальную жизнь.
Я не знаю, как это будет воплощатся в Опене, но, безусловно, это влило новые свежие мысли в мои рассуждения.
Скорее всего, две колеи для Опена будет слишком маловато - это же игрушка, а не реальная жизнь, но стремиться обойтись минимумом в три колеи на всё про всё - думаю, что это вполне приличная цель, чтобы обзаботиться достижением оной.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Neko » Сб июн 23, 2007 07:50

КамАЗ писал(а):Ну и нафига тогда так мало рельсов!...

Я же писал, что для наших трёх диапазонов скоростой для полного счастья вполне достаточно ШЕСТИ рельсов, чтобы туда сюда и без проблем.
Но ответь мне на вопрос. Как ты будешь делать развязку шестиколейки с шестиколейкой. Без проблем это можно сделать только при помощи Близнецов. А применяя только обычные средства - это ты употеешь.
Ты лучше нарисуй такую развязку и сюда картинку выложи, а потом задай себе вопрос - а будешь ли ты на каждом шагу в своей игре делать такие развязки, и сколько времени у тебя будет уходить на построение каждой такой развязки. И сколько это места на карте будет занимать. Особенно на полярной горной карте я бы хотел посмотреть твою картинку.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Пред.След.

Вернуться в Разработка OpenTTD

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

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