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

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

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

Сообщение КамАЗ » Сб июн 23, 2007 10:38

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

Сообщение Ghostcar » Пн июн 25, 2007 06:05

Касательно приоритетов - в последних ночнушках появилась возможность группировать технику. Может быть привязаться к этим группам, либо динамически подстраиваясь под их количество и качество (тогда приоритет выставляется для каждой группы), либо заведя несколько предопределенных групп?

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

З.Ы. немнго сумбурно и не закончено, но пока мысль прет... вообщем вот что надумал.
З.Ы.Ы. А есть ли возможность прикрутить строительство по шаблонам, например развязок? Для начинающих - огромное удобство, для профи - сокращение времени на строительство.
Ghostcar
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 11
Зарегистрирован: Пн май 07, 2007 10:53

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

Сообщение Anthrax » Сб июн 30, 2007 17:19

Обозначить территорию контроля диспетчеров.


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

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

ИМХО.
Будьте реалистами, требуйте невозможного!
Аватара пользователя
Anthrax
Диспетчер
Диспетчер
 
Сообщения: 161
Зарегистрирован: Сб июн 30, 2007 17:04
Откуда: Москва

Сообщение Tanatos » Пн июл 02, 2007 10:14

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

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

Сообщение Tanatos » Вт июл 03, 2007 15:32

Давайте попробуем взглянуть на тотже вопрос с другой стороны ... А какие задачи и проблемы мы хотим разруливать.

- Подача составов на платформу для погрузки по оптимальному алгоритму (чтобы место не занимать когда грузить нечего, чтобы пропускать в перед приоритетные поезда, ... Что еще?)
- Управление погрузкой (настройка чего и сколько грузить в зависимости от параметров ... Каких?)
- Управление отправлением поездов с учетом приоритетов
- Организация паралельного дивежия на развязках на вьезде и выезде со станции (аля PBS)
- Возможность при выборе пути оставить за поездом право выбора оптимального маршрута (будь то просто выбор зеленого или YAPF на основе загруженности не суть важно - работает поиск пути)
- Возможность обязать поезд ехать по заданному маршруту (что бы не сворачивал куда не надо)
- Возможность запретить поезду выезжать на пересечение с котрого он не может уехать (желательно с учетом длины поезда и дальнейшего его движения - хотя на большом кол-ве маленьких пересечений длинный поезд вряд ли вообще сможет проехать тогда)
- Возможность управлять выбором альтернативного пути в зависимости от скорости, типа груза ... Какие мысли?
- Возможность управлять вагонами (прицепить. отцепить по условию загружен, пустой ... )
- Возможность синхронизировать движение нескольких поездов по одному маршруту (что бы они не ехали друг за другом)
- Управление посещением депо (до погрузки, после погрузки, в любое депо или только в определенные)

Какие еще есть трудности и задачи? С какими проблемами Вы сталкивались организуя свои ж/д сети?
Tanatos
Машинист
Машинист
 
Сообщения: 35
Зарегистрирован: Ср окт 04, 2006 09:16

Сообщение Pazus » Пн июл 09, 2007 15:34

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

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

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

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

Таким образом мы минимизируем сложность создания маршрутного листа и делаем акцент именно на настройку (игроком) логики обработки составов. По-моему, чем больше мы отдаем в руки автоматики тем больше игра превращается шпалостроительную и утрачивает свою изюминку, что нужно постоянно исхитряться выдумывая все более новые алгоритмы движения поездов.
Pazus
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 6
Зарегистрирован: Ср авг 16, 2006 23:02

Сообщение KubiR » Ср сен 19, 2007 00:36

vljak писал(а):3. Можно ввести специальные знаки или сигналы в специалном наборе графики (см. http://www.tt-forums.net/viewtopic.php?t=30118)

Уважаемые разработчики, объясните о чем там речь идет. Что это за маркеры? По моему бред какой-то... в том плане что не доделанный. Они пытаются Михалыча собрать или что? :roll:
Аватара пользователя
KubiR
Диспетчер
Диспетчер
 
Сообщения: 136
Зарегистрирован: Ср авг 29, 2007 17:57
Откуда: Москва

Сообщение KubiR » Ср сен 19, 2007 01:07

/пост удален/

ihim4, не, ты мну не понял... я не много о другом...
как допишу выложу полностью... :wink:
Последний раз редактировалось KubiR Ср сен 19, 2007 10:23, всего редактировалось 1 раз.
Аватара пользователя
KubiR
Диспетчер
Диспетчер
 
Сообщения: 136
Зарегистрирован: Ср авг 29, 2007 17:57
Откуда: Москва

Сообщение ihim4 » Ср сен 19, 2007 07:16

Уважаемый, KubiR!
Твоё предложение\размышление на тему управляемой клетки и всего подобного уже когда-то поднимал на форуме уважаемый автор Neko. Тебе бы на эту тему с ним пообщаться... или поискать на форуме и там отписать, где он развивал эту мысль!
Удачи! 8)
P.S. а на счет маркеров... так на мой личный взгляд - фигня это. Мне хватает с головой пресигналов. Ну а использование Михалыча и\или Близнецов просто даже не сравнимо! :wink:
Аватара пользователя
ihim4
Президент
Президент
 
Сообщения: 590
Зарегистрирован: Пн дек 05, 2005 12:02

Сообщение Sky-Clad » Пт сен 21, 2007 14:51

- Организация паралельного дивежия на развязках на вьезде и выезде со станции (аля PBS)


Вот вот, вот это бы очень хотелось :)
Аватара пользователя
Sky-Clad
Директор
Директор
 
Сообщения: 314
Зарегистрирован: Чт июн 28, 2007 18:06

Сообщение Pk » Вт сен 25, 2007 19:10

1. вернуть PBS:
Если на участке есть PBS, то игрок должен чётко прописать этот сегмент, т.к. на нём PF работает как с обычными светофорами/подрубать старый PF инструкцией IF THEN GO SUB или IN CASE GO SUB.
Игрок сам вручную (единократно) подписыват соглашение о возможных глюках.

2. Знаки. Знаки однотипны (для всех один спрайт), сверху висит ремарка (коммент к местности как над остановками/буями) с указанными ограничениями (указанным ограничением).

3. 3-х позиционные светофоры:
красный - стоп. (ближайший перегон занят)
зелёный - полная скорость (но не больше разрешённой). (обрабатываемые перегоны свободны)
жёлтый - движение на 50% мах скорости состава (20% обрабатываемых перегонов заняты)
жёлтый+красный - движение на 25% мах скорости состава (50% занято)
зелёный+красный - обязательная остановка, затем сразу движение (оставить для станций, чай не жмёт).
Условия дать прописывать самому игроку так же как и у знаков (в пространстве этого поста).

Могу составить коллажик окон настройки на тему, хотя кому интересны универсальные решения?
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Pk » Вт сен 25, 2007 20:54

И таки всё возвращается к моим базовым идеям...

Диспетчер:
поезда на участке (параметры):
срок до ремонта - RprTm - рассчёт расписания
срочность - Expr - рассчёт необх. ремонта
расписание - LstTm - для рассчёта Expr
длина - Lng - для рассчёта времени на участке
мощность локомотива - VLP - для рассчётов торможения/разгона
вероятность поломки - Rbl - для рассчёта риска остановки всей секции. (нам пох, что вы на месяц выбились из графика! В ремонт!!)
скорость - ActSpd - для расчёта времени прохождения секции
макс скорость. max spd - см. выше
заявленный тип груза - CrgTp - для сортировки
необходимость гнать - express - для регултрования ремнот/расписание
необх. ремонта - repair - - для регултрования ремнот/расписание

срок до ремонта: (простой)
если на покрытие расстояния до следующей зоны и заезда в депо времени надо больше, чем есть до след. ремонта, то (если не указано следующее) едем в депо.
пример:
IF ("расст до след зоны"+""/RptrTm>=0 AND express < 1 THEN "в депо"

Хотя можно просто вынести кнопку "HELP" куда вписать все нужные переменные (в человеческом виде).

PS: этот ваш диспетчер... прям PBS какой-то. Не зарубили бы.
PPS: наконец-то можно будет нормальные переезды сделать и настроить остановки грузовиков.
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Silicon » Сб окт 06, 2007 16:32

Тут недавно исследовал работу расписания поездов с новых сборках. В своем нынешнем виде оно уже позволяет синхронизировать парные поезда (когда 2 поезда обслуживают 1 маршрут и должны кататься в противоположных направлениях) путем утановки избыточного времени в пути (избыток времени он просто отстоит на станции).
Теперь идея. Вдобавок к расписанию в ОТТД необходим абсолютный отсчет времени, чтобы прибытие и убытие поездов привязать к определенному часу и минуте. Т.е. не просто
"Ехать ... тиков"
"Ждать на станции ... тиков"
как сейчас, а чтобы можно было задать время убытия с первой станции и остальное время рассчитывалось автоматом. Метода примерно такая (подразумевается, что поезд уже построен, маршрут назначен):
1. Используем автозаполнение расписания (кнопка "Автомат" или "Autofill"). Получаем
"Ехать ... тиков"
"Ждать на станции ... тиков"
и т.д.
2. Округляем значения в большую сторону, таким образом давая поезду запас времени на дорогу (все равно избыток времени он отстоит на станции).
3. Вводим желаемое время убытия в первой станции маршрута и прога рассчитывает остальное время прибытия-убытия и нахождения в пути в зависимости от установленного кол-ва тиков.
К этому нужно добавить, чтобы в свойствах станции отображалось расписание поездов на ней.
И что получается? Пусть на станцию в 14-00 приходит транзитный товарняк (т.е. на этой станции он ничего не грузит и не сваливает, а едет дальше), а в 14-05 приходит скорый, который стоит 3 мин. и едет дальше. При таком раскладе скорый догонит товарняк и упрется в него. Теперь мы задаем товарняку в расписании "Ждать N тиков", где N подбираем таким образом, чтобы товарняк уходил в 14-10. Товарняк послушно стоит на станции, пропускает в 14-08 скорый и в 14-10 сваливает сам. И никто никому не мешается! Не нужно никаких приоритетов и диспетчеров, все лишние поезда будут стоять на приколе на станциях! Более того, если загрузка линии маленькая, то такое расписание можно настроить таким образом, что поезд будет уходить только на пустой перегон, либо в догонку уже ушедшему поезду, а это дает возможность реализовать однопутку без "Поездового стойбища", "Лобовой атаки", "Михалыча" и "Близнецов".
Все это верно, если играть с ограничением скорости вагонов. Без оного вам никто не мешает возить нефть и уголь со скоростью >200 км/ч, но, ИМХО, это есть отстой.
Изображение
Аватара пользователя
Silicon
Диспетчер
Диспетчер
 
Сообщения: 165
Зарегистрирован: Ср авг 09, 2006 20:12
Откуда: Саров

Сообщение Pk » Сб окт 06, 2007 23:34

Своё ИМХО держи в себе, ибо это не суть и никак не влияет на твой патч.

Идея, конечно, интересная. Но нужно бы её развить:
1. Средняя скорость на участке. Поезд гонит не на всю катушку, а под расписание.
2. Авторассчёт времени к средней скорости (чтобы не вручную рассчитывать все приколы.) или средней скорости ко времени.
3. Курвиметр.
4. (желательно) система "запасного" расписания на случай нештатных ситуаций.

1-й пункт даст возможность "мягко" использовать технику.
2-й пункт облегчит жизнь при составлении расписания.
3-й пункт облегчит жизнь при составлении расписания.
4-й пункт даст возможность всему решаться самостоятельно.

Для авто так же интересный вариант.
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Silicon » Сб окт 13, 2007 07:12

Pk писал(а):1. Средняя скорость на участке. Поезд гонит не на всю катушку, а под расписание.
2. Авторассчёт времени к средней скорости (чтобы не вручную рассчитывать все приколы.) или средней скорости ко времени.
3. Курвиметр.
4. (желательно) система "запасного" расписания на случай нештатных ситуаций.

1-й пункт даст возможность "мягко" использовать технику.
2-й пункт облегчит жизнь при составлении расписания.
3-й пункт облегчит жизнь при составлении расписания.
4-й пункт даст возможность всему решаться самостоятельно.


пункт 1 - скорость ставить самому. И не после автозаполнения расписания, а до него. Это даст поезду возможность нагнать расписание за счет резерва скорости, случись чего.
п.2 - согласен, ибо автоматически следует из пункта 1.
п.3 - а что это такое?
п.4 - пожалуйста по подробнее!
Изображение
Аватара пользователя
Silicon
Диспетчер
Диспетчер
 
Сообщения: 165
Зарегистрирован: Ср авг 09, 2006 20:12
Откуда: Саров

Пред.След.

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

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

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

cron